Quantcast

Evergrowing source tracking table

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Evergrowing source tracking table

Remi Barbier
>Synopsis:      PF: Evergrowing source tracking table.
>Category:      PF
>Environment:
        System      : OpenBSD 6.1
        Details     : OpenBSD 6.1-current (GENERIC.MP) #50: Thu May  4
11:52:48 MDT 2017

[hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP

        Architecture: OpenBSD.amd64
        Machine     : amd64
>Description:
        <Expired entries in the source tracking table never get
removed. Both current and 6.1 are impacted.>
>How-To-Repeature:
        <Tested with tcp, ssh connections. Any rule tracking the sources.
As shown by pfctl -vsS and pfctl -vsi the expired entries are not
removed. pfctl -F Sources won't help.

It seems that in the move from pf.c rev 1.1018 to 1.1019, calling
pf_remove_src_node() was omitted:

RCS file: /cvs/src/sys/net/pf.c,v
retrieving revision 1.1018
retrieving revision 1.1019
diff -u -r1.1018 -r1.1019
--- src/sys/net/pf.c    2017/03/09 05:47:28     1.1018
+++ src/sys/net/pf.c    2017/03/17 17:19:16     1.1019
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pf.c,v 1.1018 2017/03/09 05:47:28 claudio Exp $ */
+/*     $OpenBSD: pf.c,v 1.1019 2017/03/17 17:19:16 mpi Exp $ */

 /*
  * Copyright (c) 2001 Daniel Hartmeier


@@ -1235,20 +1241,26 @@
 }

 void
-pf_purge_expired_src_nodes(void)
+pf_purge_expired_src_nodes(int waslocked)
 {
        struct pf_src_node              *cur, *next;
+       int                              locked = waslocked;

-       NET_ASSERT_LOCKED();
-
        for (cur = RB_MIN(pf_src_tree, &tree_src_tracking); cur; cur = next) {
        next = RB_NEXT(pf_src_tree, &tree_src_tracking, cur);

                if (cur->states == 0 && cur->expire <= time_uptime) {
-                       next = RB_NEXT(pf_src_tree, &tree_src_tracking, cur);
-                       pf_remove_src_node(cur);
+                       if (! locked) {
+                               rw_enter_write(&pf_consistency_lock);
+                               next = RB_NEXT(pf_src_tree,
+                                   &tree_src_tracking, cur);
+                               locked = 1;
+                       }
                }
        }
+
+       if (locked && !waslocked)
+               rw_exit_write(&pf_consistency_lock);
 }
>
>Fix:
        <how to correct or work around the problem, if known (multiple lines)>


dmesg:
OpenBSD 6.1-current (GENERIC.MP) #50: Thu May  4 11:52:48 MDT 2017
    [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 16033693696 (15290MB)
avail mem = 15541968896 (14821MB)
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xec470 (75 entries)
bios0: vendor Intel Corp. version "KBQ7710H.86A.0058.2015.0729.1616"
date 07/29/2015
bios0: Intel Corporation DQ77KB
acpi0 at bios0: rev 2
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP APIC FPDT TCPA MCFG HPET SSDT SSDT SSDT DMAR ASF! BGRT
acpi0: wakeup devices P0P1(S4) USB1(S3) USB2(S3) USB3(S3) USB4(S3)
USB5(S3) USB6(S3) USB7(S3) PXSX(S4) RP01(S4) PXSX(S4) RP02(S4)
PXSX(S4) RP03(S4) PXSX(S4) RP04(S4) [...]
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz, 3093.47 MHz
cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu0: 256KB 64b/line 8-way L2 cache
cpu0: TSC frequency 3093474280 Hz
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 99MHz
cpu0: mwait min=64, max=64, C-substates=0.2.1.1, IBE
cpu1 at mainbus0: apid 2 (application processor)
cpu1: Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz, 3092.99 MHz
cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu1: 256KB 64b/line 8-way L2 cache
cpu1: smt 0, core 1, package 0
cpu2 at mainbus0: apid 4 (application processor)
cpu2: Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz, 3092.99 MHz
cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu2: 256KB 64b/line 8-way L2 cache
cpu2: smt 0, core 2, package 0
cpu3 at mainbus0: apid 6 (application processor)
cpu3: Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz, 3092.99 MHz
cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu3: 256KB 64b/line 8-way L2 cache
cpu3: smt 0, core 3, package 0
cpu4 at mainbus0: apid 1 (application processor)
cpu4: Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz, 3092.99 MHz
cpu4: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu4: 256KB 64b/line 8-way L2 cache
cpu4: smt 1, core 0, package 0
cpu5 at mainbus0: apid 3 (application processor)
cpu5: Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz, 3092.99 MHz
cpu5: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu5: 256KB 64b/line 8-way L2 cache
cpu5: smt 1, core 1, package 0
cpu6 at mainbus0: apid 5 (application processor)
cpu6: Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz, 3092.99 MHz
cpu6: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu6: 256KB 64b/line 8-way L2 cache
cpu6: smt 1, core 2, package 0
cpu7 at mainbus0: apid 7 (application processor)
cpu7: Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz, 3092.99 MHz
cpu7: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu7: 256KB 64b/line 8-way L2 cache
cpu7: smt 1, core 3, package 0
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins
acpimcfg0 at acpi0 addr 0xf8000000, bus 0-63
acpihpet0 at acpi0: 14318179 Hz
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus 3 (P0P1)
acpiprt2 at acpi0: bus 1 (RP01)
acpiprt3 at acpi0: bus -1 (RP02)
acpiprt4 at acpi0: bus -1 (RP03)
acpiprt5 at acpi0: bus -1 (RP04)
acpiprt6 at acpi0: bus -1 (RP05)
acpiprt7 at acpi0: bus -1 (RP06)
acpiprt8 at acpi0: bus 2 (RP07)
acpiprt9 at acpi0: bus -1 (RP08)
acpiprt10 at acpi0: bus -1 (PEG0)
acpiprt11 at acpi0: bus -1 (PEG1)
acpiprt12 at acpi0: bus -1 (PEG2)
acpiprt13 at acpi0: bus -1 (PEG3)
acpiec0 at acpi0: not present
acpicpu0 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10),
C1(1000@1 mwait.1), PSS
acpicpu1 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10),
C1(1000@1 mwait.1), PSS
acpicpu2 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10),
C1(1000@1 mwait.1), PSS
acpicpu3 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10),
C1(1000@1 mwait.1), PSS
acpicpu4 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10),
C1(1000@1 mwait.1), PSS
acpicpu5 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10),
C1(1000@1 mwait.1), PSS
acpicpu6 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10),
C1(1000@1 mwait.1), PSS
acpicpu7 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10),
C1(1000@1 mwait.1), PSS
acpipwrres0 at acpi0: FN00, resource for FAN0
acpipwrres1 at acpi0: FN01, resource for FAN1
acpipwrres2 at acpi0: FN02, resource for FAN2
acpipwrres3 at acpi0: FN03, resource for FAN3
acpipwrres4 at acpi0: FN04, resource for FAN4
acpitz0 at acpi0: critical temperature is 104 degC
acpitz1 at acpi0: critical temperature is 104 degC
"INT3F0D" at acpi0 not configured
tpm0 at acpi0: TPM_ addr 0xfed40000/0x5000: WEC WPCT200 rev 0x47
acpibtn0 at acpi0: PWRB
"PNP0C0B" at acpi0 not configured
"PNP0C0B" at acpi0 not configured
"PNP0C0B" at acpi0 not configured
"PNP0C0B" at acpi0 not configured
"PNP0C0B" at acpi0 not configured
acpivideo0 at acpi0: GFX0
acpivout0 at acpivideo0: DD02
cpu0: Enhanced SpeedStep 3093 MHz: speeds: 3101, 3100, 3000, 2900,
2800, 2700, 2600, 2500, 2300, 2200, 2100, 2000, 1900, 1800, 1700, 1600
MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel Core 3G Host" rev 0x09
inteldrm0 at pci0 dev 2 function 0 "Intel HD Graphics 4000" rev 0x09
drm0 at inteldrm0
inteldrm0: msi
inteldrm0: 1024x768, 32bpp
wsdisplay0 at inteldrm0 mux 1: console (std, vt100 emulation)
wsdisplay0: screen 1-5 added (std, vt100 emulation)
xhci0 at pci0 dev 20 function 0 "Intel 7 Series xHCI" rev 0x04: msi
usb0 at xhci0: USB revision 3.0
uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev
3.00/1.00 addr 1
"Intel 7 Series MEI" rev 0x04 at pci0 dev 22 function 0 not configured
puc0 at pci0 dev 22 function 3 "Intel 7 Series KT" rev 0x04: ports: 1 com
com4 at puc0 port 0 apic 2 int 19: ns16550a, 16 byte fifo
com4: probed fifo depth: 0 bytes
em0 at pci0 dev 25 function 0 "Intel 82579LM" rev 0x04: msi, address
4c:72:b9:26:e6:0e
ehci0 at pci0 dev 26 function 0 "Intel 7 Series USB" rev 0x04: apic 2 int 16
usb1 at ehci0: USB revision 2.0
uhub1 at usb1 configuration 1 interface 0 "Intel EHCI root hub" rev
2.00/1.00 addr 1
azalia0 at pci0 dev 27 function 0 "Intel 7 Series HD Audio" rev 0x04: msi
azalia0: codecs: Realtek/0x0892, Intel/0x2806, using Realtek/0x0892
audio0 at azalia0
ppb0 at pci0 dev 28 function 0 "Intel 7 Series PCIE" rev 0xc4: msi
pci1 at ppb0 bus 1
ppb1 at pci0 dev 28 function 6 "Intel 7 Series PCIE" rev 0xc4: msi
pci2 at ppb1 bus 2
em1 at pci2 dev 0 function 0 "Intel 82574L" rev 0x00: msi, address
4c:72:b9:26:e6:10
ehci1 at pci0 dev 29 function 0 "Intel 7 Series USB" rev 0x04: apic 2 int 23
usb2 at ehci1: USB revision 2.0
uhub2 at usb2 configuration 1 interface 0 "Intel EHCI root hub" rev
2.00/1.00 addr 1
ppb2 at pci0 dev 30 function 0 "Intel 82801BA Hub-to-PCI" rev 0xa4
pci3 at ppb2 bus 3
pcib0 at pci0 dev 31 function 0 vendor "Intel", unknown product 0x1e47 rev 0x04
ahci0 at pci0 dev 31 function 2 "Intel 7 Series AHCI" rev 0x04: msi, AHCI 1.3
ahci0: port 0: 6.0Gb/s
ahci0: port 1: 3.0Gb/s
ahci0: port 2: 1.5Gb/s
ahci0: port 5: 3.0Gb/s
scsibus1 at ahci0: 32 targets
sd0 at scsibus1 targ 0 lun 0: <ATA, SanDisk SDSSDA48, Z320> SCSI3
0/direct fixed naa.5001b444a4b34c4f
sd0: 457862MB, 512 bytes/sector, 937703088 sectors, thin
sd1 at scsibus1 targ 1 lun 0: <ATA, WDC WD7500BPKT-6, 01.0> SCSI3
0/direct fixed naa.50014ee602ed48f5
sd1: 715404MB, 512 bytes/sector, 1465149168 sectors
cd0 at scsibus1 targ 2 lun 0: <Optiarc, BD RW BD-5750H, 1.00> ATAPI
5/cdrom removable
sd2 at scsibus1 targ 5 lun 0: <ATA, Crucial_CT256M55, MU02> SCSI3
0/direct fixed naa.500a07510c065622
sd2: 244198MB, 512 bytes/sector, 500118192 sectors, thin
ichiic0 at pci0 dev 31 function 3 "Intel 7 Series SMBus" rev 0x04: apic 2 int 18
iic0 at ichiic0
spdmem0 at iic0 addr 0x50: 8GB DDR3 SDRAM PC3-12800 SO-DIMM
spdmem1 at iic0 addr 0x52: 8GB DDR3 SDRAM PC3-12800 SO-DIMM
isa0 at pcib0
isadma0 at isa0
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
wbsio0 at isa0 port 0x2e/2: NCT6776F rev 0x33
lm1 at wbsio0 port 0xa00/8: NCT6776F
vmm0 at mainbus0: VMX/EPT
efifb at mainbus0 not configured
uhub3 at uhub1 port 1 configuration 1 interface 0 "Intel Rate Matching
Hub" rev 2.00/0.00 addr 2
uhub4 at uhub2 port 1 configuration 1 interface 0 "Intel Rate Matching
Hub" rev 2.00/0.00 addr 2
uplcom0 at uhub4 port 5 configuration 1 interface 0 "Prolific
Technology Inc. USB-Serial Controller" rev 1.10/3.00 addr 3
ucom0 at uplcom0
uhidev0 at uhub4 port 6 configuration 1 interface 0 "Cherry
Mikroschalter product 0x0011" rev 2.00/1.00 addr 4
uhidev0: iclass 3/1
ukbd0 at uhidev0: 8 variable keys, 6 key codes
wskbd0 at ukbd0: console keyboard, using wsdisplay0
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
root on sd2a (230f6faf75dc616c.a) swap on sd2b dump on sd2b

usbdevs:
Controller /dev/usb0:
addr 1: super speed, self powered, config 1, xHCI root hub(0x0000),
Intel(0x8086), rev 1.00
 port 1 disabled
 port 2 disabled
 port 3 disabled
 port 4 disabled
 port 5 disabled
 port 6 disabled
 port 7 disabled
 port 8 disabled
Controller /dev/usb1:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000),
Intel(0x8086), rev 1.00
 port 1 addr 2: high speed, self powered, config 1, Rate Matching
Hub(0x0024), Intel(0x8087), rev 0.00
  port 1 powered
  port 2 powered
  port 3 powered
  port 4 powered
  port 5 powered
  port 6 powered
 port 2 powered
 port 3 powered
Controller /dev/usb2:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000),
Intel(0x8086), rev 1.00
 port 1 addr 2: high speed, self powered, config 1, Rate Matching
Hub(0x0024), Intel(0x8087), rev 0.00
  port 1 powered
  port 2 powered
  port 3 powered
  port 4 powered
  port 5 addr 3: full speed, power 100 mA, config 1, USB-Serial
Controller(0x2303), Prolific Technology Inc.(0x067b), rev 3.00
  port 6 addr 4: low speed, power 100 mA, config 1, product
0x0011(0x0011), Cherry Mikroschalter(0x046a), rev 1.00
  port 7 powered
  port 8 powered
 port 2 powered
 port 3 powered

pcidump:
Domain /dev/pci0:
 0:0:0: Intel Core 3G Host
        0x0000: Vendor ID: 8086 Product ID: 0150
        0x0004: Command: 0006 Status: 2090
        0x0008: Class: 06 Subclass: 00 Interface: 00 Revision: 09
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR empty (00000000)
        0x0014: BAR empty (00000000)
        0x0018: BAR empty (00000000)
        0x001c: BAR empty (00000000)
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 00 Line: 00 Min Gnt: 00 Max Lat: 00
        0x00e0: Capability 0x09: Vendor Specific
        0x0000: 01508086 20900006 06000009 00000000
        0x0010: 00000000 00000000 00000000 00000000
        0x0020: 00000000 00000000 00000000 20368086
        0x0030: 00000000 000000e0 00000000 00000000
        0x0040: fed19001 00000000 fed10001 00000000
        0x0050: 00000289 00000011 df900007 9f000001
        0x0060: f8000005 00000000 fed18001 00000000
        0x0070: fe000000 00000003 fe000c00 0000007f
        0x0080: 01111110 00111100 0000001a 00000000
        0x0090: fe000001 00000003 1e500001 00000004
        0x00a0: 00000001 00000004 1e600001 00000004
        0x00b0: 9fa00001 9f800001 9f000001 dfa00001
        0x00c0: 00000000 00000000 00000000 00000000
        0x00d0: 00000000 00000000 00000000 00000000
        0x00e0: 010c0009 e200a092 164000d0 00000000
        0x00f0: 00000000 00000000 00090fc8 00000000
 0:2:0: Intel HD Graphics 4000
        0x0000: Vendor ID: 8086 Product ID: 0162
        0x0004: Command: 0007 Status: 0090
        0x0008: Class: 03 Subclass: 00 Interface: 00 Revision: 09
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR mem 64bit addr: 0x00000000f7800000/0x00400000
        0x0018: BAR mem prefetchable 64bit addr: 0x00000000e0000000/0x10000000
        0x0020: BAR io addr: 0x0000f000/0x0040
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 01 Line: 0b Min Gnt: 00 Max Lat: 00
        0x0090: Capability 0x05: Message Signalled Interrupts (MSI)
        0x00d0: Capability 0x01: Power Management
                State: D0
        0x00a4: Capability 0x13: PCI Advanced Features
        0x0000: 01628086 00900007 03000009 00000000
        0x0010: f7800004 00000000 e000000c 00000000
        0x0020: 0000f001 00000000 00000000 20368086
        0x0030: 00000000 00000090 00000000 0000010b
        0x0040: 010c0009 e200a092 164000d0 00000000
        0x0050: 00000289 00000011 00000000 9fa00001
        0x0060: 00020000 00000000 00000000 00000000
        0x0070: 00000000 00000000 00000000 00000000
        0x0080: 00000000 00000000 00000000 00000000
        0x0090: 0001d005 fee00000 00000091 00000000
        0x00a0: 00000000 03060013 00000000 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 00000000 00000000 00000000 00000000
        0x00d0: 0022a401 00000000 00000000 00000000
        0x00e0: 00000000 00000000 00008000 00000000
        0x00f0: 00000000 00000000 00090000 9e345018
 0:20:0: Intel 7 Series xHCI
        0x0000: Vendor ID: 8086 Product ID: 1e31
        0x0004: Command: 0006 Status: 0290
        0x0008: Class: 0c Subclass: 03 Interface: 30 Revision: 04
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR mem 64bit addr: 0x00000000f7d20000/0x00010000
        0x0018: BAR empty (00000000)
        0x001c: BAR empty (00000000)
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 01 Line: 0b Min Gnt: 00 Max Lat: 00
        0x0070: Capability 0x01: Power Management
                State: D0
        0x0080: Capability 0x05: Message Signalled Interrupts (MSI)
        0x0000: 1e318086 02900006 0c033004 00000000
        0x0010: f7d20004 00000000 00000000 00000000
        0x0020: 00000000 00000000 00000000 20368086
        0x0030: 00000000 00000070 00000000 0000010b
        0x0040: 800e07fd 8003c239 00000000 00000000
        0x0050: 00000017 00000000 00000000 00000000
        0x0060: 00002030 00000000 00000000 00000000
        0x0070: c1c28001 00000008 00000000 00000000
        0x0080: 00870005 fee00000 00000000 00000060
        0x0090: 00000000 00000000 00000000 00000000
        0x00a0: 00000000 00000000 00000000 00000000
        0x00b0: 0000008f 00000000 00000000 00000000
        0x00c0: 00000c03 00000000 00000000 00000000
        0x00d0: 0000000f 0000000f 0000000f 0000000f
        0x00e0: 00000000 00000000 00000000 00000000
        0x00f0: 00000000 00000000 08040f87 00000000
 0:22:0: Intel 7 Series MEI
        0x0000: Vendor ID: 8086 Product ID: 1e3a
        0x0004: Command: 0006 Status: 0010
        0x0008: Class: 07 Subclass: 80 Interface: 00 Revision: 04
        0x000c: BIST: 00 Header Type: 80 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR mem 64bit addr: 0x00000000f7d3c000/0x00000010
        0x0018: BAR empty (00000000)
        0x001c: BAR empty (00000000)
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 01 Line: 0b Min Gnt: 00 Max Lat: 00
        0x0050: Capability 0x01: Power Management
                State: D0
        0x008c: Capability 0x05: Message Signalled Interrupts (MSI)
        0x0000: 1e3a8086 00100006 07800004 00800000
        0x0010: f7d3c004 00000000 00000000 00000000
        0x0020: 00000000 00000000 00000000 20368086
        0x0030: 00000000 00000050 00000000 0000010b
        0x0040: 1e000245 80010020 69000106 10003fe0
        0x0050: c8038c01 00000008 00000000 00000000
        0x0060: 00000000 00000000 00000000 00000000
        0x0070: 00000000 00000000 00000000 00000000
        0x0080: 00000000 00000000 00000000 00800005
        0x0090: 00000000 00000000 00000000 00000000
        0x00a0: 00000000 00000000 00000000 00000000
        0x00b0: 00000000 00000000 00000000 c0000002
        0x00c0: e4296030 ae179336 fc242e1a 495f7121
        0x00d0: e9bea777 ff01a321 41277ff3 e64e84b8
        0x00e0: 00000000 00000000 00000000 00000000
        0x00f0: 00000000 00000000 00000000 00000000
 0:22:3: Intel 7 Series KT
        0x0000: Vendor ID: 8086 Product ID: 1e3d
        0x0004: Command: 0007 Status: 00b0
        0x0008: Class: 07 Subclass: 00 Interface: 02 Revision: 04
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR io addr: 0x0000f0e0/0x0008
        0x0014: BAR mem 32bit addr: 0xf7d3a000/0x00001000
        0x0018: BAR empty (00000000)
        0x001c: BAR empty (00000000)
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 02 Line: 0a Min Gnt: 00 Max Lat: 00
        0x00c8: Capability 0x01: Power Management
                State: D0
        0x00d0: Capability 0x05: Message Signalled Interrupts (MSI)
        0x0000: 1e3d8086 00b00007 07000204 00000000
        0x0010: 0000f0e1 f7d3a000 00000000 00000000
        0x0020: 00000000 00000000 00000000 20368086
        0x0030: 00000000 000000c8 00000000 0000020a
        0x0040: 00000000 00000000 00000000 00000000
        0x0050: 00000000 00000000 00000000 00000000
        0x0060: 00000000 00000000 00000000 00000000
        0x0070: 00000000 00000000 00000000 00000000
        0x0080: 00000000 00000000 00000000 00000000
        0x0090: 00000000 00000000 00000000 00000000
        0x00a0: 00000000 00000000 00000000 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 00000000 00000000 0023d001 00000008
        0x00d0: 00800005 00000000 00000000 00000000
        0x00e0: 00000000 00000000 00000000 00000000
        0x00f0: 00000000 00000000 00000000 00000000
 0:25:0: Intel 82579LM
        0x0000: Vendor ID: 8086 Product ID: 1502
        0x0004: Command: 0007 Status: 0010
        0x0008: Class: 02 Subclass: 00 Interface: 00 Revision: 04
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR mem 32bit addr: 0xf7d00000/0x00020000
        0x0014: BAR mem 32bit addr: 0xf7d39000/0x00001000
        0x0018: BAR io addr: 0x0000f080/0x0020
        0x001c: BAR empty (00000000)
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 01 Line: 05 Min Gnt: 00 Max Lat: 00
        0x00c8: Capability 0x01: Power Management
                State: D0
        0x00d0: Capability 0x05: Message Signalled Interrupts (MSI)
        0x00e0: Capability 0x13: PCI Advanced Features
        0x0000: 15028086 00100007 02000004 00000000
        0x0010: f7d00000 f7d39000 0000f081 00000000
        0x0020: 00000000 00000000 00000000 20368086
        0x0030: 00000000 000000c8 00000000 00000105
        0x0040: 00000000 00000000 00000000 00000000
        0x0050: 00000000 00000000 00000000 00000000
        0x0060: 00000000 00000000 00000000 00000000
        0x0070: 00000000 00000000 00000000 00000000
        0x0080: 00000000 00000000 00000000 00000000
        0x0090: 00000000 00000000 00005404 80000ee6
        0x00a0: 00000000 00000000 00000000 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 00000000 00000000 c822d001 07002000
        0x00d0: 0081e005 fee00000 00000000 00000072
        0x00e0: 03060013 00000000 00000000 00000000
        0x00f0: 00000000 00000000 00000000 00000000
 0:26:0: Intel 7 Series USB
        0x0000: Vendor ID: 8086 Product ID: 1e2d
        0x0004: Command: 0006 Status: 0290
        0x0008: Class: 0c Subclass: 03 Interface: 20 Revision: 04
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR mem 32bit addr: 0xf7d38000/0x00000400
        0x0014: BAR empty (00000000)
        0x0018: BAR empty (00000000)
        0x001c: BAR empty (00000000)
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 01 Line: 0b Min Gnt: 00 Max Lat: 00
        0x0050: Capability 0x01: Power Management
                State: D0
        0x0058: Capability 0x0a: Debug Port
        0x0098: Capability 0x13: PCI Advanced Features
        0x0000: 1e2d8086 02900006 0c032004 00000000
        0x0010: f7d38000 00000000 00000000 00000000
        0x0020: 00000000 00000000 00000000 20368086
        0x0030: 00000000 00000050 00000000 0000010b
        0x0040: 00000000 00000000 00000000 00000000
        0x0050: c9c25801 00000000 20a0980a 00000000
        0x0060: 07ff2020 00000000 01000001 00082000
        0x0070: 3fdf0000 00000000 00000000 00000000
        0x0080: 00800000 930c8811 24000d30 00000000
        0x0090: 00000000 00000000 03060013 00000000
        0x00a0: 00000000 00000000 00000000 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 00000000 00000000 00000000 00000000
        0x00d0: 00000000 00ffaa00 00000000 00000000
        0x00e0: 00000000 00040049 00084400 9eff6004
        0x00f0: 00000000 00808588 08040f87 205b1708
 0:27:0: Intel 7 Series HD Audio
        0x0000: Vendor ID: 8086 Product ID: 1e20
        0x0004: Command: 0006 Status: 0010
        0x0008: Class: 04 Subclass: 03 Interface: 00 Revision: 04
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 10
        0x0010: BAR mem 64bit addr: 0x00000000f7d30000/0x00004000
        0x0018: BAR empty (00000000)
        0x001c: BAR empty (00000000)
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 01 Line: 03 Min Gnt: 00 Max Lat: 00
        0x0050: Capability 0x01: Power Management
                State: D0
        0x0060: Capability 0x05: Message Signalled Interrupts (MSI)
        0x0070: Capability 0x10: PCI Express
        0x0100: Enhanced Capability 0x02: Virtual Channel Capability
        0x0130: Enhanced Capability 0x05: Root Complex Link Declaration
        0x0000: 1e208086 00100006 04030004 00000010
        0x0010: f7d30004 00000000 00000000 00000000
        0x0020: 00000000 00000000 00000000 20368086
        0x0030: 00000000 00000050 00000000 00000103
        0x0040: 45000001 00000000 00000000 00000000
        0x0050: c8426001 00000000 00000000 00000000
        0x0060: 00817005 fee00000 00000000 000000b0
        0x0070: 00910010 10000000 00100000 00000000
        0x0080: 00000000 00000000 00000000 00000000
        0x0090: 00000000 00000000 00000000 00000000
        0x00a0: 00000000 00000000 00000000 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 01020400 40002402 82a30c00 02330010
        0x00d0: 02a30c00 02330010 00000000 00000000
        0x00e0: 00000000 00000000 00000000 00000000
        0x00f0: 00000000 00000000 08040f87 00000000
 0:28:0: Intel 7 Series PCIE
        0x0000: Vendor ID: 8086 Product ID: 1e10
        0x0004: Command: 0007 Status: 0010
        0x0008: Class: 06 Subclass: 04 Interface: 00 Revision: c4
        0x000c: BIST: 00 Header Type: 81 Latency Timer: 00 Cache Line Size: 10
        0x0010: 00000000
        0x0014: 00000000
        0x0018: Primary Bus: 0 Secondary Bus: 1 Subordinate Bus: 1
                Secondary Latency Timer: 00
        0x001c: I/O Base: f0 I/O Limit: 00 Secondary Status: 2000
        0x0020: Memory Base: fff0 Memory Limit: 0000
        0x0024: Prefetch Memory Base: fff1 Prefetch Memory Limit: 0001
        0x0028: Prefetch Memory Base Upper 32 Bits: 00000000
        0x002c: Prefetch Memory Limit Upper 32 Bits: 00000000
        0x0030: I/O Base Upper 16 Bits: 0000 I/O Limit Upper 16 Bits: 0000
        0x0038: Expansion ROM Base Address: 00000000
        0x003c: Interrupt Pin: 01 Line: 0b Bridge Control: 0010
        0x0040: Capability 0x10: PCI Express
                Link Speed: 2.5 / 5.0 GT/s Link Width: x0 / x1
        0x0100: Enhanced Capability 0x00: Unknown
        0x0080: Capability 0x05: Message Signalled Interrupts (MSI)
        0x0090: Capability 0x0d: PCI-PCI
        0x00a0: Capability 0x01: Power Management
                State: D0
        0x0000: 1e108086 00100007 060400c4 00810010
        0x0010: 00000000 00000000 00010100 200000f0
        0x0020: 0000fff0 0001fff1 00000000 00000000
        0x0030: 00000000 00000040 00000000 0010010b
        0x0040: 01428010 00008000 00100000 01124c12
        0x0050: 10010003 0004b200 00000028 00000000
        0x0060: 00000000 00000016 00000000 00000000
        0x0070: 00010002 00000000 00000000 00000000
        0x0080: 00019005 fee00000 00000062 00000000
        0x0090: 0000a00d 20368086 00000000 00000000
        0x00a0: c8020001 00000000 00000000 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 00000000 00000000 00000000 00000000
        0x00d0: 01000000 00000b02 81118000 00000000
        0x00e0: 00003f00 00000000 00000003 00000000
        0x00f0: 00000000 00000000 08040f87 00000000
 0:28:6: Intel 7 Series PCIE
        0x0000: Vendor ID: 8086 Product ID: 1e1c
        0x0004: Command: 0007 Status: 0010
        0x0008: Class: 06 Subclass: 04 Interface: 00 Revision: c4
        0x000c: BIST: 00 Header Type: 81 Latency Timer: 00 Cache Line Size: 10
        0x0010: 00000000
        0x0014: 00000000
        0x0018: Primary Bus: 0 Secondary Bus: 2 Subordinate Bus: 2
                Secondary Latency Timer: 00
        0x001c: I/O Base: e0 I/O Limit: e0 Secondary Status: 0000
        0x0020: Memory Base: f7c0 Memory Limit: f7c0
        0x0024: Prefetch Memory Base: fff1 Prefetch Memory Limit: 0001
        0x0028: Prefetch Memory Base Upper 32 Bits: 00000000
        0x002c: Prefetch Memory Limit Upper 32 Bits: 00000000
        0x0030: I/O Base Upper 16 Bits: 0000 I/O Limit Upper 16 Bits: 0000
        0x0038: Expansion ROM Base Address: 00000000
        0x003c: Interrupt Pin: 03 Line: 04 Bridge Control: 0010
        0x0040: Capability 0x10: PCI Express
                Link Speed: 2.5 / 5.0 GT/s Link Width: x1 / x1
        0x0100: Enhanced Capability 0x00: Unknown
        0x0080: Capability 0x05: Message Signalled Interrupts (MSI)
        0x0090: Capability 0x0d: PCI-PCI
        0x00a0: Capability 0x01: Power Management
                State: D0
        0x0000: 1e1c8086 00100007 060400c4 00810010
        0x0010: 00000000 00000000 00020200 0000e0e0
        0x0020: f7c0f7c0 0001fff1 00000000 00000000
        0x0030: 00000000 00000040 00000000 00100304
        0x0040: 01428010 00008000 00100000 07123c12
        0x0050: 70110042 0034b200 00400028 00000000
        0x0060: 00000000 00000016 00000000 00000000
        0x0070: 00010002 00000000 00000000 00000000
        0x0080: 00019005 fee00000 00000063 00000000
        0x0090: 0000a00d 20368086 00000000 00000000
        0x00a0: c8020001 00000000 00000000 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 00000000 00000000 00000000 00000000
        0x00d0: 01000000 00000b02 81118000 00000000
        0x00e0: 00000300 00000000 00000001 00000000
        0x00f0: 00000000 00000000 08040f87 00000000
 0:29:0: Intel 7 Series USB
        0x0000: Vendor ID: 8086 Product ID: 1e26
        0x0004: Command: 0006 Status: 0290
        0x0008: Class: 0c Subclass: 03 Interface: 20 Revision: 04
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR mem 32bit addr: 0xf7d37000/0x00000400
        0x0014: BAR empty (00000000)
        0x0018: BAR empty (00000000)
        0x001c: BAR empty (00000000)
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 01 Line: 0b Min Gnt: 00 Max Lat: 00
        0x0050: Capability 0x01: Power Management
                State: D0
        0x0058: Capability 0x0a: Debug Port
        0x0098: Capability 0x13: PCI Advanced Features
        0x0000: 1e268086 02900006 0c032004 00000000
        0x0010: f7d37000 00000000 00000000 00000000
        0x0020: 00000000 00000000 00000000 20368086
        0x0030: 00000000 00000050 00000000 0000010b
        0x0040: 00000000 00000000 00000000 00000000
        0x0050: c9c25801 00000000 20a0980a 00000000
        0x0060: 07ff2020 00000000 01000001 00082000
        0x0070: 3fdf0000 00000000 00000000 00000000
        0x0080: 00800000 930c8811 24000d30 00000000
        0x0090: 00000000 00000000 03060013 00000000
        0x00a0: 00000000 00000000 00000000 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 00000000 00000000 00000000 00000000
        0x00d0: 00000000 00ffaa00 00000000 00000000
        0x00e0: 00000000 00000000 00000000 9efe9004
        0x00f0: 00000000 00808588 08040f87 205b1708
 0:30:0: Intel 82801BA Hub-to-PCI
        0x0000: Vendor ID: 8086 Product ID: 244e
        0x0004: Command: 0007 Status: 0010
        0x0008: Class: 06 Subclass: 04 Interface: 01 Revision: a4
        0x000c: BIST: 00 Header Type: 01 Latency Timer: 00 Cache Line Size: 00
        0x0010: 00000000
        0x0014: 00000000
        0x0018: Primary Bus: 0 Secondary Bus: 3 Subordinate Bus: 3
                Secondary Latency Timer: 20
        0x001c: I/O Base: f0 I/O Limit: 00 Secondary Status: 2280
        0x0020: Memory Base: fff0 Memory Limit: 0000
        0x0024: Prefetch Memory Base: fff1 Prefetch Memory Limit: 0001
        0x0028: Prefetch Memory Base Upper 32 Bits: 00000000
        0x002c: Prefetch Memory Limit Upper 32 Bits: 00000000
        0x0030: I/O Base Upper 16 Bits: 0000 I/O Limit Upper 16 Bits: 0000
        0x0038: Expansion ROM Base Address: 00000000
        0x003c: Interrupt Pin: 00 Line: ff Bridge Control: 0010
        0x0050: Capability 0x0d: PCI-PCI
        0x0000: 244e8086 00100007 060401a4 00010000
        0x0010: 00000000 00000000 20030300 228000f0
        0x0020: 0000fff0 0001fff1 00000000 00000000
        0x0030: 00000000 00000050 00000000 001000ff
        0x0040: 00000000 00000000 00000000 10001200
        0x0050: 0000000d 20368086 00000000 00000000
        0x0060: 00000000 00000000 00000000 00000000
        0x0070: 00000000 00000000 00000000 00000000
        0x0080: 00000000 00000000 00000000 00000000
        0x0090: 00000000 00000000 00000000 00000000
        0x00a0: 00000000 00000000 00000000 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 00000000 00000000 00000000 00000000
        0x00d0: 00000000 00000000 00000000 00000000
        0x00e0: 00000000 00000000 00000000 00000000
        0x00f0: 00000000 00000000 08040f87 00000000
 0:31:0: Intel unknown
        0x0000: Vendor ID: 8086 Product ID: 1e47
        0x0004: Command: 0007 Status: 0210
        0x0008: Class: 06 Subclass: 01 Interface: 00 Revision: 04
        0x000c: BIST: 00 Header Type: 80 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR empty (00000000)
        0x0014: BAR empty (00000000)
        0x0018: BAR empty (00000000)
        0x001c: BAR empty (00000000)
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 00 Line: 00 Min Gnt: 00 Max Lat: 00
        0x00e0: Capability 0x09: Vendor Specific
        0x0000: 1e478086 02100007 06010004 00800000
        0x0010: 00000000 00000000 00000000 00000000
        0x0020: 00000000 00000000 00000000 20368086
        0x0030: 00000000 000000e0 00000000 00000000
        0x0040: 00000401 00000080 00000501 00000010
        0x0050: 000000f8 00000000 00000000 00000000
        0x0060: 0a04800b 00000090 0b038005 0000f0f8
        0x0070: f078f078 f078f078 f078f078 f078f078
        0x0080: 14000000 00fc0a01 00000000 00000000
        0x0090: 00000000 00000500 00000000 00000000
        0x00a0: 00a00e18 00063919 00004700 80000000
        0x00b0: 00000000 00000000 00000a80 00000000
        0x00c0: 00000000 00000000 00000000 00000000
        0x00d0: 00112233 00004567 0000ffcf 0000002a
        0x00e0: 100c0009 00000000 04e402b1 00000000
        0x00f0: fed1c001 00000000 08040f87 00000000
 0:31:2: Intel 7 Series AHCI
        0x0000: Vendor ID: 8086 Product ID: 1e02
        0x0004: Command: 0007 Status: 02b0
        0x0008: Class: 01 Subclass: 06 Interface: 01 Revision: 04
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR io addr: 0x0000f0d0/0x0008
        0x0014: BAR io addr: 0x0000f0c0/0x0004
        0x0018: BAR io addr: 0x0000f0b0/0x0008
        0x001c: BAR io addr: 0x0000f0a0/0x0004
        0x0020: BAR io addr: 0x0000f060/0x0020
        0x0024: BAR mem 32bit addr: 0xf7d36000/0x00000800
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 02 Line: 0a Min Gnt: 00 Max Lat: 00
        0x0080: Capability 0x05: Message Signalled Interrupts (MSI)
        0x0070: Capability 0x01: Power Management
                State: D0
        0x00a8: Capability 0x12: SATA
        0x00b0: Capability 0x13: PCI Advanced Features
        0x0000: 1e028086 02b00007 01060104 00000000
        0x0010: 0000f0d1 0000f0c1 0000f0b1 0000f0a1
        0x0020: 0000f061 f7d36000 00000000 20368086
        0x0030: 00000000 00000080 00000000 0000020a
        0x0040: 80008000 00000000 00000000 00000000
        0x0050: 00000000 00000000 00000000 00000000
        0x0060: 00000000 00000000 00000000 00000000
        0x0070: 4003a801 00000008 00000000 00000000
        0x0080: 00017005 fee00000 00000065 00000000
        0x0090: a72f1060 10000183 015c4208 00000000
        0x00a0: 000000e0 00390039 0010b012 00000048
        0x00b0: 03060013 00000000 00000000 00000000
        0x00c0: 00000000 00000000 00000000 00000000
        0x00d0: 00000000 00000000 00000000 00000000
        0x00e0: 00000000 00000000 00000000 00000000
        0x00f0: 00000000 00000000 08040f87 00000000
 0:31:3: Intel 7 Series SMBus
        0x0000: Vendor ID: 8086 Product ID: 1e22
        0x0004: Command: 0003 Status: 0280
        0x0008: Class: 0c Subclass: 05 Interface: 00 Revision: 04
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00
        0x0010: BAR mem 64bit addr: 0x00000000f7d35000/0x00000100
        0x0018: BAR empty (00000000)
        0x001c: BAR empty (00000000)
        0x0020: BAR io addr: 0x0000f040/0x0020
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 03 Line: 04 Min Gnt: 00 Max Lat: 00
        0x0000: 1e228086 02800003 0c050004 00000000
        0x0010: f7d35004 00000000 00000000 00000000
        0x0020: 0000f041 00000000 00000000 20368086
        0x0030: 00000000 00000000 00000000 00000304
        0x0040: 00000011 00000000 00000000 00000000
        0x0050: 00000000 00000000 00000000 00000000
        0x0060: 00040403 08080000 00000000 00000000
        0x0070: 00000000 00000000 00000000 00000000
        0x0080: 00000004 00000000 00000000 00000000
        0x0090: 00000000 00000000 00000000 00000000
        0x00a0: 00000000 00000000 00000000 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 00000000 00000000 00000000 00000000
        0x00d0: 00000000 00000000 00000000 00000000
        0x00e0: 00000000 00000000 00000000 00000000
        0x00f0: 00000000 00000000 08040f87 00000000
 2:0:0: Intel 82574L
        0x0000: Vendor ID: 8086 Product ID: 10d3
        0x0004: Command: 0007 Status: 0010
        0x0008: Class: 02 Subclass: 00 Interface: 00 Revision: 00
        0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 10
        0x0010: BAR mem 32bit addr: 0xf7c00000/0x00020000
        0x0014: BAR empty (00000000)
        0x0018: BAR io addr: 0x0000e000/0x0020
        0x001c: BAR mem 32bit addr: 0xf7c20000/0x00004000
        0x0020: BAR empty (00000000)
        0x0024: BAR empty (00000000)
        0x0028: Cardbus CIS: 00000000
        0x002c: Subsystem Vendor ID: 8086 Product ID: 2036
        0x0030: Expansion ROM Base Address: 00000000
        0x0038: 00000000
        0x003c: Interrupt Pin: 01 Line: 04 Min Gnt: 00 Max Lat: 00
        0x00c8: Capability 0x01: Power Management
                State: D0
        0x00d0: Capability 0x05: Message Signalled Interrupts (MSI)
        0x00e0: Capability 0x10: PCI Express
                Link Speed: 2.5 / 2.5 GT/s Link Width: x1 / x1
        0x0100: Enhanced Capability 0x01: Advanced Error Reporting
        0x0140: Enhanced Capability 0x03: Device Serial Number
        0x00a0: Capability 0x11: Extended Message Signalled Interrupts (MSI-X)
        0x0000: 10d38086 00100007 02000000 00000010
        0x0010: f7c00000 00000000 0000e001 f7c20000
        0x0020: 00000000 00000000 00000000 20368086
        0x0030: 00000000 000000c8 00000000 00000104
        0x0040: 00000000 00000000 00000000 00000000
        0x0050: 00000000 00000000 00000000 00000000
        0x0060: 00000000 00000000 00000000 00000000
        0x0070: 00000000 00000000 00000000 00000000
        0x0080: 00000000 00000000 00000000 00000000
        0x0090: 00000000 00000000 00000000 00000000
        0x00a0: 00040011 00000003 00002003 00000000
        0x00b0: 00000000 00000000 00000000 00000000
        0x00c0: 00000000 00000000 c822d001 0f002000
        0x00d0: 0081e005 fee00000 00000000 00000073
        0x00e0: 0001a010 00008cc1 00102800 00031c11
        0x00f0: 10110040 00000000 00000000 00000000

acpidump:
begin-base64 644 APIC.3
QVBJQ5IAAAADIUlOVEVMIERRNzdLQiAgOgAAAEFNSSATAAEAAADg/gEAAAAACAEAAQAAAAAIAgIB
AAAAAAgDBAEAAAAACAQGAQAAAAAIBQEBAAAAAAgGAwEAAAAACAcFAQAAAAAICAcBAAAAAQwCAAAA
wP4AAAAAAgoAAAIAAAAAAAIKAAkJAAAADQAEBv8FAAE=
====
begin-base64 644 ASF!.12
QVNGIaUAAAAglklOVEVMIERRNzdLQiAgOgAAAFRGU01AQg8AAAAQAP//AQAAAAFXAAAAAAEALAAA
AAMMiQQBAQVvAGgIiBcAiQQEBAdvAGggiAMAiQUBARlvAGggiCIAAgAYAAQEAAAAiAADAYgAAgKI
AAEDiAAEAwAXACF4AAAAE/ABAAABVwAAAAABAACEABYAABBcaIjC0tygoqSmyAAAAAAA
====
begin-base64 644 BGRT.13
QkdSVDgAAAAA4klOVEVMIERRNzdLQiAgOgAAAEFNSSATAAEAAQABABiwYpIAAAAAgAEAAMcAAAA=
====
begin-base64 644 DMAR.11
RE1BUrgAAAABWUlOVEVMIERRNzdLQiAgOgAAAElOVEwBAAAAIwEAAAAAAAAAAAAAAAAYAAAAAAAA
ANn+AAAAAAEIAAAAAAIAAAAgAAEAAAAAENn+AAAAAAMIAAAC8B8ABAgAAADwDwABADAAAAAAAADg
G54AAAAA/68cngAAAAABCAAAAAAdAAEIAAAAABoAAQgAAAAAFAABACAAAAAAAAAAgN8AAAAA//+f
3wAAAAABCAAAAAACAA==
====
begin-base64 644 DSDT.2
RFNEVFGjAAACz0lOVEVMIERRNzdLQiAgOgAAAElOVEwXEQUgCFNQMU8KLghJTzFCCzAKCElPMUwK
IAhJTzJCAAhJTzJMAAhJTzNCCwAKCElPM0wKEAhTTUJTC4AFCFNNQkwKIAhQTUJTCwAECFBNTE4K
gAhHUEJTCwAFCEdQTE4KgAhTTUlQCrIIQVBDQgwAAMD+CEFQQ0wLABAIU01DUgswBAhIUFRCDAAA
0P4ISFBUQwwE9NH+CEZMU1oMAABkAAhTUkNCDADA0f4IUkNMTgsAQAhUQ0JSDACA0P4IVENMVAsA
EAhQRUJTDAAAAPgIUEVMTgwAAAAECExBUEIMAADg/ghFR1BCDACQ0f4ITUNIQgwAANH+CFZUQlMM
AADZ/ghWVExOCwBACEFDUEgK3ghBU1NCAAhBT1RCAAhBQVhCAAhQRUhQAQhTSFBDAQhQRVBNAQhQ
RUVSAQhQRUNTAQhJVEtFAAhNQkVDC///CEZNQkwBCEZEVFAKAghGVVBTCgMIRlVXUwoECEJTSF8A
CEJFTF8BCEJFSF8KAghCUkhfCgMIQlRGXwoECEJIQ18KBQhCWUJfCgYIQlBIXwoHCEJTSFMKCAhC
RUxDCgkIQlJIUAoKCEJURkMKCwhCRUhQCgwIQlBIUwoNCEJFTFAKDghCVExfChAIQlRGUAoRCEJT
Ul8KFAhCQ0hfChYIQkxSXwoYCEJMSF8KGQhCT0ZfCiAIQkVGXwohCEJMTEUKIghCTExDCiMIQkxD
QQokCEJMTFMKJQhCTExQCiYIQkxMRAonCEJIQkUKMAhCSEJDCjEIQkhCTgoyCEJIQk0KMwhUUlRQ
AQhXRFRFAQhUUlRECgIIVFJUSQoDCEdDREQBCERTVEEKCghEU0xPCgwIRFNMQwoOCFBJVFMKEAhT
QkNTChIIU0FMUwoTCExTU1MKKghTT09UCjUIUERCUgpNCFNSU0kKsghDU01JCmEIRFNTUAAIRkhQ
UAAIU01JVAqyCE9GU1QKNQhUUE1GAQhUQ01GAAhUTUYxAAhUTUYyAAhUTUYzAAhISURLDU1TRlQw
MDAxAAhISURNDU1TRlQwMDAzAAhDSURLDEHQAwMIQ0lETQxB0A8DCFRSU1QKAghHUEVSCyAECEJU
TlMK4QhTUzFfAAhTUzJfAAhTUzNfAQhTUzRfAQhJT1NUCwAACFRPUE0MAAAAAAhST01TDAAA4P8I
VkdBRgFbgEdOVlMADBiONJ4LzQFbgUBDR05WUxBPU1lTEFNNSUYIUFJNMAhQUk0xCFNDSUYIUFJN
MghQUk0zCExDS0YIUFJNNAhQUk01CFA4MEQgTElEUwhQV1JTCERCR1MIVEhPRghBQ1QxCEFDVFQI
UFNWVAhUQzFWCFRDMlYIVFNQVghDUlRUCERUU0UIRFRTMQhEVFMyCERUU0YIADhSRVZOCFJFUzMI
AAhBUElDCFRDTlQIUENQMAhQQ1AxCFBQQ00IUFBNRiBDNjdMCE5BVFAIQ01BUAhDTUJQCExQVFAI
RkRDUAhDTUNQCENJUlAIU01TQwhXMzgxCFNNQzEISUdEUwhUTFNUCENBREwIUEFETAhDU1RFEE5T
VEUQU1NURRBORElECERJRDEgRElEMiBESUQzIERJRDQgRElENSBLU1YwIEtTVjEIADhCTENTCEJS
VEwIQUxTRQhBTEFGCExMT1cITEhJSAgACEVNQUUIRU1BUBBFTUFMEAAITUVGRQhEU1RTCAAQVFBN
UAhUUE1FCE1PUkQIVENHUAhQUFJQIFBQUlEITFBQUghHVEYwOEdURjI4SURFTQhHVEYxOEJJRF8I
UExJRAgAQAhBU0xCIElCVFQISVBBVAhJVFZGCElUVk0ISVBTQwhJQkxDCElCSUEISVNTQwhJNDA5
CEk1MDkISTYwOQhJNzA5CElQQ0YISURNUwhJRjFFCEhWQ08ITlhEMSBOWEQyIE5YRDMgTlhENCBO
WEQ1IE5YRDYgTlhENyBOWEQ4IEdTTUkIUEFWUAgACE9TQ0MITkVYUAhTQlYxCFNCVjIIADBEU0VO
CEVDT04IR1BJQwhDVFlQCEwwMUMIVkZOMAhWRk4xCFZGTjIIVkZOMwhWRk40CFZGTjUIVkZONghW
Rk43CFZGTjgIVkZOOQgAME5WR0EgTlZIQSBBTURBIERJRDYgRElENyBESUQ4IEVCQVMgQ1BTUCBF
RUNQIEVWQ1AgWEJBUyBPQlMxIE9CUzIgT0JTMyBPQlM0IE9CUzUgT0JTNiBPQlM3IE9CUzggAEgF
QVRNQwhQVE1DCEFUUkEIUFRSQQhQTkhNIFRCQUIgVEJBSCBSVElQCFRTT0QIQVRQQwhQVFBDCFBG
TFYIQlJFVghTR01ECFNHRkwIUFdPSwhITFJTCERTRUwIRVNFTAhQU0VMCFBXRU4IUFJTVAhNWEQx
IE1YRDIgTVhEMyBNWEQ0IE1YRDUgTVhENiBNWEQ3IE1YRDggR0JBUxBTR0dQCFBYRlgIUFhEWQhQ
WEZECAAIQUxGUAhJTU9OCFBEVFMIUEtHQQhQQU1UCEFDMEYIQUMxRghEVFMzCERUUzQIACBYSENJ
CFhIUE0IWFRVQiBYVFVTIFhNUEIgTFBNVghERFJGCE1NNjQIUFNLRQhQU01FCAAwQU9BQwhTTERS
IEVDVE0gQUZOUwgQimADX1NCXwhQUjAwEksgJBINBAz//x8AAExOS0YAEg0EDP//HwABTE5LRAAS
DgQM//8fAAoCTE5LQwASDgQM//8fAAoDTE5LQQASDQQM//8UAABMTktBABINBAz//x0AAExOS0gA
Eg0EDP//HQABTE5LRAASDgQM//8dAAoCTE5LQQASDgQM//8dAAoDTE5LQwASDQQM//8aAABMTktB
ABINBAz//xoAAUxOS0YAEg4EDP//GgAKAkxOS0MAEg4EDP//GgAKA0xOS0QAEg0EDP//GwAATE5L
RwASDQQM//8WAABMTktBABINBAz//xYAAUxOS0QAEg4EDP//FgAKAkxOS0MAEg4EDP//FgAKA0xO
S0IAEg0EDP//HAAATE5LQQASDQQM//8cAAFMTktCABIOBAz//xwACgJMTktDABIOBAz//xwACgNM
TktEABINBAz//wEAAExOS0EAEg0EDP//AQABTE5LQgASDgQM//8BAAoCTE5LQwASDgQM//8BAAoD
TE5LRAASDQQM//8GAABMTktEABINBAz//wYAAUxOS0EAEg4EDP//BgAKAkxOS0IAEg4EDP//BgAK
A0xOS0MAEg0EDP//BAAATE5LQQASDQQM//8EAAFMTktCABIOBAz//wQACgJMTktDABIOBAz//wQA
CgNMTktEABINBAz//xkAAExOS0UAEg0EDP//AgAATE5LQQAIQVIwMBJDHCQSCwQM//8fAAAAChUS
CwQM//8fAAEAChMSDAQM//8fAAoCAAoSEgwEDP//HwAKAwAKEBILBAz//xQAAAAKEBILBAz//x0A
AAAKFxILBAz//x0AAQAKExIMBAz//x0ACgIAChASDAQM//8dAAoDAAoSEgsEDP//GgAAAAoQEgsE
DP//GgABAAoVEgwEDP//GgAKAgAKEhIMBAz//xoACgMAChMSCwQM//8bAAAAChYSCwQM//8WAAAA
ChASCwQM//8WAAEAChMSDAQM//8WAAoCAAoSEgwEDP//FgAKAwAKERILBAz//xwAAAAKEBILBAz/
/xwAAQAKERIMBAz//xwACgIAChISDAQM//8cAAoDAAoTEgsEDP//AQAAAAoQEgsEDP//AQABAAoR
EgwEDP//AQAKAgAKEhIMBAz//wEACgMAChMSCwQM//8GAAAAChMSCwQM//8GAAEAChASDAQM//8G
AAoCAAoREgwEDP//BgAKAwAKEhILBAz//wQAAAAKEBILBAz//wQAAQAKERIMBAz//wQACgIAChIS
DAQM//8EAAoDAAoTEgsEDP//GQAAAAoUEgsEDP//AgAAAAoQCFBSMDQSNAQSCwQL//8ATE5LQQAS
CwQL//8BTE5LQgASDAQL//8KAkxOS0MAEgwEC///CgNMTktEAAhBUjA0EiwEEgkEC///AAAKEBIJ
BAv//wEAChESCgQL//8KAgAKEhIKBAv//woDAAoTCFBSMDUSNAQSCwQL//8ATE5LQgASCwQL//8B
TE5LQwASDAQL//8KAkxOS0QAEgwEC///CgNMTktBAAhBUjA1EiwEEgkEC///AAAKERIJBAv//wEA
ChISCgQL//8KAgAKExIKBAv//woDAAoQCFBSMDYSNAQSCwQL//8ATE5LQwASCwQL//8BTE5LRAAS
DAQL//8KAkxOS0EAEgwEC///CgNMTktCAAhBUjA2EiwEEgkEC///AAAKEhIJBAv//wEAChMSCgQL
//8KAgAKEBIKBAv//woDAAoRCFBSMDcSNAQSCwQL//8ATE5LRAASCwQL//8BTE5LQQASDAQL//8K
AkxOS0IAEgwEC///CgNMTktDAAhBUjA3EiwEEgkEC///AAAKExIJBAv//wEAChASCgQL//8KAgAK
ERIKBAv//woDAAoSCFBSMDgSNAQSCwQL//8ATE5LQQASCwQL//8BTE5LQgASDAQL//8KAkxOS0MA
EgwEC///CgNMTktEAAhBUjA4EiwEEgkEC///AAAKEBIJBAv//wEAChESCgQL//8KAgAKEhIKBAv/
/woDAAoTCFBSMDkSNAQSCwQL//8ATE5LQgASCwQL//8BTE5LQwASDAQL//8KAkxOS0QAEgwEC///
CgNMTktBAAhBUjA5EiwEEgkEC///AAAKERIJBAv//wEAChISCgQL//8KAgAKExIKBAv//woDAAoQ
CFBSMEUSNAQSCwQL//8ATE5LQwASCwQL//8BTE5LRAASDAQL//8KAkxOS0EAEgwEC///CgNMTktC
AAhBUjBFEiwEEgkEC///AAAKEhIJBAv//wEAChMSCgQL//8KAgAKEBIKBAv//woDAAoRCFBSMEYS
NAQSCwQL//8ATE5LRAASCwQL//8BTE5LQQASDAQL//8KAkxOS0IAEgwEC///CgNMTktDAAhBUjBG
EiwEEgkEC///AAAKExIJBAv//wEAChASCgQL//8KAgAKERIKBAv//woDAAoSCFBSMDESNAQSCwQL
//8ATE5LQQASCwQL//8BTE5LQgASDAQL//8KAkxOS0MAEgwEC///CgNMTktEAAhBUjAxEiwEEgkE
C///AAAKEBIJBAv//wEAChESCgQL//8KAgAKEhIKBAv//woDAAoTCFBSMDISNAQSCwQL//8ATE5L
QQASCwQL//8BTE5LQgASDAQL//8KAkxOS0MAEgwEC///CgNMTktEAAhBUjAyEiwEEgkEC///AAAK
EBIJBAv//wEAChESCgQL//8KAgAKEhIKBAv//woDAAoTCFBSMEESNAQSCwQL//8ATE5LQgASCwQL
//8BTE5LQwASDAQL//8KAkxOS0QAEgwEC///CgNMTktBAAhBUjBBEiwEEgkEC///AAAKERIJBAv/
/wEAChISCgQL//8KAgAKExIKBAv//woDAAoQCFBSMEISNAQSCwQL//8ATE5LQwASCwQL//8BTE5L
RAASDAQL//8KAkxOS0EAEgwEC///CgNMTktCAAhBUjBCEiwEEgkEC///AAAKEhIJBAv//wEAChMS
CgQL//8KAgAKEBIKBAv//woDAAoRCFBSMEMSNAQSCwQL//8ATE5LRAASCwQL//8BTE5LQQASDAQL
//8KAkxOS0IAEgwEC///CgNMTktDAAhBUjBDEiwEEgkEC///AAAKExIJBAv//wEAChASCgQL//8K
AgAKERIKBAv//woDAAoSCFBSMTESDgESCwQL//8ATE5LRQAIQVIxMRIMARIJBAv//wAAChQIUFJT
QREJCgYjeNwYeQAGUFJTQVBSU0IGUFJTQVBSU0MGUFJTQVBSU0QGUFJTQVBSU0UGUFJTQVBSU0YG
UFJTQVBSU0cGUFJTQVBSU0hbgoquAlBDSTAIX0hJRAxB0AoICF9DSUQMQdAKAwhfQURSABQJXkJO
MDAApAAUC19CQk4ApEJOMDAIX1VJRAAUFl9QUlQAoApQSUNNpEFSMDCkUFIwMFuASEJVUwIACwAB
W4FLDUhCVVMDAEAgRVBFTgEAC0VQQlIUACBNSEVOAQAOTUhCUhEAIEdDTEsBAB9EMEVOAQBPBVBY
RU4BUFhTWgIAF1BYQlIGACBESUVOAQALRElCUhQAIAAUTUVCUgwAQAYABFBNMEgCAAJQTTFMAgAC
UE0xSAIAAlBNMkwCAAJQTTJIAgACUE0zTAIAAlBNM0gCAAJQTTRMAgACUE00SAIAAlBNNUwCAAJQ
TTVIAgACUE02TAIAAlBNNkgCAAIASBAAFFRVVUQTAEkHABRUTFVEDABABAAHSFRTRQFbgE1DSFQA
DAAA0f4LABFbgQZNQ0hUAQhCVUYwEUcgCwICiA0AAgwAAAAAAP8AAAAAAYcXAAEMAwAAAAAAAAAA
9wwAAAAAAAD4DAAARwH4DPgMAQiHFwABDAMAAAAAAA0AAP//AAAAAAAAAPMAAIcXAAAMAwAAAAAA
AAoA//8LAAAAAAAAAAIAhxcAAAwDAAAAAAAADAD/PwwAAAAAAABAAACHFwAADAMAAAAAAEAMAP9/
DAAAAAAAAEAAAIcXAAAMAwAAAAAAgAwA/78MAAAAAAAAQAAAhxcAAAwDAAAAAADADAD//wwAAAAA
AABAAACHFwAADAMAAAAAAAANAP8/DQAAAAAAAEAAAIcXAAAMAwAAAAAAQA0A/38NAAAAAAAAQAAA
hxcAAAwDAAAAAACADQD/vw0AAAAAAABAAACHFwAADAMAAAAAAMANAP//DQAAAAAAAEAAAIcXAAAM
AwAAAAAAAA4A/z8OAAAAAAAAQAAAhxcAAAwDAAAAAABADgD/fw4AAAAAAABAAACHFwAADAMAAAAA
AIAOAP+/DgAAAAAAAEAAAIcXAAAMAwAAAAAAwA4A//8OAAAAAAAAQAAAhxcAAAwDAAAAAAAADwD/
/w8AAAAAAAAAAQCHFwAADAMAAAAAAAAAAP//r/4AAAAAAACw/oorAAAMAwAAAAAAAAAAAAABAAAA
AAD//wEAAAAAAAAAAAAAAAAAAAABAAAAAAB5ABRFOV9DUlMIi0JVRjAKClBCTVhwdHpQRUxOChQA
CgIAUEJNWItCVUYwCg5QQkxOcHR6UEVMTgoUAAEAUEJMTqAWUE0xTIpCVUYwCnxDMExOcABDMExO
oBmTUE0xTAGNQlVGMAtYA0MwUldwAEMwUlegFlBNMUiKQlVGMAqWQzRMTnAAQzRMTqAZk1BNMUgB
jUJVRjALKARDNFJXcABDNFJXoBZQTTJMikJVRjAKsEM4TE5wAEM4TE6gGZNQTTJMAY1CVUYwC/gE
QzhSV3AAQzhSV6AWUE0ySIpCVUYwCspDQ0xOcABDQ0xOoBmTUE0ySAGNQlVGMAvIBUNDUldwAEND
UlegFlBNM0yKQlVGMArkRDBMTnAARDBMTqAZk1BNM0wBjUJVRjALmAZEMFJXcABEMFJXoBZQTTNI
ikJVRjAK/kQ0TE5wAEQ0TE6gGZNQTTNIAY1CVUYwC2gHRDRSV3AARDRSV6AXUE00TIpCVUYwCxgB
RDhMTnAARDhMTqAZk1BNNEwBjUJVRjALOAhEOFJXcABEOFJXoBdQTTRIikJVRjALMgFEQ0xOcABE
Q0xOoBmTUE00SAGNQlVGMAsICURDUldwAERDUlegF1BNNUyKQlVGMAtMAUUwTE5wAEUwTE6gGZNQ
TTVMAY1CVUYwC9gJRTBSV3AARTBSV6AXUE01SIpCVUYwC2YBRTRMTnAARTRMTqAZk1BNNUgBjUJV
RjALqApFNFJXcABFNFJXoBdQTTZMikJVRjALgAFFOExOcABFOExOoBmTUE02TAGNQlVGMAt4C0U4
UldwAEU4UlegF1BNNkiKQlVGMAuaAUVDTE5wAEVDTE6gGZNQTTZIAY1CVUYwC0gMRUNSV3AARUNS
V6AXUE0wSIpCVUYwC7QBRjBMTnAARjBMTqAZk1BNMEgBjUJVRjALGA1GMFJXcABGMFJXikJVRjAL
wgFNMU1OikJVRjALxgFNMU1YikJVRjALzgFNMUxOeVRMVUQKFE0xTU5ydE0xTVhNMU1OAAFNMUxO
oCORk01NNjQAkpRPU1lTC9MHikJVRjAL+AFNU0xOcABNU0xOoUoGj0JVRjAL+AFNMkxOj0JVRjAL
4AFNMk1Oj0JVRjAL6AFNMk1YcA4AAAAABAAAAE0yTE6gFZKVVFVVRAsAEHlUVVVEChRNMk1OoQ9w
DgAAAAABAAAATTJNTnRyTTJNTk0yTE4AAU0yTVikQlVGMAhHVUlEERMKEFtN2zP3HxxAlld0QcA9
12YIU1VQUAAIQ1RSTAAIWENOVAAUQRFfT1NDDHBrYIpgAENEVzGKYAoEQ0RXMopgCghDRFczoBpe
LlhIQ19DVUlEaKReLlhIQ19QT1NDaWproSygKl9PU0kNV2luZG93cyAyMDEyAKAWk1hDTlQAXi5Y
SENfWFNFTHVYQ05UoEgJk2hHVUlEcENEVzJTVVBQcENEVzNDVFJMoBWTTkVYUAB7Q1RSTAz4////
Q1RSTKArTkVYUKAlgHtDRFcxAQAAoAx7Q1RSTAEATkhQR6ANe0NUUkwKBABOUE1FoBCSk2kBfUNE
VzEKCENEVzGgFpKTQ0RXM0NUUkx9Q0RXMQoQQ0RXMXBDVFJMQ0RXM3BDVFJMT1NDQ6RgoQ59Q0RX
MQoEQ0RXMaRgEEQZXC5fU0JfUENJMBQNQVIwMACkXl5BUjAwFA1QUjAwAKReXlBSMDAUDUFSMDEA
pF5eQVIwMRQNUFIwMQCkXl5QUjAxFA1BUjAyAKReXkFSMDIUDVBSMDIApF5eUFIwMhQNQVIwNACk
Xl5BUjA0FA1QUjA0AKReXlBSMDQUDUFSMDUApF5eQVIwNRQNUFIwNQCkXl5QUjA1FA1BUjA2AKRe
XkFSMDYUDVBSMDYApF5eUFIwNhQNQVIwNwCkXl5BUjA3FA1QUjA3AKReXlBSMDcUDUFSMDgApF5e
QVIwOBQNUFIwOACkXl5QUjA4FA1BUjA5AKReXkFSMDkUDVBSMDkApF5eUFIwORQNQVIwRQCkXl5B
UjBFFA1QUjBFAKReXlBSMEUUDUFSMEYApF5eQVIwRhQNUFIwRgCkXl5QUjBGFA1BUjBBAKReXkFS
MEEUDVBSMEEApF5eUFIwQRQNQVIwQgCkXl5BUjBCFA1QUjBCAKReXlBSMEIUDUFSMEMApF5eQVIw
QxQNUFIwQwCkXl5QUjBDW4JLBFRQTVgIX0hJRAxB0AwBCF9VSUQBCENSU18REQoOhgkAAAAA1P4A
UAAAeQAUC19DUlMApENSU18UEV9TVEEAoAdUUE1GpACkCg9bgoxvAUxQQ0IIX0FEUgwAAB8AEE9Y
XF9TQl9bgC8DUENJMExQQ0JMUEMxAgpACsBbgUoELwNQQ0kwTFBDQkxQQzEAAEAQUEFSQwhQQlJD
CFBDUkMIUERSQwgAIFBFUkMIUEZSQwhQR1JDCFBIUkMIAEAgAAgACFhVU0IBW4JCCkxOS0EIX0hJ
RAxB0AwPCF9VSUQBFBFfRElTCH1QQVJDCoBQQVJDFAtfUFJTCKRQUlNBFDhfQ1JTCAhSVExBEQkK
BiMAABh5AItSVExBAUlSUTBwAElSUTB5AXtQQVJDCg8ASVJRMKRSVExBFBtfU1JTCYtoAUlSUTCC
SVJRMGB2YHBgUEFSQxQYX1NUQQigDHtQQVJDCoAApAoJoQSkCgtbgkMKTE5LQghfSElEDEHQDA8I
X1VJRAoCFBFfRElTCH1QQlJDCoBQQlJDFAtfUFJTCKRQUlNCFDhfQ1JTCAhSVExCEQkKBiMAABh5
AItSVExCAUlSUTBwAElSUTB5AXtQQlJDCg8ASVJRMKRSVExCFBtfU1JTCYtoAUlSUTCCSVJRMGB2
YHBgUEJSQxQYX1NUQQigDHtQQlJDCoAApAoJoQSkCgtbgkMKTE5LQwhfSElEDEHQDA8IX1VJRAoD
FBFfRElTCH1QQ1JDCoBQQ1JDFAtfUFJTCKRQUlNDFDhfQ1JTCAhSVExDEQkKBiMAABh5AItSVExD
AUlSUTBwAElSUTB5AXtQQ1JDCg8ASVJRMKRSVExDFBtfU1JTCYtoAUlSUTCCSVJRMGB2YHBgUENS
QxQYX1NUQQigDHtQQ1JDCoAApAoJoQSkCgtbgkMKTE5LRAhfSElEDEHQDA8IX1VJRAoEFBFfRElT
CH1QRFJDCoBQRFJDFAtfUFJTCKRQUlNEFDhfQ1JTCAhSVExEEQkKBiMAABh5AItSVExEAUlSUTBw
AElSUTB5AXtQRFJDCg8ASVJRMKRSVExEFBtfU1JTCYtoAUlSUTCCSVJRMGB2YHBgUERSQxQYX1NU
QQigDHtQRFJDCoAApAoJoQSkCgtbgkMKTE5LRQhfSElEDEHQDA8IX1VJRAoFFBFfRElTCH1QRVJD
CoBQRVJDFAtfUFJTCKRQUlNFFDhfQ1JTCAhSVExFEQkKBiMAABh5AItSVExFAUlSUTBwAElSUTB5
AXtQRVJDCg8ASVJRMKRSVExFFBtfU1JTCYtoAUlSUTCCSVJRMGB2YHBgUEVSQxQYX1NUQQigDHtQ
RVJDCoAApAoJoQSkCgtbgkMKTE5LRghfSElEDEHQDA8IX1VJRAoGFBFfRElTCH1QRlJDCoBQRlJD
FAtfUFJTCKRQUlNGFDhfQ1JTCAhSVExGEQkKBiMAABh5AItSVExGAUlSUTBwAElSUTB5AXtQRlJD
Cg8ASVJRMKRSVExGFBtfU1JTCYtoAUlSUTCCSVJRMGB2YHBgUEZSQxQYX1NUQQigDHtQRlJDCoAA
pAoJoQSkCgtbgkMKTE5LRwhfSElEDEHQDA8IX1VJRAoHFBFfRElTCH1QR1JDCoBQR1JDFAtfUFJT
CKRQUlNHFDhfQ1JTCAhSVExHEQkKBiMAABh5AItSVExHAUlSUTBwAElSUTB5AXtQR1JDCg8ASVJR
MKRSVExHFBtfU1JTCYtoAUlSUTCCSVJRMGB2YHBgUEdSQxQYX1NUQQigDHtQR1JDCoAApAoJoQSk
CgtbgkMKTE5LSAhfSElEDEHQDA8IX1VJRAoIFBFfRElTCH1QSFJDCoBQSFJDFAtfUFJTCKRQUlNI
FDhfQ1JTCAhSVExIEQkKBiMAABh5AItSVExIAUlSUTBwAElSUTB5AXtQSFJDCg8ASVJRMKRSVExI
FBtfU1JTCYtoAUlSUTCCSVJRMGB2YHBgUEhSQxQYX1NUQQigDHtQSFJDCoAApAoJoQSkCgtbgExQ
QzACCkAKwFuBIkxQQzAAAEAgSU9EMAhJT0QxCABAN1JBRU4BAA1SQ0JBEluCPURNQUMIX0hJRAxB
0AIACF9DUlMRKAolRwEAAAAAASBHAYEAgQABEUcBkwCTAAENRwHAAMAAASAqEAF5AFuCJkZXSEQI
X0hJRAwl1AgACF9DUlMREQoOhgkAAAAAAP8AAAABeQBbgkwKSFBFVAhfSElEDEHQAQMIX1VJRAAI
QlVGMBERCg6GCQABAADQ/gAEAAB5ABQnX1NUQQCgE5KVT1NZUwvRB6AISFBBRaQKD6EKoAhIUEFF
pAoLpAAURgVfQ1JTCKBJBEhQQUWKQlVGMAoESFBUMKARk0hQQVMBcAwAEND+SFBUMKASk0hQQVMK
AnAMACDQ/khQVDCgEpNIUEFTCgNwDAAw0P5IUFQwpEJVRjBbgkUKSVBJQwhfSElEC0HQCF9DUlMR
QQkKjUcBIAAgAAECRwEkACQAAQJHASgAKAABAkcBLAAsAAECRwEwADAAAQJHATQANAABAkcBOAA4
AAECRwE8ADwAAQJHAaAAoAABAkcBpACkAAECRwGoAKgAAQJHAawArAABAkcBsACwAAECRwG0ALQA
AQJHAbgAuAABAkcBvAC8AAECRwHQBNAEAQIiBAB5AFuCQwtMRFJDCF9ISUQMQdAMAghfVUlECgII
X0NSUxFGCQqSRwEuAC4AAQJHAU4ATgABAkcBYQBhAAEBRwFjAGMAAQFHAWUAZQABAUcBZwBnAAEB
RwFwAHAAAQFHAYAAgAABAUcBkgCSAAEBRwGyALIAAQJHAYAGgAYBIEcBABEAEQEQRwH/////AQFH
Af////8BAUcBAAQABAFURwFYBFgEAShHAQAFAAUBgEcBThZOFgECeQBbgiVSVENfCF9ISUQMQdAL
AAhfQ1JTERAKDUcBcABwAAEIIgABeQBbgi1USU1SCF9ISUQMQdABAAhfQ1JTERgKFUcBQABAAAEE
RwFQAFAAEAQiAQB5AFuCTwRDV0RUCF9ISUQMJdQ/DQhfQ0lEDEHQDAIIQlVGMBENCgpHAVQEVAQE
BHkAFBVfU1RBCKAKk1dEVEUBpAoPoQOkABQLX0NSUwikQlVGMFuCQIVTSU8xCF9ISUQMQdAMAghf
VUlECxEBCENSU18RJQoiRwEAAAAAAABHAQAAAAAAAEcBAAAAAAAARwEAAAAAAAB5ABRCEl9DUlMA
oEwEkJVTUDFPC/ADlFNQMU8K8ItDUlNfCgJHUEkwi0NSU18KBEdQSTGMQ1JTXwoHR1BJTHBTUDFP
R1BJMHBTUDFPR1BJMXAKAkdQSUygQgRJTzFCi0NSU18KCkdQMTCLQ1JTXwoMR1AxMYxDUlNfCg9H
UEwxcElPMUJHUDEwcElPMUJHUDExcElPMUxHUEwxoEIESU8zQotDUlNfChJHUDIwi0NSU18KFEdQ
MjGMQ1JTXwoXR1BMMnBJTzNCR1AyMHBJTzNCR1AyMXBJTzNMR1BMMqBCBElPMkKLQ1JTXwoaR1Az
MItDUlNfChxHUDMxjENSU18KH0dQTDNwSU8yQkdQMzBwSU8yQkdQMzFwSU8yTEdQTDOkQ1JTXwhE
Q0FUEioVCgIKAwEACv8K/wr/Cv8K/wr/CgUK/wr/Cv8KBQr/CgYK/wr/Cv8K/1sBTVVUMAAUIkVO
RkcBWyNNVVQw/w9wCodJTkRYcAqHSU5EWHBoTEROXxQTRVhGRwBwCqpJTkRYWydNVVQwFB1MUFRN
AUVORkdDR0xEaHtPUFQwCgJgRVhGR6RgFCxVSElEAUVORkdDR0xEaHtPUFQwCjhgRVhGR6AIYKQM
QdAFEKEHpAxB0AUBW4BJT0lEAVNQMU8KAluBEElPSUQBSU5EWAhEQVRBCFuGQA1JTkRYREFUQQEA
OExETl8IAEgMU0NGMQhTQ0YyCFNDRjMIU0NGNAhTQ0Y1CFNDRjYIABBDS0NGCAAwQUNUUggASBdJ
T0FICElPQUwISU9IMghJT0wyCABABklOVFIIABhETUNICABINVJHRTAIUkdFMQhSR0UyCFJHRTMI
UkdFNAhSR0U1CFJHRTYIUkdFNwhSR0U4CFJHRTkIADBPUFQwCE9QVDEIT1BUMghPUFQzCE9QVDQI
T1BUNQhPUFQ2CE9QVDcIT1BUOAhPUFQ5CBQPQ0dMRAGkg4hEQ0FUaAAURwhEU1RBAUVORkdDR0xE
aHBBQ1RSYEVYRkegB5NgCv+kAHtgAWCgEpVoChB9SU9TVHlgaABJT1NUoAVgpAoPoUcEoBiVaAoQ
oA57eQFoAElPU1QApAoNoQOkAKErfXlJT0FICggASU9BTGCgBWCkCg19eUlPSDIKCABJT0wyYKAF
YKQKDaQAFE8ERENOVAJFTkZHQ0dMRGigHJCVRE1DSAoEkpN7RE1DSAoDYQBSRE1BaGl1YXBpQUNU
UnlJT0FICghhfUlPQUxhYVJSSU9oaWEKCEVYRkcIQ1JTMRETChBHAQAAAAABACIAACoAAHkAi0NS
UzEKCUlSUU2MQ1JTMQoMRE1BTYtDUlMxCgJJTzExi0NSUzEKBElPMTKMQ1JTMQoHTEVOMQhDUlMy
ERsKGEcBAAAAAAEARwEAAAAAAQAiAAAqBAB5AItDUlMyChFJUlFFjENSUzIKFERNQUWLQ1JTMgoC
SU8yMYtDUlMyCgRJTzIyjENSUzIKB0xFTjKLQ1JTMgoKSU8zMYtDUlMyCgxJTzMyjENSUzIKD0xF
TjMIQ1JTNBERCg5HAQAAAAABACMAABl5AItDUlM0CglJUlFMi0NSUzQKAklPSEyLQ1JTNAoESU9S
TIxDUlM0CgZBTE1OjENSUzQKB0xFTkcUTQdEQ1JTAkVORkdDR0xEaHlJT0FICghJTzExfUlPQUxJ
TzExSU8xMXBJTzExSU8xMnAKCExFTjGgD0lOVFJ5AUlOVFJJUlFNoQdwAElSUU2gEpGURE1DSAoD
k2kAcABETUFNoRB7RE1DSAoDYXkBYURNQU1FWEZHpENSUzEURQpEQ1IyAkVORkdDR0xEaHlJT0FI
CghJTzIxfUlPQUxJTzIxSU8yMXBJTzIxSU8yMnAKCExFTjJ5SU9IMgoISU8zMX1JT0wySU8zMUlP
MzFwSU8yMUlPMzJwCghMRU4zoA9JTlRSeQFJTlRSSVJRRaEHcABJUlFFoBKRlERNQ0gKA5NpAHAA
RE1BRaEQe0RNQ0gKA2F5AWFETUFFRVhGR6RDUlMyFEQGRENSNAJFTkZHQ0dMRGh5SU9BSAoISU9I
TH1JT0FMSU9ITElPSExwSU9ITElPUkxwCghMRU5HoBpJTlRSe0lOVFIKD0lOVFJ5AUlOVFJJUlFM
oQdwAElSUUxFWEZHpENSUzQURQpEU1JTAqAWk2kKAqAQTFBUTUNHTERpRFNSMmhpoUYIi2gKCUlS
UU2MaAoMRE1BTYtoCgJJTzExRU5GR0NHTERpe0lPMTEK/0lPQUx6SU8xMQoISU9BSKASSVJRTYJJ
UlFNYHRgAUlOVFKhB3AASU5UUqASRE1BTYJETUFNYHRgAURNQ0ihCHAKBERNQ0hFWEZHRENOVGkB
cGlioAiUYgB0YgFiFEkKRFNSMgKLaAoRSVJRVIxoChRETUFUi2gKAklPVDGLaAoKSU9UMkVORkdD
R0xEaXtJT1QxCv9JT0FMeklPVDEKCElPQUh7SU9UMgr/SU9MMnpJT1QyCghJT0gyoBJJUlFUgklS
UVRgdGABSU5UUqEHcABJTlRSoBJETUFUgkRNQVRgdGABRE1DSKEIcAoERE1DSEVYRkdEQ05UaQFw
aWKgCJRiAHRiAWIURwZEU1I0AotoCgJJT0hMi2gKCUlSUUxFTkZHQ0dMRGl7SU9ITAr/SU9BTHpJ
T0hMCghJT0FIoBJJUlFMgklSUUxgdGABSU5UUqEHcABJTlRSRVhGR0RDTlRpAXBpYqAIlGIAdGIB
YghQTUZHABRCGFNJT1MBcA1TSU9TAFsxoEEXkpMKBWheLlNJTzFFTkZHCgqgSAiTaAF7Xi5TSU8x
T1BUNgrAXi5TSU8xT1BUNqAcS0JGR31eLlNJTzFPUFQ2ChBeLlNJTzFPUFQ2oRh7Xi5TSU8xT1BU
NgrvXi5TSU8xT1BUNqAcTVNGR31eLlNJTzFPUFQ2CiBeLlNJTzFPUFQ2oRh7Xi5TSU8xT1BUNgrf
Xi5TSU8xT1BUNqBKCZKVaAoDe14uU0lPMVJHRTAKn14uU0lPMVJHRTBwXi5TSU8xUkdFM2BbIgrI
oBxLQkZHfV4uU0lPMVJHRTAKQV4uU0lPMVJHRTChGHteLlNJTzFSR0UwCr5eLlNJTzFSR0UwoBxN
U0ZHfV4uU0lPMVJHRTAKIl4uU0lPMVJHRTChGHteLlNJTzFSR0UwCt1eLlNJTzFSR0UwcAr/Xi5T
SU8xT1BUM3AK/14uU0lPMU9QVDR9AV4uU0lPMU9QVDJeLlNJTzFPUFQyXi5TSU8xRVhGRxROCVNJ
T1cBcA1TSU9XAFsxXi5TSU8xRU5GRwoKe14uU0lPMU9QVDAK514uU0lPMU9QVDBwXi5TSU8xT1BU
M1BNRkdwCv9eLlNJTzFPUFQze14uU0lPMVJHRTAKn14uU0lPMVJHRTB7Xi5TSU8xT1BUNgrPXi5T
SU8xT1BUNnsK/l4uU0lPMU9QVDJeLlNJTzFPUFQyXi5TSU8xRVhGRxQoU0lPSACgEHtQTUZHCggA
hlBTMksKAqAQe1BNRkcKEACGUFMyTQoCW4JHB1BTMksIX0hJRAxB0AMDCF9DSUQMQdADCxQYX1NU
QQCgDXtJT1NUCwAEAKQKD6EDpAAIX0NSUxEYChVHAWAAYAAAAUcBZABkAAABIgIAeQAIX1BSUxET
ChAxAEtgAAFLZAABIgIAOHkAFAxfUFNXAXBoS0JGRxAJXAAIS0JGRwEUFC5QUzJLX1BSVwCkR1BS
VwodCgNbgksJUFMyTQhfSElEDEHQDwMIX0NJRAxB0A8TFBhfU1RBAKANe0lPU1QLAEAApAoPoQOk
AAhDUlMxEQgKBSIAEHkACENSUzIRGAoVRwFgAGAAAAFHAWQAZAAAASIAEHkAFB1fQ1JTAKAPe0lP
U1QLAAQApENSUzGhBqRDUlMyCF9QUlMRCwoIMQAiABA4eQAUDF9QU1cBcGhNU0ZHEAlcAAhNU0ZH
ARQULlBTMk1fUFJXAKRHUFJXCh0KA1uCTRFSTVNDCF9ISUQMQdAMAghfVUlEChAIQ1JTMRFGBwpy
RwEQABAAABBHASIAIgAAHkcBRABEAAAcRwFiAGIAAAJHAWUAZQAAC0cBcgByAAAORwGAAIAAAAFH
AYQAhAAAA0cBiACIAAABRwGMAIwAAANHAZAAkAAAEEcBogCiAAAeRwHgAOAAABBHAdAE0AQAAnkA
CENSUzIRRgYKYkcBEAAQAAAQRwEiACIAAB5HAUQARAAAHEcBcgByAAAORwGAAIAAAAFHAYQAhAAA
A0cBiACIAAABRwGMAIwAAANHAZAAkAAAEEcBogCiAAAeRwHgAOAAABBHAdAE0AQAAnkAFB1fQ1JT
AKAPe01CRUML//8ApENSUzGhBqRDUlMyW4IlQ09QUghfSElEDEHQDAQIX0NSUxEQCg1HAfAA8AAA
ECIAIHkAW4JADFVBUjEIX0hJRAxB0AUBCF9VSUQBFBNfU1RBAKReXi5TSU8xRFNUQQAUE19ESVMA
Xl4uU0lPMURDTlQAABQUX0NSUwCkXl4uU0lPMURDUlMAABQTX1NSUwFeXi5TSU8xRFNSU2gACF9Q
UlMRQwUKTzEARwH4A/gDAQgiEAAqAAAwRwH4A/gDAQgi+B4qAAAwRwH4AvgCAQgi+B4qAAAwRwHo
A+gDAQgi+B4qAAAwRwHoAugCAQgi+B4qAAA4eQAUFC5VQVIxX1BSVwCkR1BSVwoICgNbgjZQMFAx
CF9BRFIMAAAeABQPX1BSVwCkR1BSVwoLCgQUFl9QUlQAoApQSUNNpEFSMDGkUFIwMVuCH1VTQjEI
X0FEUgwBAB0AFA9fUFJXAKRHUFJXCgMKA1uCH1VTQjIIX0FEUgwCAB0AFA9fUFJXAKRHUFJXCgQK
A1uCH1VTQjMIX0FEUgwDAB0AFA9fUFJXAKRHUFJXCgwKA1uCH1VTQjQIX0FEUgwEAB0AFA9fUFJX
AKRHUFJXCg4KA1uCH1VTQjUIX0FEUgwBABoAFA9fUFJXAKRHUFJXCgUKA1uCH1VTQjYIX0FEUgwC
ABoAFA9fUFJXAKRHUFJXCiAKA1uCH1VTQjcIX0FEUgwDABoAFA9fUFJXAKRHUFJXCiUKA1uCTQ9S
UDAxCF9BRFIMAAAcAAhfSFBQEggECggKQAEAW4BQWENTAgpACsBbgUIFUFhDUwAAQAhMMFNFAQAH
AAgADUxBU1gBAAIABkhQQ0UBAClBQlBYAQACUERDWAEAAlBEU1gBAAEAKAAQUFNQWAEATzoAHkhQ
RVgBUE1FWAFbgSBQWENTQABASgABRUlGRAEABgA4AB5IUFNYAVBNU1gBW4IXUFhTWAhfQURSAAhf
UFJXEgYCCgkKBBQtSFBNRQigJlBNU1hwCshgohVgcAFQTVNYoAdQTVNYdmChBHAAYIZQWFNYCgIU
Fl9QUlQAoApQSUNNpEFSMDSkUFIwNFuCTQ9SUDAyCF9BRFIMAQAcAAhfSFBQEggECggKQAEAW4BQ
WENTAgpACsBbgUIFUFhDUwAAQAhMMFNFAQAHAAgADUxBU1gBAAIABkhQQ0UBAClBQlBYAQACUERD
WAEAAlBEU1gBAAEAKAAQUFNQWAEATzoAHkhQRVgBUE1FWAFbgSBQWENTQABASgABRUlGRAEABgA4
AB5IUFNYAVBNU1gBW4IXUFhTWAhfQURSAAhfUFJXEgYCCgkKBBQtSFBNRQigJlBNU1hwCshgohVg
cAFQTVNYoAdQTVNYdmChBHAAYIZQWFNYCgIUFl9QUlQAoApQSUNNpEFSMDWkUFIwNVuCTQ9SUDAz
CF9BRFIMAgAcAAhfSFBQEggECggKQAEAW4BQWENTAgpACsBbgUIFUFhDUwAAQAhMMFNFAQAHAAgA
DUxBU1gBAAIABkhQQ0UBAClBQlBYAQACUERDWAEAAlBEU1gBAAEAKAAQUFNQWAEATzoAHkhQRVgB
UE1FWAFbgSBQWENTQABASgABRUlGRAEABgA4AB5IUFNYAVBNU1gBW4IXUFhTWAhfQURSAAhfUFJX
EgYCCgkKBBQtSFBNRQigJlBNU1hwCshgohVgcAFQTVNYoAdQTVNYdmChBHAAYIZQWFNYCgIUFl9Q
UlQAoApQSUNNpEFSMDakUFIwNluCTQ9SUDA0CF9BRFIMAwAcAAhfSFBQEggECggKQAEAW4BQWENT
AgpACsBbgUIFUFhDUwAAQAhMMFNFAQAHAAgADUxBU1gBAAIABkhQQ0UBAClBQlBYAQACUERDWAEA
AlBEU1gBAAEAKAAQUFNQWAEATzoAHkhQRVgBUE1FWAFbgSBQWENTQABASgABRUlGRAEABgA4AB5I
UFNYAVBNU1gBW4IXUFhTWAhfQURSAAhfUFJXEgYCCgkKBBQtSFBNRQigJlBNU1hwCshgohVgcAFQ
TVNYoAdQTVNYdmChBHAAYIZQWFNYCgIUFl9QUlQAoApQSUNNpEFSMDekUFIwN1uCTQ9SUDA1CF9B
RFIMBAAcAAhfSFBQEggECggKQAEAW4BQWENTAgpACsBbgUIFUFhDUwAAQAhMMFNFAQAHAAgADUxB
U1gBAAIABkhQQ0UBAClBQlBYAQACUERDWAEAAlBEU1gBAAEAKAAQUFNQWAEATzoAHkhQRVgBUE1F
WAFbgSBQWENTQABASgABRUlGRAEABgA4AB5IUFNYAVBNU1gBW4IXUFhTWAhfQURSAAhfUFJXEgYC
CgkKBBQtSFBNRQigJlBNU1hwCshgohVgcAFQTVNYoAdQTVNYdmChBHAAYIZQWFNYCgIUFl9QUlQA
oApQSUNNpEFSMDikUFIwOFuCTQ9SUDA2CF9BRFIMBQAcAAhfSFBQEggECggKQAEAW4BQWENTAgpA
CsBbgUIFUFhDUwAAQAhMMFNFAQAHAAgADUxBU1gBAAIABkhQQ0UBAClBQlBYAQACUERDWAEAAlBE
U1gBAAEAKAAQUFNQWAEATzoAHkhQRVgBUE1FWAFbgSBQWENTQABASgABRUlGRAEABgA4AB5IUFNY
AVBNU1gBW4IXUFhTWAhfQURSAAhfUFJXEgYCCgkKBBQtSFBNRQigJlBNU1hwCshgohVgcAFQTVNY
oAdQTVNYdmChBHAAYIZQWFNYCgIUFl9QUlQAoApQSUNNpEFSMDmkUFIwOVuCTQ9SUDA3CF9BRFIM
BgAcAAhfSFBQEggECggKQAEAW4BQWENTAgpACsBbgUIFUFhDUwAAQAhMMFNFAQAHAAgADUxBU1gB
AAIABkhQQ0UBAClBQlBYAQACUERDWAEAAlBEU1gBAAEAKAAQUFNQWAEATzoAHkhQRVgBUE1FWAFb
gSBQWENTQABASgABRUlGRAEABgA4AB5IUFNYAVBNU1gBW4IXUFhTWAhfQURSAAhfUFJXEgYCCgkK
BBQtSFBNRQigJlBNU1hwCshgohVgcAFQTVNYoAdQTVNYdmChBHAAYIZQWFNYCgIUFl9QUlQAoApQ
SUNNpEFSMEWkUFIwRVuCTQ9SUDA4CF9BRFIMBwAcAAhfSFBQEggECggKQAEAW4BQWENTAgpACsBb
gUIFUFhDUwAAQAhMMFNFAQAHAAgADUxBU1gBAAIABkhQQ0UBAClBQlBYAQACUERDWAEAAlBEU1gB
AAEAKAAQUFNQWAEATzoAHkhQRVgBUE1FWAFbgSBQWENTQABASgABRUlGRAEABgA4AB5IUFNYAVBN
U1gBW4IXUFhTWAhfQURSAAhfUFJXEgYCCgkKBBQtSFBNRQigJlBNU1hwCshgohVgcAFQTVNYoAdQ
TVNYdmChBHAAYIZQWFNYCgIUFl9QUlQAoApQSUNNpEFSMEakUFIwRluCNVBFRzAIX0FEUgwAAAEA
FBZfUFJUAKAKUElDTaRBUjAypFBSMDJbgg1QRUdQCF9BRFIL//9bgiZQRUcxCF9BRFIMAQABABQW
X1BSVACgClBJQ02kQVIwQaRQUjBBW4ImUEVHMghfQURSDAIAAQAUFl9QUlQAoApQSUNNpEFSMEKk
UFIwQluCJlBFRzMIX0FEUgwAAAYAFBZfUFJUAKAKUElDTaRBUjBDpFBSMENbgg9CMEQ0CF9BRFIM
AAAEABBNEVxfR1BFFCZfTDFEAFwvBF9TQl9QQ0kwTFBDQlNJT0iGXC5fU0JfUFdSQgoCFCZfTDA4
AFwvBF9TQl9QQ0kwTFBDQlNJT0iGXC5fU0JfUFdSQgoCFBhfTDBCAIZcLwNfU0JfUENJMFAwUDEK
AhQYX0wwMwCGXC8DX1NCX1BDSTBVU0IxCgIUGF9MMDQAhlwvA19TQl9QQ0kwVVNCMgoCFBhfTDBD
AIZcLwNfU0JfUENJMFVTQjMKAhQYX0wwRQCGXC8DX1NCX1BDSTBVU0I0CgIUGF9MMDUAhlwvA19T
Ql9QQ0kwVVNCNQoCFBhfTDIwAIZcLwNfU0JfUENJMFVTQjYKAhQYX0wyNQCGXC8DX1NCX1BDSTBV
U0I3CgJbgi1QV1JCCF9ISUQMQdAMDAhfVUlECqoIX1NUQQoLFA9fUFJXAKRHUFJXCggKAxBCKFwA
W4BJT19UAQsAEQoQW4EkSU9fVAFUUlBJEAAQABAAEFRSUDAIAAgACAAIAAgACAAIAAhbgElPX0QB
CxAICgRbgQtJT19EAVRSUEQIW4BJT19IAQsAEAoEW4ELSU9fSAFUUlBICFuAUE1JTwFQTUJTCoBb
gSVQTUlPAQBAFAAQAANHUEUzAQBMCAABVVBSVwEALgABR1BFQwFbgR5QTUlPQQBAEAAQAANHUFMz
AQBMIAAJU0NJUwEABluAR1BJTwFHUEJTCmRbgUsPR1BJTwFHVTAwCEdVMDEIR1UwMghHVTAzCEdJ
TzAIR0lPMQhHSU8yCEdJTzMIACBHTDAwCEdMMDEIR0wwMghHUDI0AQACR1AyNwFHUDI4AQADAEAE
R0IwMAhHQjAxCEdCMDIIR0IwMwgAQAhHSVYwCEdJVjEIR0lWMghHSVYzCEdVMDQIR1UwNQhHVTA2
CEdVMDcIR0lPNAhHSU81CEdJTzYIR0lPNwhHTDA0CEdMMDUIR0wwNghHTDA3CAAgR1UwOAhHVTA5
CEdVMEEIR1UwQghHSU84CEdJTzkIR0lPQQhHSU9CCEdMMDgIR0wwOQhHTDBBCEdMMEIIW4BSQ1JC
AFNSQ0ILAEBbgUwKUkNSQhMAgAAIAIAAEACAAgJIUEFTAgAFSFBBRQEASAkAAQABU0FURAFTTUJE
AUhEQUQBAAtSUDFEAVJQMkQBUlAzRAFSUDREAVJQNUQBUlA2RAFSUDdEAVJQOEQBAEjAVVAwRAFV
UDFEAVVQMkQBVVAzRAFVUDREAVVQNUQBVVA2RAFVUDdEAVVQOEQBVVA5RAFVUEFEAVVQQkQBVVBD
RAFVUEREAQABAAEQiEYBLl9TQl9QQ0kwW4I4R0xBTghfQURSDAAAGQAUD19QUlcApEdQUlcKDQoE
W4BBQUFBAgrNAVuBDUFBQUEBAAdHQkVTAVuCSlNFSEMxCF9BRFIMAAAdAFuAUFdLRQIKYgoEW4EN
UFdLRQMAAVBXVUMIFBdfUFNXAaAIaHD/UFdVQ6EHcABQV1VDFAlfUzNEAKQKAhQJX1M0RACkCgJb
gkJNSFVCTghfQURSAFuCRExQUjAxCF9BRFIBFBhfVVBDCAhVUENBEgcECv8AAACkVVBDQRQnX1BM
RAgIUExEUBIWARETChCBAAAAAAAAADAcAAAAAAAApFBMRFBbgk4EUFIxMQhfQURSARQZX1VQQwgI
VVBDUBIIBAr/Cv8AAKRVUENQFCdfUExECAhQTERQEhYBERMKEIEAAAAAAAAA4RwAAAAAAACkUExE
UFuCTwRQUjEyCF9BRFIKAhQZX1VQQwgIVVBDUBIIBAr/Cv8AAKRVUENQFCdfUExECAhQTERQEhYB
ERMKEIEAAAAAAAAA4R0AAAAAAACkUExEUFuCTwRQUjEzCF9BRFIKAxQZX1VQQwgIVVBDUBIIBAr/
Cv8AAKRVUENQFCdfUExECAhQTERQEhYBERMKEIEAAAAAAAAA4R0AAAAAAACkUExEUFuCSwxQUjE0
CF9BRFIKBBQZX1VQQwgIVVBDUBIIBAr/Cv8AAKRVUENQFCdfUExECAhQTERQEhYBERMKEIEAAAAA
AAAA4R4AAAAAAACkUExEUAZTQlYxU0RHVhRCB19EU00MoEgGk2gREwoQj3D8pXWHpku9DLqQoexy
+AhfVF8wAHCZagBfVF8woBiTX1RfMACgCZNpAaQRAwEHoQakEQMBAKEooBaTX1RfMAGgCpNTREdW
Cv+kAKEDpAGhD6ANk19UXzAKAqRTREdWpABbgksMUFIxNQhfQURSCgUUGV9VUEMICFVQQ1ASCAQK
/wr/AACkVVBDUBQnX1BMRAgIUExEUBIWARETChCBAAAAAAAAALEeAAAAAAAApFBMRFAGU0JWMlNE
R1YUQgdfRFNNDKBIBpNoERMKEI9w/KV1h6ZLvQy6kKHscvgIX1RfMABwmWoAX1RfMKAYk19UXzAA
oAmTaQGkEQMBB6EGpBEDAQChKKAWk19UXzABoAqTU0RHVgr/pAChA6QBoQ+gDZNfVF8wCgKkU0RH
VqQAW4JLDFBSMTYIX0FEUgoGFBlfVVBDCAhVUENQEggECv8K/wAApFVQQ1AUJ19QTEQICFBMRFAS
FgEREwoQgQAAAAAAAACxHgAAAAAAAKRQTERQBlNCVjFTREdWFEIHX0RTTQygSAaTaBETChCPcPyl
dYemS70MupCh7HL4CF9UXzAAcJlqAF9UXzCgGJNfVF8wAKAJk2kBpBEDAQehBqQRAwEAoSigFpNf
VF8wAaAKk1NER1YK/6QAoQOkAaEPoA2TX1RfMAoCpFNER1akAFuCSwxQUjE3CF9BRFIKBxQZX1VQ
QwgIVVBDUBIIBAr/Cv8AAKRVUENQFCdfUExECAhQTERQEhYBERMKEIEAAAAAAAAAsR4AAAAAAACk
UExEUAZTQlYyU0RHVhRCB19EU00MoEgGk2gREwoQj3D8pXWHpku9DLqQoexy+AhfVF8wAHCZagBf
VF8woBiTX1RfMACgCZNpAaQRAwEHoQakEQMBAKEooBaTX1RfMAGgCpNTREdWCv+kAKEDpAGhD6AN
k19UXzAKAqRTREdWpABbgk8EUFIxOAhfQURSCggUGV9VUEMICFVQQ1ASCAQK/wr/AACkVVBDUBQn
X1BMRAgIUExEUBIWARETChCBAAAAAAAAALEeAAAAAAAApFBMRFAUD19QUlcApEdQUlcKDQoDW4JA
OkVIQzIIX0FEUgwAABoAW4BQV0tFAgpiCgRbgQ1QV0tFAwABUFdVQwYUF19QU1cBoAhocP9QV1VD
oQdwAFBXVUMUCV9TM0QApAoCFAlfUzREAKQKAluCSDNIVUJOCF9BRFIAW4JKMlBSMDEIX0FEUgEU
GF9VUEMICFVQQ0ESBwQK/wAAAKRVUENBFCdfUExECAhQTERQEhYBERMKEIEAAAAAAAAAMBwAAAAA
AACkUExEUFuCTgRQUjExCF9BRFIBFBlfVVBDCAhVUENQEggECv8K/wAApFVQQ1AUJ19QTEQICFBM
RFASFgEREwoQgQAAAAAAAADhHAAAAAAAAKRQTERQW4JLDFBSMTIIX0FEUgoCFBlfVVBDCAhVUENQ
EggECv8K/wAApFVQQ1AUJ19QTEQICFBMRFASFgEREwoQgQAAAAAAAADhHQAAAAAAAKRQTERQBlNC
VjFTREdWFEIHX0RTTQygSAaTaBETChCPcPyldYemS70MupCh7HL4CF9UXzAAcJlqAF9UXzCgGJNf
VF8wAKAJk2kBpBEDAQehBqQRAwEAoSigFpNfVF8wAaAKk1NER1YK/6QAoQOkAaEPoA2TX1RfMAoC
pFNER1akAFuCSwxQUjEzCF9BRFIKAxQZX1VQQwgIVVBDUBIIBAr/Cv8AAKRVUENQFCdfUExECAhQ
TERQEhYBERMKEIEAAAAAAAAA4R0AAAAAAACkUExEUAZTQlYyU0RHVhRCB19EU00MoEgGk2gREwoQ
j3D8pXWHpku9DLqQoexy+AhfVF8wAHCZagBfVF8woBiTX1RfMACgCZNpAaQRAwEHoQakEQMBAKEo
oBaTX1RfMAGgCpNTREdWCv+kAKEDpAGhD6ANk19UXzAKAqRTREdWpABbgk8EUFIxNAhfQURSCgQU
GV9VUEMICFVQQ1ASCAQK/wr/AACkVVBDUBQnX1BMRAgIUExEUBIWARETChCBAAAAAAAAAOEeAAAA
AAAApFBMRFBbgk8EUFIxNQhfQURSCgUUGV9VUEMICFVQQ1ASCAQK/wr/AACkVVBDUBQnX1BMRAgI
UExEUBIWARETChCBAAAAAAAAALEeAAAAAAAApFBMRFBbgk8EUFIxNghfQURSCgYUGV9VUEMICFVQ
Q1ASCAQK/wr/AACkVVBDUBQnX1BMRAgIUExEUBIWARETChCBAAAAAAAAALEeAAAAAAAApFBMRFAU
D19QUlcApEdQUlcKDQoDW4JJZVhIQ18IX0FEUgwAABQAW4BYSENBAgpACgRbgQ1YSENBAgALU1dB
WAEIU1NTVAAUCV9TMFcApAoDFAxfRFNXC3BpU1NTVBQGX1BTMAgUFF9QUzMIoA2TU1NTVABwAVNX
QVhbgFhQUlQCCnQKbFuBK1hQUlQDAAhQTUVFAQAGUE1FUwEAQC1QUjJfIFBSMk0gUFIzXyBQUjNN
IAhYUlNUABQiQ1VJRAmgGZNoERMKEKkSlXwFF7RMr31QaiQjq3GkAaQAFEkFUE9TQwuKagBDRFcx
imoKCENEVzOgEJKTaQF9Q0RXMQoIQ0RXMaASk1hIQ0kAfUNEVzEKAkNEVzGgHJJ7Q0RXMQEAoAx7
Q0RXMwEARVNFTKEFWFNFTKRqFEMGWFNFTAigSwWRk1hIQ0kKApNYSENJCgNwAVhVU0JwAVhSU1Rw
AGB7UFIzXwzw////YH1gWEhQTWB7YFBSM01QUjNfcABge1BSMl8M8P///2B9YFhIUE1ge2BQUjJN
UFIyXxQ/RVNFTAigOJGTWEhDSQoCk1hIQ0kKA3tQUjNfDPD///9QUjNfe1BSMl8M8P///1BSMl9w
AFhVU0JwAFhSU1QUGVhXQUsIoBKRk1hVU0IBk1hSU1QBWFNFTBQJX1MzRACkCgIUCV9TNEQApAoC
W4JHRVJIVUIIX0FEUgBbgkUISFNQMQhfQURSARQsX1VQQwgIVVBDUBIIBAr/CgMAAKASkntQUjJf
AQBwAIhVUENQAACkVVBDUBRLBF9QTEQICFBMRFASFgEREwoQAcZyAAAAAABpDIAAAAAAAI2DiFBM
RFAAAApAVklTX6ATkntQUjJfAQB7VklTXwBWSVNfpFBMRFBbgkgISFNQMghfQURSCgIULV9VUEMI
CFVQQ1ASCAQK/woDAACgE5J7UFIyXwoCAHAAiFVQQ1AAAKRVUENQFEwEX1BMRAgIUExEUBIWARET
ChABxnIAAAAAAGkMAAEAAAAAjYOIUExEUAAACkBWSVNfoBSSe1BSMl8KAgB7VklTXwBWSVNfpFBM
RFBbgkgISFNQMwhfQURSCgMULV9VUEMICFVQQ1ASCAQK/woDAACgE5J7UFIyXwoEAHAAiFVQQ1AA
AKRVUENQFEwEX1BMRAgIUExEUBIWARETChABxnIAAAAAAGkMgAEAAAAAjYOIUExEUAAACkBWSVNf
oBSSe1BSMl8KBAB7VklTXwBWSVNfpFBMRFBbgkgISFNQNAhfQURSCgQULV9VUEMICFVQQ1ASCAQK
/woDAACgE5J7UFIyXwoIAHAAiFVQQ1AAAKRVUENQFEwEX1BMRAgIUExEUBIWARETChABxnIAAAAA
AGkMAAIAAAAAjYOIUExEUAAACkBWSVNfoBSSe1BSMl8KCAB7VklTXwBWSVNfpFBMRFBbgkYIU1NQ
MQhfQURSCgUULF9VUEMICFVQQ1ASCAQK/woDAACgEpJ7UFIzXwEAcACIVVBDUAAApFVQQ1AUSwRf
UExECAhQTERQEhYBERMKEAHGcgAAAAAAaQyAAAAAAACNg4hQTERQAAAKQFZJU1+gE5J7UFIzXwEA
e1ZJU18AVklTX6RQTERQW4JICFNTUDIIX0FEUgoGFC1fVVBDCAhVUENQEggECv8KAwAAoBOSe1BS
M18KAgBwAIhVUENQAACkVVBDUBRMBF9QTEQICFBMRFASFgEREwoQAcZyAAAAAABpDAABAAAAAI2D
iFBMRFAAAApAVklTX6AUkntQUjNfCgIAe1ZJU18AVklTX6RQTERQW4JICFNTUDMIX0FEUgoHFC1f
VVBDCAhVUENQEggECv8KAwAAoBOSe1BSM18KBABwAIhVUENQAACkVVBDUBRMBF9QTEQICFBMRFAS
FgEREwoQAcZyAAAAAABpDIABAAAAAI2DiFBMRFAAAApAVklTX6AUkntQUjNfCgQAe1ZJU18AVklT
X6RQTERQW4JICFNTUDQIX0FEUgoIFC1fVVBDCAhVUENQEggECv8KAwAAoBOSe1BSM18KCABwAIhV
UENQAACkVVBDUBRMBF9QTEQICFBMRFASFgEREwoQAcZyAAAAAABpDAACAAAAAI2DiFBMRFAAAApA
VklTX6AUkntQUjNfCggAe1ZJU18AVklTX6RQTERQFA9fUFJXAKRHUFJXCg0KA1uCTwRIREVGCF9B
RFIMAAAbAFuASERBUgIKTAoQW4EiSERBUgJEQ0tBAQAHRENLTQEABkRDS1MBADAAD1BNRVMBFA9f
UFJXAKRHUFJXCg0KBFuCD1NBVDAIX0FEUgwCAB8AW4IPU0FUMQhfQURSDAUAHwBbgkRHU0JVUwhf
QURSDAMAHwBbgFNNQlACCkAKwFuBDVNNQlADAAJJMkNFAVuAU01QQgIKIAoEW4ENU01QQgMABVNC
QVILW4BTTUJJAXlTQkFSCgUAChBbgTpTTUJJAUhTVFMIAAhIQ09OCEhDT00IVFhTQQhEQVQwCERB
VDEISEJEUghQRUNSCFJYU0EIU0RBVBAURARTU1hCCqAHU1RSVKQAcABJMkNFcAq/SFNUU3BoVFhT
QXBpSENPTXAKSEhDT06gEkNPTVB9SFNUUwr/SFNUU6QBpAAUSARTUlhCCaAJU1RSVKQL//9wAEky
Q0VwCr9IU1RTcH1oAQBUWFNBcApESENPTqAVQ09NUH1IU1RTCv9IU1RTpERBVDCkC///FEoEU1dS
QgugB1NUUlSkAHAASTJDRXAKv0hTVFNwaFRYU0FwaUhDT01wakRBVDBwCkhIQ09OoBJDT01QfUhT
VFMK/0hTVFOkAaQAFE4EU1JEQgqgCVNUUlSkC///cABJMkNFcAq/SFNUU3B9aAEAVFhTQXBpSENP
TXAKSEhDT06gFUNPTVB9SFNUUwr/SFNUU6REQVQwpAv//xRIBVNXUlcLoAdTVFJUpABwAEkyQ0Vw
Cr9IU1RTcGhUWFNBcGlIQ09Ne2oK/0RBVDF7emoKCAAK/0RBVDBwCkxIQ09OoBJDT01QfUhTVFMK
/0hTVFOkAaQAFEoFU1JEVwqgCVNUUlSkC///cABJMkNFcAq/SFNUU3B9aAEAVFhTQXBpSENPTXAK
TEhDT06gH0NPTVB9SFNUUwr/SFNUU6R9eURBVDAKCABEQVQxAKQM/////xRKCVNCTFcMoAdTVFJU
pABwa0kyQ0VwCr9IU1RTcGhUWFNBcGlIQ09NcIdqREFUMHAAYXCDiGoAAEhCRFJwClRIQ09OokEE
lIdqYXALoA9gohKQkntIU1RTCoAAYHZgWyEKMqAJkmBLSUxMpABwCoBIU1RTdWGgD5SHamFwg4hq
YQBIQkRSoBJDT01QfUhTVFMK/0hTVFOkAaQAFEANU0JMUgsIVEJVRhEECwABoAdTVFJUpABwakky
Q0VwCr9IU1RTcH1oAQBUWFNBcGlIQ09NcApUSENPTnALoA9gohKQkntIU1RTCoAAYHZgWyEKMqAJ
kmBLSUxMpABwREFUMIhUQlVGAABwCoBIU1RTcAFhokMElWGDiFRCVUYAAHALoA9gohKQkntIU1RT
CoAAYHZgWyEKMqAJkmBLSUxMpABwSEJEUohUQlVGYQBwCoBIU1RTdWGgFUNPTVB9SFNUUwr/SFNU
U6RUQlVGpAAUTwRTVFJUCHAKyGCiHWCgFXtIU1RTCkAAdmBbIgGgBpNgAKQBoQRwAGBwC6APYKIe
YKAXe0hTVFMBAHZgWyEKMqAIk2AAS0lMTKEDpACkARQtQ09NUAhwC6APYKIfYKALe0hTVFMKAgCk
AaEQdmBbIQoyoAiTYABLSUxMpAAUHEtJTEwIfUhDT04KAkhDT059SFNUUwr/SFNUUxBMFi8DX1NC
X1BDSTBMUENCW4BDUFNCAAwYbiKeChBbgUwFQ1BTQgBSVENYAVNCQjAHU0JCMQhTQkIyCFNCQjMI
U0JCNAhTQkI1CFNCQjYIU0JCNwhTQkI4CFNCQjkIU0JCQQhTQkJCCFNCQkMIU0JCRAhTQkJFCFNC
QkYIFBJTUFRTAXABU0xQWHABU0xQRRRFBVNXQUsBUDhYSAB5aAoEAHAAU0xQRaAFUlRDWKE3oAVQ
RVhToS+gBVBNRVOhJ6AFUENFU6EfoAVSSVNUoRegDF5eLkdMQU5HQkVToQiGUFdSQgoCW4BTTUlF
AVBNQlMKBFuBIlNNSUUBAApSVENTAQADUEVYUwFXQUtTAQAIUFdCVAEAB1uAU0xQUgFTTUNSCghb
gRZTTFBSAQAEU0xQRQEAH1NMUFgBABtbgEdQRTABR1BFUgoIW4EiR1BFMAEACFJJU1QBUENFUwEA
AVBNRVMBAAFQTUIwAQAyEB8vA19TQl9QQ0kwUlAwMRQPX1BSVwCkR1BSVwoJCgQQHy8DX1NCX1BD
STBSUDAyFA9fUFJXAKRHUFJXCgkKBBAfLwNfU0JfUENJMFJQMDMUD19QUlcApEdQUlcKCQoEEB8v
A19TQl9QQ0kwUlAwNBQPX1BSVwCkR1BSVwoJCgQQHy8DX1NCX1BDSTBSUDA1FA9fUFJXAKRHUFJX
CgkKBBAfLwNfU0JfUENJMFJQMDYUD19QUlcApEdQUlcKCQoEEB8vA19TQl9QQ0kwUlAwNxQPX1BS
VwCkR1BSVwoJCgQQHy8DX1NCX1BDSTBSUDA4FA9fUFJXAKRHUFJXCgkKBFuALwRfU0JfUENJMExQ
Q0JMUENSAgqACgRbgUgGXC8EX1NCX1BDSTBMUENCTFBDUgFDQURSAwABQ0JEUgMAAUxURFICAAJG
RERSAQADQ0FMRQFDQkxFAUxUTEUBRkRMRQEABEdMTEUBR0hMRQFLQ0xFAU1DTEUBQzFMRQFDMkxF
AQACFEsJVVhEVgFwCv9gCF9UXzAAcHJoAABfVF8woAyTX1RfMAv4A3AAYKFBB6AMk19UXzAL+AJw
AWChQQagDZNfVF8wCyACcAoCYKFABaANk19UXzALKAJwCgNgoT+gDZNfVF8wCzgCcAoEYKEvoA2T
X1RfMAvoAnAKBWChH6ANk19UXzALOANwCgZgoQ+gDZNfVF8wC+gDcAoHYKRgFEIiUlJJTwQIX1Rf
MABwcmgAAF9UXzCgKpNfVF8wAHAAQ0FMRXBVWERWamCgDJKTYAr/cGBDQURSoAhpcAFDQUxFoUAe
oCqTX1RfMAFwAENCTEVwVVhEVmpgoAySk2AK/3BgQ0JEUqAIaXABQ0JMRaFCG6A/k19UXzAKAnAA
TFRMRaAMk2oLeANwAExURFKgDJNqC3gCcAFMVERSoA2Tagu8A3AKAkxURFKgCGlwAUxUTEWhTxag
MZNfVF8wCgNwAEZETEWgDJNqC/ADcABGRERSoAyTagtwA3ABRkREUqAIaXABRkRMRaFKE6A4k19U
XzAKCKAXk2oLAAKgCGlwAUdMTEWhB3AAR0xMRaAXk2oLCAKgCGlwAUdITEWhB3AAR0hMRaFOD6A4
k19UXzAKCaAXk2oLAAKgCGlwAUdMTEWhB3AAR0xMRaAXk2oLCAKgCGlwAUdITEWhB3AAR0hMRaFC
DKAkk19UXzAKCqAbkZNqCmCTagpkoAhpcAFLQ0xFoQdwAEtDTEWhSgmgJJNfVF8wCgugG5GTagpi
k2oKZqAIaXABTUNMRaEHcABNQ0xFoUIHoDaTX1RfMAoMoBaTagouoAhpcAFDMUxFoQdwAEMxTEWg
FpNqCk6gCGlwAUMyTEWhB3AAQzJMRaE4oDaTX1RfMAoNoBaTagouoAhpcAFDMUxFoQdwAEMxTEWg
FpNqCk6gCGlwAUMyTEWhB3AAQzJMRRQGUkRNQQMQQwwuX1NCX1BDSTAIUEEwSAAIUEExSAAIUEEy
SAAIUEEzSAAIUEE0SAAIUEE1SAAIUEE2SAAURgROUFRTAXBQTTBIUEEwSHBQTTFIUEExSHBQTTJI
UEEySHBQTTNIUEEzSHBQTTRIUEE0SHBQTTVIUEE1SHBQTTZIUEE2SBRGBE5XQUsBcFBBMEhQTTBI
cFBBMUhQTTFIcFBBMkhQTTJIcFBBM0hQTTNIcFBBNEhQTTRIcFBBNUhQTTVIcFBBNkhQTTZIEB8v
A19TQl9QQ0kwUEVHMBQPX1BSVwCkR1BSVwoJCgQQPS8EX1NCX1BDSTBQRUcwUEVHUFuAREdGWAIA
CvBbgQ5ER0ZYEwBIBUxOS1YIFA9fUFJXAKRHUFJXCgkKBBAfLwNfU0JfUENJMFBFRzEUD19QUlcA
pEdQUlcKCQoEEB8vA19TQl9QQ0kwUEVHMhQPX1BSVwCkR1BSVwoJCgQQHy8DX1NCX1BDSTBQRUcz
FA9fUFJXAKRHUFJXCgkKBBCBcwEuX1NCX1BDSTBbgoNyAUdGWDAIX0FEUgwAAAIAFCVQQ1BDAKAY
RUNPTnAKAl5eLwNMUENCSF9FQ1NMUENFQ1NUCm8UJlBBUFIAoBtFQ09OpHheXi8DTFBDQkhfRUNN
Q0FQCmQAAKEDpAAUJl9ET1MBcHtoCgcARFNFTqAVk3toCgMAAKAMWxJIRE9TAEhET1MURlFfRE9E
AKAMWxJJREFCAElEQUKhSAtwAE5ESUSgFZKTRElETABwU0RETERJRExESUQxoBWSk0RETDIAcFNE
RExEREwyRElEMqAVkpNEREwzAHBTRERMRERMM0RJRDOgFZKTRERMNABwU0RETERETDRESUQ0oBWS
k0RETDUAcFNERExEREw1RElENaAVkpNEREw2AHBTRERMRERMNkRJRDagFZKTRERMNwBwU0RETERE
TDdESUQ3oBWSk0RETDgAcFNERExEREw4RElEOKAsk05ESUQBCFRNUDESBwEM/////3B9DAAAAQBE
SUQxAIhUTVAxAACkVE1QMaBGBJNORElECgIIVE1QMhIMAgz/////DP////9wfQwAAAEARElEMQCI
VE1QMgAAcH0MAAABAERJRDIAiFRNUDIBAKRUTVAyoE8Fk05ESUQKAwhUTVAzEhEDDP////8M////
/wz/////cH0MAAABAERJRDEAiFRNUDMAAHB9DAAAAQBESUQyAIhUTVAzAQBwfQwAAAEARElEMwCI
VE1QMwoCAKRUTVAzoEgHk05ESUQKBAhUTVA0EhYEDP////8M/////wz/////DP////9wfQwAAAEA
RElEMQCIVE1QNAAAcH0MAAABAERJRDIAiFRNUDQBAHB9DAAAAQBESUQzAIhUTVA0CgIAcH0MAAAB
AERJRDQAiFRNUDQKAwCkVE1QNKBBCZNORElECgUIVE1QNRIbBQz/////DP////8M/////wz/////
DP////9wfQwAAAEARElEMQCIVE1QNQAAcH0MAAABAERJRDIAiFRNUDUBAHB9DAAAAQBESUQzAIhU
TVA1CgIAcH0MAAABAERJRDQAiFRNUDUKAwBwfQwAAAEARElENQCIVE1QNQoEAKRUTVA1oEoKk05E
SUQKBghUTVA2EiAGDP////8M/////wz/////DP////8M/////wz/////cH0MAAABAERJRDEAiFRN
UDYAAHB9DAAAAQBESUQyAIhUTVA2AQBwfQwAAAEARElEMwCIVE1QNgoCAHB9DAAAAQBESUQ0AIhU
TVA2CgMAcH0MAAABAERJRDUAiFRNUDYKBABwfQwAAAEARElENgCIVE1QNgoFAKRUTVA2oEMMk05E
SUQKBwhUTVA3EiUHDP////8M/////wz/////DP////8M/////wz/////DP////9wfQwAAAEARElE
MQCIVE1QNwAAcH0MAAABAERJRDIAiFRNUDcBAHB9DAAAAQBESUQzAIhUTVA3CgIAcH0MAAABAERJ
RDQAiFRNUDcKAwBwfQwAAAEARElENQCIVE1QNwoEAHB9DAAAAQBESUQ2AIhUTVA3CgUAcH0MAAAB
AERJRDcAiFRNUDcKBgCkVE1QN6BMDZNORElECggIVE1QOBIqCAz/////DP////8M/////wz/////
DP////8M/////wz/////DP////9wfQwAAAEARElEMQCIVE1QOAAAcH0MAAABAERJRDIAiFRNUDgB
AHB9DAAAAQBESUQzAIhUTVA4CgIAcH0MAAABAERJRDQAiFRNUDgKAwBwfQwAAAEARElENQCIVE1Q
OAoEAHB9DAAAAQBESUQ2AIhUTVA4CgUAcH0MAAABAERJRDcAiFRNUDgKBgBwfQwAAAEARElEOACI
VE1QOAoHAKRUTVA4oBaTTkRJRAoJoA1bEkhXSUQApEhXSUSkEgUBCwAEW4JMB0REMDEUHF9BRFII
oAmTRElEMQCkAaELpHsL//9ESUQxABQPX0RDUwCkQ0REU0RJRDEUKF9ER1MAoBiQk3tTR01ECn8A
AVsSU05YRACkTlhEMaRORERTRElEMRQfX0RTUwGgGJN7aAwAAADAAAwAAADAcE5TVEVDU1RFW4JD
HUREMDIUHV9BRFIIoAqTRElEMgCkCgKhC6R7C///RElEMgAUGV9EQ1MAoAmTTElEUwCkAKRDRERT
RElEMhQoX0RHUwCgGJCTe1NHTUQKfwABWxJTTlhEAKROWEQypE5ERFNESUQyFB9fRFNTAaAYk3to
DAAAAMAADAAAAMBwTlNURUNTVEUUQBJfQkNMAKBFDl9PU0kNV2luZG93cyAyMDEyAKQSTwxnClAK
MgABCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwoc
Ch0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgK
OQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApV
ClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkoTKkEi8XClAKMgAKBQoKCg8KFAoZCh4KIwoo
Ci0KMgo3CjwKQQpGCksKUApVCloKXwpkFB5fQkNNAaAXkJKVaACSlGgKZEFJTlQBaHBoQlJUTBQL
X0JRQwCkQlJUTFuCSghERDAzFB1fQURSCKAKk0RJRDMApAoDoQukewv//0RJRDMAFBxfRENTAKAK
k0RJRDMApAoLoQqkQ0REU0RJRDMUKF9ER1MAoBiQk3tTR01ECn8AAVsSU05YRACkTlhEM6RORERT
RElEMxQfX0RTUwGgGJN7aAwAAADAAAwAAADAcE5TVEVDU1RFW4JKCEREMDQUHV9BRFIIoAqTRElE
NACkCgShC6R7C///RElENAAUHF9EQ1MAoAqTRElENACkCguhCqRDRERTRElENBQoX0RHUwCgGJCT
e1NHTUQKfwABWxJTTlhEAKROWEQ0pE5ERFNESUQ0FB9fRFNTAaAYk3toDAAAAMAADAAAAMBwTlNU
RUNTVEVbgkoIREQwNRQdX0FEUgigCpNESUQ1AKQKBaELpHsL//9ESUQ1ABQcX0RDUwCgCpNESUQ1
AKQKC6EKpENERFNESUQ1FChfREdTAKAYkJN7U0dNRAp/AAFbElNOWEQApE5YRDWkTkREU0RJRDUU
H19EU1MBoBiTe2gMAAAAwAAMAAAAwHBOU1RFQ1NURVuCSghERDA2FB1fQURSCKAKk0RJRDYApAoG
oQukewv//0RJRDYAFBxfRENTAKAKk0RJRDYApAoLoQqkQ0REU0RJRDYUKF9ER1MAoBiQk3tTR01E
Cn8AAVsSU05YRACkTlhENqRORERTRElENhQfX0RTUwGgGJN7aAwAAADAAAwAAADAcE5TVEVDU1RF
W4JKCEREMDcUHV9BRFIIoAqTRElENwCkCgehC6R7C///RElENwAUHF9EQ1MAoAqTRElENwCkCguh
CqRDRERTRElENxQoX0RHUwCgGJCTe1NHTUQKfwABWxJTTlhEAKROWEQ3pE5ERFNESUQ3FB9fRFNT
AaAYk3toDAAAAMAADAAAAMBwTlNURUNTVEVbgkoIREQwOBQdX0FEUgigCpNESUQ4AKQKCKELpHsL
//9ESUQ4ABQcX0RDUwCgCpNESUQ4AKQKC6EKpENERFNESUQ4FChfREdTAKAYkJN7U0dNRAp/AAFb
ElNOWEQApE5YRDikTkREU0RJRDgUH19EU1MBoBiTe2gMAAAAwAAMAAAAwHBOU1RFQ1NURRROBlNE
REwBdU5ESURwe2gLDw8AYH0MAAAAgGBhoAmTRElETGCkYaAJk0RETDJgpGGgCZNEREwzYKRhoAmT
RERMNGCkYaAJk0RETDVgpGGgCZNEREw2YKRhoAmTRERMN2CkYaAJk0RETDhgpGGkABRCB0NERFMB
cHtoCw8PAGCgB5MAYKQKHaAKk0NBRExgpAofoAqTQ0FMMmCkCh+gCpNDQUwzYKQKH6AKk0NBTDRg
pAofoAqTQ0FMNWCkCh+gCpNDQUw2YKQKH6AKk0NBTDdgpAofoAqTQ0FMOGCkCh+kCh0USAZORERT
AXB7aAsPDwBgoAaTAGCkAKAJk05BRExgpAGgCZNOREwyYKQBoAmTTkRMM2CkAaAJk05ETDRgpAGg
CZNOREw1YKQBoAmTTkRMNmCkAaAJk05ETDdgpAGgCZNOREw4YKQBpAAQJF5eUENJMFuATUNIUAIK
QArAW4EQTUNIUAAAQDBUQVNNCgAGW4BJR0RQAgpACsBbgUUFSUdEUAAAQAkAAUdJVkQBAAJHVU1B
AwAJAARHTUZOAQAbAEBGQVNMRQgAGEdTU0UBR1NTQg5HU0VTAQAwAAxDRFZMAQADABhMQlBDCAAw
QVNMUyBbgElHRE0AQVNMQgsAIFuBSBlJR0RNAFNJR05ACFNJWkUgT1ZFUiBTVkVSQBBWVkVSQAhH
VkVSQAhNQk9YIERNT0QgAEBQRFJEWSBDU1RTIENFVlQgAEAKRElETCBEREwyIERETDMgRERMNCBE
REw1IERETDYgRERMNyBEREw4IENQREwgQ1BMMiBDUEwzIENQTDQgQ1BMNSBDUEw2IENQTDcgQ1BM
OCBDQURMIENBTDIgQ0FMMyBDQUw0IENBTDUgQ0FMNiBDQUw3IENBTDggTkFETCBOREwyIE5ETDMg
TkRMNCBOREw1IE5ETDYgTkRMNyBOREw4IEFTTFAgVElEWCBDSFBEIENMSUQgQ0RDSyBTWFNXIEVW
VFMgQ05PVCBOUkRZIABAHlNDSUUBR0VGQwRHWEZDA0dFU0YIABBQQVJNIERTTFAgAEB6QVJEWSBB
U0xDIFRDSEUgQUxTSSBCQ0xQIFBGSVQgQ0JMViBCQ0xNQBRDUEZNIEVQRk0gUExVVEAlUEZNQiBD
Q0RWIFBDRlQgAEAvR1ZEMYAADFBIRUQgQkREQ0CACERCVEISMhUACgcKOAvAAQsADgo/C8cBCwcO
C/gBCzgOC8APAAAAAAALAHALB3ALOHALwHELAH4IQ0RDVBInBRIHAgrkC0ABEgcCCt4LTQESBwIK
3gtNARIEAgAAEgcCCt4LTQEIU1VDQwEITlZMRAoCCENSSVQKBAhOQ1JUCgYURFBHU0NJCBRIHkdC
REEIoBqTR0VTRgBwC3kGUEFSTXAAR0VTRqRTVUNDoBqTR0VTRgFwC0ACUEFSTXAAR0VTRqRTVUND
oEcEk0dFU0YKBHtQQVJNDAAA/+9QQVJNe1BBUk15g4hEQlRCSUJUVAAKEABQQVJNfUlCVFRQQVJN
UEFSTXAAR0VTRqRTVUNDoEoGk0dFU0YKBXBJUFNDUEFSTX1QQVJNeUlQQVQKCABQQVJNclBBUk0L
AAFQQVJNfVBBUk15TElEUwoQAFBBUk1yUEFSTQwAAAEAUEFSTX1QQVJNeUlCSUEKFABQQVJNcABH
RVNGpFNVQ0OgLZNHRVNGCgZwSVRWRlBBUk19UEFSTXlJVFZNCgQAUEFSTXAAR0VTRqRTVUNDoEMH
k0dFU0YKB3BHSVZEUEFSTX9QQVJNAVBBUk19UEFSTXlHTUZOAQBQQVJNfVBBUk0LABhQQVJNfVBB
Uk15SURNUwoRAFBBUk19eYOIg4hDRENUSFZDTwBDRFZMAAoVAFBBUk1QQVJNcAFHRVNGpFNVQ0Og
KpNHRVNGCgpwAFBBUk2gEElTU0N9UEFSTQoDUEFSTXAAR0VTRqRTVUNDoB+TR0VTRgoLcEtTVjBQ
QVJNcEtTVjFHRVNGpFNVQ0NwAEdFU0akQ1JJVBRFLVNCQ0IIoCKTR0VTRgBwAFBBUk1wDP2HDwBQ
QVJNcABHRVNGpFNVQ0OgGJNHRVNGAXAAR0VTRnAAUEFSTaRTVUNDoBmTR0VTRgoDcABHRVNGcABQ
QVJNpFNVQ0OgGZNHRVNGCgRwAEdFU0ZwAFBBUk2kU1VDQ6AZk0dFU0YKBXAAR0VTRnAAUEFSTaRT
VUNDoDeTR0VTRgoGcHtQQVJNCg8ASVRWRnB6e1BBUk0K8AAKBABJVFZNcABHRVNGcABQQVJNpFNV
Q0OgRQSTR0VTRgoHoCqTUEFSTQBwQ0xJRGCgHHsMAAAAgGAAe0NMSUQKD0NMSURHTElEQ0xJRHAA
R0VTRnAAUEFSTaRTVUNDoBmTR0VTRgoIcABHRVNGcABQQVJNpFNVQ0OgJJNHRVNGCgl7UEFSTQr/
SUJUVHAAR0VTRnAAUEFSTaRTVUNDoEYFk0dFU0YKCntQQVJNCv9JUFNDoCF7elBBUk0KCAAK/wB7
elBBUk0KCAAK/0lQQVR2SVBBVHt6UEFSTQoUAAoHSUJJQXAAR0VTRnAAUEFSTaRTVUNDoEQFk0dF
U0YKC3t6UEFSTQEAAUlGMUWgG3tQQVJNDADgAQAAe3pQQVJNCg0ACg9JRE1ToRB7elBBUk0KEQAK
D0lETVNwAEdFU0ZwAFBBUk2kU1VDQ6AZk0dFU0YKEHAAR0VTRnAAUEFSTaRTVUNDoCyTR0VTRgoR
cHlMSURTCggAUEFSTXJQQVJNCwABUEFSTXAAR0VTRqRTVUNDoEkEk0dFU0YKEqAme1BBUk0BAKAQ
k3pQQVJNAQABcAFJU1NDoQxwAEdFU0akQ1JJVKEHcABJU1NDcABHRVNGcABQQVJNpFNVQ0OgGZNH
RVNGChNwAEdFU0ZwAFBBUk2kU1VDQ6Akk0dFU0YKFHtQQVJNCg9QQVZQcABHRVNGcABQQVJNpFNV
Q0NwAEdFU0akU1VDQ6ARk0dFRkMKBHBHQkRBR1hGQ6ARk0dFRkMKBnBTQkNCR1hGQ3AAR0VGQ3AB
U0NJU3AAR1NTRXAAU0NJRaQAFBlQRFJEAKAMkkRSRFlbIkFTTFCkkkRSRFkUHVBTVFMAoA6UQ1NU
UwoCWyJBU0xQpJNDU1RTCgMUQgZHTk9UAqAHUERSRKQBcGhDRVZUcAoDQ1NUU6AskJNDSFBEAJNp
AKAYkZRPU1lTC9AHlU9TWVML1geGUENJMGmhB4ZHRlgwaaANWxJITk9UAEhOT1RooQiGR0ZYMAqA
pAAUE0dIRFMBcGhUSURYpEdOT1QBABQiR0xJRAGgC5NoAXAKA0NMSUShB3BoQ0xJRKRHTk9UCgIA
FBRHRENLAXBoQ0RDS6RHTk9UCgQAFBlQQVJEAKAMkkFSRFlbIkFTTFCkkkFSRFkUShJBSU5UCqAO
kntUQ0hFeQFoAACkAaAHUEFSRKQBoEAMk2gKAqBHCUNQRk17Q1BGTQoPYHtFUEZNCg9hoCqTYAGg
DXthCgYAcAoGUEZJVKEXoA17YQoIAHAKCFBGSVShB3ABUEZJVKAqk2AKBqANe2EKCABwCghQRklU
oRagC3thAQBwAVBGSVShCHAKBlBGSVSgKpNgCgigC3thAQBwAVBGSVShGKANe2EKBgBwCgZQRklU
oQhwCghQRklUoQx/UEZJVAoHUEZJVH1QRklUDAAAAIBQRklUcAoEQVNMQ6FCBKAok2gBcHh3aQr/
AApkAABCQ0xQfUJDTFAMAAAAgEJDTFBwCgJBU0xDoRagEJNoAHBpQUxTSXABQVNMQ6EDpAFwAUFT
TEWkABQXU0NJUACgDpKTT1ZFUgCkkkdTTUmkAFuCRwpeXk1FTTIIX0hJRAxB0AwBCF9VSUQKAghD
UlMxER0KGoYJAAEAAAAgAAAgAIYJAAEAAABAAAAgAHkACENSUzIRHQoahgkAAQAAACAAACAAhgkA
AQBAAEAAEAAAeQAUEV9TVEEAoAhJR0RTpAoPpAAUNV9DUlMAoCmRk3tQTkhNDPAP/w8ADKAGAgCT
e1BOSE0M/w//DwAMoAYDAKRDUlMxpENSUzIQTgZfUFJfW4MLQ1BVMAEQBAAABluDC0NQVTECEAQA
AAZbgwtDUFUyAxAEAAAGW4MLQ1BVMwQQBAAABluDC0NQVTQFEAQAAAZbgwtDUFU1BhAEAAAGW4ML
Q1BVNgcQBAAABluDC0NQVTcIEAQAAAZbAU1VVFgAFDxDT01QCHALoA9goi5goBp7XC8EX1NCX1BD
STBTQlVTSFNUUwoCAKQBoRB2YFshCjKgCJNgAEtJTEykABRJBUtJTEwIfVwvBF9TQl9QQ0kwU0JV
U0hDT04KAlwvBF9TQl9QQ0kwU0JVU0hDT059XC8EX1NCX1BDSTBTQlVTSFNUUwr/XC8EX1NCX1BD
STBTQlVTSFNUU1uAREVCMAEKgAFbgQtERUIwAURCRzgIW4BERUIxAQqQCgJbgQtERUIxAkRCRzkQ
W4BQUlQwAQqACgRbgQtQUlQwE1A4MEggFE4HUDhYSAqgF5NoAHB9e1A4MEQMAP///wBpAFA4MESg
G5NoAXB9e1A4MEQM/wD//wB5aQoIAABQODBEoByTaAoCcH17UDgwRAz//wD/AHlpChAAAFA4MESg
HJNoCgNwfXtQODBEDP///wAAeWkKGAAAUDgwRHBQODBEUDgwSFuAU1BSVAEKsgoCW4ELU1BSVBFT
U01QCBQSX1BJQwFwaEdQSUNwaFBJQ00URgVfUFRTAXAAUDgwRFA4WEgAaFBUU19ooByTaAoDoBaQ
RFRTRZRUQ05UAVRSQVBUUlRECh6gIJGRk2gKA5NoCgSTaAoFoBCTUEZMVkZEVFBwAUdQMjcUTUNf
V0FLCVA4WEgBCqtXQUtfaKA3TkVYUKAYe09TQ0MKAgBcLwNfU0JfUENJME5IUEegGHtPU0NDCgQA
XC8DX1NCX1BDSTBOUE1FoC6TaAoDoCiTAEFDVFSgIJNFQ09OAXAAXC8FX1NCX1BDSTBMUENCSF9F
Q0NGQU6gTziRk2gKA5NoCgSgFpBEVFNFlFRDTlQBVFJBUFRSVEQKFKBLC5NPU1lTC9IHoEALe0NG
R0QBAKBLBZRcLwNfUFJfQ1BVMF9QUEMAdFwvA19QUl9DUFUwX1BQQwFcLwNfUFJfQ1BVMF9QUENQ
Tk9UclwvA19QUl9DUFUwX1BQQwFcLwNfUFJfQ1BVMF9QUENQTk9UoUoEclwvA19QUl9DUFUwX1BQ
QwFcLwNfUFJfQ1BVMF9QUENQTk9UdFwvA19QUl9DUFUwX1BQQwFcLwNfUFJfQ1BVMF9QUENQTk9U
oEgdk0VDT04BoEUJkpNMSURTXC8FX1NCX1BDSTBMUENCSF9FQ0xTVEVwXC8FX1NCX1BDSTBMUENC
SF9FQ0xTVEVMSURToEwESUdEU6BFBFwvBF9TQl9QQ0kwR0ZYMEdMSURMSURTfQwAAACAXC8EX1NC
X1BDSTBHRlgwQ0xJRFwvBF9TQl9QQ0kwR0ZYMENMSUSGXC5fU0JfTElEMAqAoE8KkpNcLwVfU0Jf
UENJMExQQ0JIX0VDRE9DS0RTVFNwXC8FX1NCX1BDSTBMUENCSF9FQ0RPQ0tEU1RToC6QXC8EX1NC
X1BDSTBIREVGRENLUwFwRFNUU1wvBF9TQl9QQ0kwSERFRkRDS0GgMZNEU1RTAaAYk2gKA1siC+gD
cFBEQlJTU01QWyIL6AOGXC8DX1NCX1BDSTBET0NLAKEShlwvA19TQl9QQ0kwRE9DSwGgRwSTQk5V
TQCgPpKTXC8FX1NCX1BDSTBMUENCSF9FQ1ZQV1JQV1JTcFwvBV9TQl9QQ0kwTFBDQkhfRUNWUFdS
UFdSU1BOT1ShQQSgPpKTXC8FX1NCX1BDSTBMUENCSF9FQ1JQV1JQV1JTcFwvBV9TQl9QQ0kwTFBD
QkhfRUNSUFdSUFdSU1BOT1SgGJNSUDFEAIZcLwNfU0JfUENJMFJQMDEAoBiTUlAyRACGXC8DX1NC
X1BDSTBSUDAyAKAYk1JQM0QAhlwvA19TQl9QQ0kwUlAwMwCgGJNSUDREAIZcLwNfU0JfUENJMFJQ
MDQAoBiTUlA1RACGXC8DX1NCX1BDSTBSUDA1AKAYk1JQNkQAhlwvA19TQl9QQ0kwUlAwNgCgIJNS
UDdEAKAYk0RTVFMAhlwvA19TQl9QQ0kwUlAwNwCgIJNSUDhEAKAYk0RTVFMAhlwvA19TQl9QQ0kw
UlAwOACgLJGTaAoDk2gKBFwvBF9TQl9QQ0kwWEhDX1hXQUtcLwNfUFJfQ1BVMENUTESkEgQCAAAU
HkdFVEILd2gKCGB3aQoIYVsTamBhVEJGM6RUQkYzFEQuUE5PVAigSBmUVENOVAGgMXtQREMwCggA
hlwuX1BSX0NQVTAKgKAae1BEQzAKEABbIgpkhlwuX1BSX0NQVTAKgaAxe1BEQzEKCACGXC5fUFJf
Q1BVMQqAoBp7UERDMQoQAFsiCmSGXC5fUFJfQ1BVMQqBoDF7UERDMgoIAIZcLl9QUl9DUFUyCoCg
GntQREMyChAAWyIKZIZcLl9QUl9DUFUyCoGgMXtQREMzCggAhlwuX1BSX0NQVTMKgKAae1BEQzMK
EABbIgpkhlwuX1BSX0NQVTMKgaAxe1BEQzQKCACGXC5fUFJfQ1BVNAqAoBp7UERDNAoQAFsiCmSG
XC5fUFJfQ1BVNAqBoDF7UERDNQoIAIZcLl9QUl9DUFU1CoCgGntQREM1ChAAWyIKZIZcLl9QUl9D
UFU1CoGgMXtQREM2CggAhlwuX1BSX0NQVTYKgKAae1BEQzYKEABbIgpkhlwuX1BSX0NQVTYKgaAx
e1BEQzcKCACGXC5fUFJfQ1BVNwqAoBp7UERDNwoQAFsiCmSGXC5fUFJfQ1BVNwqBoR+GXC5fUFJf
Q1BVMAqAWyIKZIZcLl9QUl9DUFUwCoGgQxKTRUNPTgFwXC8FX1NCX1BDSTBMUENCSF9FQ0IxQ0NC
MVNDcFwvBV9TQl9QQ0kwTFBDQkhfRUNCMVNUQjFTU3BcLwVfU0JfUENJMExQQ0JIX0VDQjJDQ0Iy
U0NwXC8FX1NCX1BDSTBMUENCSF9FQ0IyU1RCMlNToEkFkpVPU1lTC9YHhlwvBV9TQl9QQ0kwTFBD
QkhfRUNCQVQwCoGGXC8FX1NCX1BDSTBMUENCSF9FQ0JBVDEKgYZcLwVfU0JfUENJMExQQ0JIX0VD
QkFUMgqBoUAFhlwvBV9TQl9QQ0kwTFBDQkhfRUNCQVQwCoCGXC8FX1NCX1BDSTBMUENCSF9FQ0JB
VDEKgIZcLwVfU0JfUENJMExQQ0JIX0VDQkFUMgqAFEcEVFJBUApwaVNNSUagDZNoVFJUUHAAVFJQ
MKAYk2hUUlREcGlEVFNGcABUUlBEpERUU0agDZNoVFJUSXAAVFJQSKRTTUlGEEY0Ll9TQl9QQ0kw
FEogX0lOSQCgSghfT1NJDVdpbmRvd3MgMjAxMgBwAF4uU0JVU0kyQ0VwCr9eLlNCVVNIU1RTcABe
LlNCVVNEQVQwcAoSXi5TQlVTVFhTQXAKpV4uU0JVU0hDT01wCoBeLlNCVVNEQVQwcApIXi5TQlVT
SENPTqAcQ09NUH1eLlNCVVNIU1RTCv9eLlNCVVNIU1RToUcJoEIJX09TSQ1XaW5kb3dzIDIwMDkA
cAvZB09TWVNwAF4uU0JVU0kyQ0VwCr9eLlNCVVNIU1RTcABeLlNCVVNEQVQwcAoSXi5TQlVTVFhT
QXAKpV4uU0JVU0hDT01wCoBeLlNCVVNEQVQwcApIXi5TQlVTSENPTqAcQ09NUH1eLlNCVVNIU1RT
Cv9eLlNCVVNIU1RToQFwC9AHT1NZU6BHDVsSX09TSWCgG19PU0kNV2luZG93cyAyMDAxAHAL0QdP
U1lToB9fT1NJDVdpbmRvd3MgMjAwMSBTUDEAcAvRB09TWVOgH19PU0kNV2luZG93cyAyMDAxIFNQ
MgBwC9IHT1NZU6AdX09TSQ1XaW5kb3dzIDIwMDEuMQBwC9MHT1NZU6AbX09TSQ1XaW5kb3dzIDIw
MDYAcAvWB09TWVOgG19PU0kNV2luZG93cyAyMDA5AHAL2QdPU1lToBtfT1NJDVdpbmRvd3MgMjAx
MgBwC9wHT1NZUxRHBk5IUEcIcABeLlJQMDFIUEVYcABeLlJQMDJIUEVYcABeLlJQMDNIUEVYcABe
LlJQMDRIUEVYcAFeLlJQMDFIUFNYcAFeLlJQMDJIUFNYcAFeLlJQMDNIUFNYcAFeLlJQMDRIUFNY
FEcMTlBNRQhwAF4uUlAwMVBNRVhwAF4uUlAwMlBNRVhwAF4uUlAwM1BNRVhwAF4uUlAwNFBNRVhw
AF4uUlAwNVBNRVhwAF4uUlAwNlBNRVhwAF4uUlAwN1BNRVhwAF4uUlAwOFBNRVhwAV4uUlAwMVBN
U1hwAV4uUlAwMlBNU1hwAV4uUlAwM1BNU1hwAV4uUlAwNFBNU1hwAV4uUlAwNVBNU1hwAV4uUlAw
NlBNU1hwAV4uUlAwN1BNU1hwAV4uUlAwOFBNU1gQRQdcAAhQSUNNAAhQUldQEgQCAAAUQAZHUFJX
AnBoiFBSV1AAAHB5U1MxXwEAYH1geVNTMl8KAgBgfWB5U1MzXwoDAGB9YHlTUzRfCgQAYKARe3kB
aQBgAHBpiFBSV1ABAKEOemABYIFgiFBSV1ABAKRQUldQEEsXLl9TQl9QQ0kwW4JOFlBEUkMIX0hJ
RAxB0AwCCF9VSUQBCEJVRjARSggKhoYJAAEAAAAAAEAAAIYJAAEAAAAAAIAAAIYJAAEAAAAAABAA
AIYJAAEAAAAAABAAAIYJAAEAAAAAAAAAAIYJAAEAANL+AAACAIYJAAAAANn+AEAAAIYJAAEAUNT+
ALAEAIYJAAAAAAD/AAAAAYYJAAAAAOD+AAAQAIYJAAEAAAAAABAAAHkAFEcMX0NSUwiKQlVGMAoE
UkJSMHleXi5MUENCUkNCQQoOUkJSMIpCVUYwCnxUQlIwcFRCQUJUQlIwikJVRjAKgFRCTE6gDZNU
QkFCAHAAVEJMTopCVUYwChBNQlIweU1IQlIKD01CUjCKQlVGMAocREJSMHlESUJSCgxEQlIwikJV
RjAKKEVCUjB5RVBCUgoMRUJSMIpCVUYwCjRYQlIweVBYQlIKGlhCUjCKQlVGMAo4WFNaMHoMAAAA
EFBYU1pYU1owpEJVRjAURxJCUlROCaAjk3tESUQxCwAPAAsABIZcLwRfU0JfUENJMEdGWDBERDAx
aKAjk3tESUQyCwAPAAsABIZcLwRfU0JfUENJMEdGWDBERDAyaKAjk3tESUQzCwAPAAsABIZcLwRf
U0JfUENJMEdGWDBERDAzaKAjk3tESUQ0CwAPAAsABIZcLwRfU0JfUENJMEdGWDBERDA0aKAjk3tE
SUQ1CwAPAAsABIZcLwRfU0JfUENJMEdGWDBERDA1aKAjk3tESUQ2CwAPAAsABIZcLwRfU0JfUENJ
MEdGWDBERDA2aKAjk3tESUQ3CwAPAAsABIZcLwRfU0JfUENJMEdGWDBERDA3aKAjk3tESUQ4CwAP
AAsABIZcLwRfU0JfUENJMEdGWDBERDA4aBBBpV9HUEUUTRxfTDA5AKAsk1JQMUQAXC8EX1NCX1BD
STBSUDAxSFBNRYZcLwNfU0JfUENJMFJQMDEKAqAsk1JQMkQAXC8EX1NCX1BDSTBSUDAySFBNRYZc
LwNfU0JfUENJMFJQMDIKAqAsk1JQM0QAXC8EX1NCX1BDSTBSUDAzSFBNRYZcLwNfU0JfUENJMFJQ
MDMKAqAsk1JQNEQAXC8EX1NCX1BDSTBSUDA0SFBNRYZcLwNfU0JfUENJMFJQMDQKAqAsk1JQNUQA
XC8EX1NCX1BDSTBSUDA1SFBNRYZcLwNfU0JfUENJMFJQMDUKAqAsk1JQNkQAXC8EX1NCX1BDSTBS
UDA2SFBNRYZcLwNfU0JfUENJMFJQMDYKAqAsk1JQN0QAXC8EX1NCX1BDSTBSUDA3SFBNRYZcLwNf
U0JfUENJMFJQMDcKAqAsk1JQOEQAXC8EX1NCX1BDSTBSUDA4SFBNRYZcLwNfU0JfUENJMFJQMDgK
AoZcLwNfU0JfUENJMFBFRzAKAoZcLwRfU0JfUENJMFBFRzBQRUdQCgKGXC8DX1NCX1BDSTBQRUcx
CgKGXC8DX1NCX1BDSTBQRUcyCgKGXC8DX1NCX1BDSTBQRUczCgIUTwlfTDBEAIZcLwNfU0JfUENJ
MEVIQzEKAoZcLwNfU0JfUENJMEVIQzIKAoZcLwNfU0JfUENJMEhERUYKAoZcLwNfU0JfUENJMEdM
QU4KAoZcLwNfU0JfUENJMFhIQ18KAqA9kFwvBF9TQl9QQ0kwWEhDX1BNRVNcLwRfU0JfUENJMFhI
Q19QTUVTcAFcLwRfU0JfUENJMFhIQ19QTUVTFEhiX0wwMQByTDAxQwFMMDFDUDhYSAABUDhYSAFM
MDFDoEMLkJNSUDFEAFwvBF9TQl9QQ0kwUlAwMUhQU1hbIgpkoEsHXC8EX1NCX1BDSTBSUDAxUERD
WHABXC8EX1NCX1BDSTBSUDAxUERDWHABXC8EX1NCX1BDSTBSUDAxSFBTWKAqklwvBF9TQl9QQ0kw
UlAwMVBEU1hwAFwvBF9TQl9QQ0kwUlAwMUwwU0WGXC8DX1NCX1BDSTBSUDAxAKEWcAFcLwRfU0Jf
UENJMFJQMDFIUFNYoEMLkJNSUDJEAFwvBF9TQl9QQ0kwUlAwMkhQU1hbIgpkoEsHXC8EX1NCX1BD
STBSUDAyUERDWHABXC8EX1NCX1BDSTBSUDAyUERDWHABXC8EX1NCX1BDSTBSUDAySFBTWKAqklwv
BF9TQl9QQ0kwUlAwMlBEU1hwAFwvBF9TQl9QQ0kwUlAwMkwwU0WGXC8DX1NCX1BDSTBSUDAyAKEW
cAFcLwRfU0JfUENJMFJQMDJIUFNYoEMLkJNSUDNEAFwvBF9TQl9QQ0kwUlAwM0hQU1hbIgpkoEsH
XC8EX1NCX1BDSTBSUDAzUERDWHABXC8EX1NCX1BDSTBSUDAzUERDWHABXC8EX1NCX1BDSTBSUDAz
SFBTWKAqklwvBF9TQl9QQ0kwUlAwM1BEU1hwAFwvBF9TQl9QQ0kwUlAwM0wwU0WGXC8DX1NCX1BD
STBSUDAzAKEWcAFcLwRfU0JfUENJMFJQMDNIUFNYoEMLkJNSUDREAFwvBF9TQl9QQ0kwUlAwNEhQ
U1hbIgpkoEsHXC8EX1NCX1BDSTBSUDA0UERDWHABXC8EX1NCX1BDSTBSUDA0UERDWHABXC8EX1NC
X1BDSTBSUDA0SFBTWKAqklwvBF9TQl9QQ0kwUlAwNFBEU1hwAFwvBF9TQl9QQ0kwUlAwNEwwU0WG
XC8DX1NCX1BDSTBSUDA0AKEWcAFcLwRfU0JfUENJMFJQMDRIUFNYoEMLkJNSUDVEAFwvBF9TQl9Q
Q0kwUlAwNUhQU1hbIgpkoEsHXC8EX1NCX1BDSTBSUDA1UERDWHABXC8EX1NCX1BDSTBSUDA1UERD
WHABXC8EX1NCX1BDSTBSUDA1SFBTWKAqklwvBF9TQl9QQ0kwUlAwNVBEU1hwAFwvBF9TQl9QQ0kw
UlAwNUwwU0WGXC8DX1NCX1BDSTBSUDA1AKEWcAFcLwRfU0JfUENJMFJQMDVIUFNYoEMLkJNSUDZE
AFwvBF9TQl9QQ0kwUlAwNkhQU1hbIgpkoEsHXC8EX1NCX1BDSTBSUDA2UERDWHABXC8EX1NCX1BD
STBSUDA2UERDWHABXC8EX1NCX1BDSTBSUDA2SFBTWKAqklwvBF9TQl9QQ0kwUlAwNlBEU1hwAFwv
BF9TQl9QQ0kwUlAwNkwwU0WGXC8DX1NCX1BDSTBSUDA2AKEWcAFcLwRfU0JfUENJMFJQMDZIUFNY
oEcOkJNSUDdEAFwvBF9TQl9QQ0kwUlAwN0hQU1hbIgpkoE8KXC8EX1NCX1BDSTBSUDA3UERDWHAB
XC8EX1NCX1BDSTBSUDA3UERDWHABXC8EX1NCX1BDSTBSUDA3SFBTWKAqklwvBF9TQl9QQ0kwUlAw
N1BEU1hwAFwvBF9TQl9QQ0kwUlAwN0wwU0WgMUVDT06gK5NcLwVfU0JfUENJMExQQ0JIX0VDRE9D
SwCGXC8DX1NCX1BDSTBSUDA3AKEShlwvA19TQl9QQ0kwUlAwNwChFnABXC8EX1NCX1BDSTBSUDA3
SFBTWKBHDpCTUlA4RABcLwRfU0JfUENJMFJQMDhIUFNYWyIKZKBPClwvBF9TQl9QQ0kwUlAwOFBE
Q1hwAVwvBF9TQl9QQ0kwUlAwOFBEQ1hwAVwvBF9TQl9QQ0kwUlAwOEhQU1igKpJcLwRfU0JfUENJ
MFJQMDhQRFNYcABcLwRfU0JfUENJMFJQMDhMMFNFoDFFQ09OoCuTXC8FX1NCX1BDSTBMUENCSF9F
Q0RPQ0sAhlwvA19TQl9QQ0kwUlAwOAChEoZcLwNfU0JfUENJMFJQMDgAoRZwAVwvBF9TQl9QQ0kw
UlAwOEhQU1gUTwVfTDAyAHAAR1BFQ6AqWxJcLwRfU0JfUENJMElFSVRFSVRWAFwvBF9TQl9QQ0kw
SUVJVEVJVFaGXC5fVFpfVFowMAqAhlwuX1RaX1RaMDEKgKAMWxJUTk9UAFROT1QUNF9MMDYAoC2Q
XC8EX1NCX1BDSTBHRlgwR1NTRZJHU01JXC8EX1NCX1BDSTBHRlgwR1NDSRQcX0wwNwBwCiBcLwRf
U0JfUENJMFNCVVNIU1RTFEEQT0wxRQCgCZNFQ09OAKQAoEUJkpNMSURTXC8FX1NCX1BDSTBMUENC
SF9FQ0xTVEVwXC8FX1NCX1BDSTBMUENCSF9FQ0xTVEVMSURToEwESUdEU6BFBFwvBF9TQl9QQ0kw
R0ZYMEdMSURMSURTfQwAAACAXC8EX1NCX1BDSTBHRlgwQ0xJRFwvBF9TQl9QQ0kwR0ZYMENMSUSG
XC5fU0JfTElEMAqAoUcFoEcEk0JOVU0AoD6Sk1BXUlNcLwVfU0JfUENJMExQQ0JIX0VDVlBXUnBc
LwVfU0JfUENJMExQQ0JIX0VDVlBXUlBXUlNQTk9UhlwuX1NCX1BXUkIKAqQAEEaLX1RaXwhFVE1E
AQhUSExECnhbhEUNRk4wMAAAABQLX1NUQQikVkZOMBRNBF9PTl8IcAFWRk4woD+QRUNPTkVUTURw
QUMwRlwvBV9TQl9QQ0kwTFBDQkhfRUNQRU5WXC8FX1NCX1BDSTBMUENCSF9FQ0VDTUQKGhRBB19P
RkYIcABWRk4woEMGkEVDT05FVE1EoCCTVkZOMQBwAFwvBV9TQl9QQ0kwTFBDQkhfRUNQRU5WoR1w
QUMxRlwvBV9TQl9QQ0kwTFBDQkhfRUNQRU5WXC8FX1NCX1BDSTBMUENCSF9FQ0VDTUQKGluCIUZB
TjAIX0hJRAxB0AwLCF9VSUQACF9QUjASBgFGTjAwW4ROCkZOMDEAAAAUC19TVEEIpFZGTjEUTQRf
T05fCHABVkZOMaA/kEVDT05FVE1EcEFDMUZcLwVfU0JfUENJMExQQ0JIX0VDUEVOVlwvBV9TQl9Q
Q0kwTFBDQkhfRUNFQ01EChoUSgRfT0ZGCHAAVkZOMaA8kEVDT05FVE1EcABcLwVfU0JfUENJMExQ
Q0JIX0VDUEVOVlwvBV9TQl9QQ0kwTFBDQkhfRUNFQ01EChpbgiFGQU4xCF9ISUQMQdAMCwhfVUlE
AQhfUFIwEgYBRk4wMVuESwpGTjAyAAAAFAtfU1RBCKRWRk4yFEoEX09OXwhwAVZGTjKgPJBFQ09O
RVRNRHAAXC8FX1NCX1BDSTBMUENCSF9FQ1BFTlZcLwVfU0JfUENJMExQQ0JIX0VDRUNNRAoaFEoE
X09GRghwAFZGTjKgPJBFQ09ORVRNRHAAXC8FX1NCX1BDSTBMUENCSF9FQ1BFTlZcLwVfU0JfUENJ
MExQQ0JIX0VDRUNNRAoaW4IiRkFOMghfSElEDEHQDAsIX1VJRAoCCF9QUjASBgFGTjAyW4RLCkZO
MDMAAAAUC19TVEEIpFZGTjMUSgRfT05fCHABVkZOM6A8kEVDT05FVE1EcABcLwVfU0JfUENJMExQ
Q0JIX0VDUEVOVlwvBV9TQl9QQ0kwTFBDQkhfRUNFQ01EChoUSgRfT0ZGCHAAVkZOM6A8kEVDT05F
VE1EcABcLwVfU0JfUENJMExQQ0JIX0VDUEVOVlwvBV9TQl9QQ0kwTFBDQkhfRUNFQ01EChpbgiJG
QU4zCF9ISUQMQdAMCwhfVUlECgMIX1BSMBIGAUZOMDNbhEsKRk4wNAAAABQLX1NUQQikVkZONBRK
BF9PTl8IcAFWRk40oDyQRUNPTkVUTURwAFwvBV9TQl9QQ0kwTFBDQkhfRUNQRU5WXC8FX1NCX1BD
STBMUENCSF9FQ0VDTUQKGhRKBF9PRkYIcABWRk40oDyQRUNPTkVUTURwAFwvBV9TQl9QQ0kwTFBD
QkhfRUNQRU5WXC8FX1NCX1BDSTBMUENCSF9FQ0VDTUQKGluCIkZBTjQIX0hJRAxB0AwLCF9VSUQK
BAhfUFIwEgYBRk4wNFuFSR1UWjAwCFBUTVALuAsUDF9TQ1AJcGhDVFlQFEcEX0NSVAigMVsSXC5f
UFJfQUNSVACgIpKTXC5fUFJfQUNSVACkcgusCndcLl9QUl9BQ1JUCgoAAKRyC6wKd0NSVFQKCgAA
FEcEX0FDMAigMVsSXC5fUFJfQUFDMACgIpKTXC5fUFJfQUFDMACkcgusCndcLl9QUl9BQUMwCgoA
AKRyC6wKd0FDVFQKCgAAFBRfQUMxCKRyC6wKd0FDVDEKCgAAFApfQUMyCKQLrAoUCl9BQzMIpAus
ChQKX0FDNAikC6wKCF9BTDASBgFGQU4wCF9BTDESBgFGQU4xCF9BTDISBgFGQU4yCF9BTDMSBgFG
QU4zCF9BTDQSBgFGQU40FEsLX1RNUAigCpJFVE1EpAu4C6AWk0RUU0UKA6RyCxALd0NSVFQKCgAA
oEwFk0RUU0UBoBiTUEtHQQFwUERUU2CkcgusCndgCgoAAHBEVFMxYKANlERUUzJgcERUUzJgoA2U
RFRTM2BwRFRTM2CgDZREVFM0YHBEVFM0YKRyC6wKd2AKCgAAoDBFQ09OcFwvBV9TQl9QQ0kwTFBD
QkhfRUNQTE1YYHILrAp3YAoKAGBwYFBUTVCkYKQLwgtbhUYoVFowMQhQVE1QC7gLFAxfU0NQCXBo
Q1RZUBRHBF9DUlQIoDFbElwuX1BSX0FDUlQAoCKSk1wuX1BSX0FDUlQApHILrAp3XC5fUFJfQUNS
VAoKAACkcgusCndDUlRUCgoAABRLDl9UTVAIoAqSRVRNRKQLzAugFpNEVFNFCgOkcgsQC3dDUlRU
CgoAAKBMBZNEVFNFAaAYk1BLR0EBcFBEVFNgpHILrAp3YAoKAABwRFRTMWCgDZREVFMyYHBEVFMy
YKANlERUUzNgcERUUzNgoA2URFRTNGBwRFRTNGCkcgusCndgCgoAAKBABkVDT05wXC8FX1NCX1BD
STBMUENCSF9FQ1BFQ0hgd2AKCmBwXC8FX1NCX1BDSTBMUENCSF9FQ1BFQ0xhemEKAmFweHdhCgoA
CkAAAGFyYGFgcgusCmBgcGBQVE1QpGCkC9YLFEoMX1BTTAigTgWTVENOVAoIpBJDBQhcLl9QUl9D
UFUwXC5fUFJfQ1BVMVwuX1BSX0NQVTJcLl9QUl9DUFUzXC5fUFJfQ1BVNFwuX1BSX0NQVTVcLl9Q
Ul9DUFU2XC5fUFJfQ1BVN6A0k1RDTlQKBKQSKgRcLl9QUl9DUFUwXC5fUFJfQ1BVMVwuX1BSX0NQ
VTJcLl9QUl9DUFUzoCCTVENOVAoCpBIWAlwuX1BSX0NQVTBcLl9QUl9DUFUxpBIMAVwuX1BSX0NQ
VTAURwRfUFNWCKAxWxJcLl9QUl9BUFNWAKAikpNcLl9QUl9BUFNWAKRyC6wKd1wuX1BSX0FQU1YK
CgAApHILrAp3UFNWVAoKAAAUC19UQzEIpFRDMVYUC19UQzIIpFRDMlYUC19UU1AIpFRTUFZbgkQM
LwRfU0JfUENJMExQQ0JUUE1fFBRfSElEAKAFVENNRqEHpAxB0AwxCF9TVFIRIQoeVABQAE0AIAAx
AC4AMgAgAEQAZQB2AGkAYwBlAAAACF9VSUQBCF9DUlMREQoOhgkAAAAA1P4AUAAAeQBbgFRNTUIA
DAAA1P4LAFBbgSZUTU1CEUFDQ1MIAEgLVFNUQQhUQkNBCACAcwdUVklEEFRESUQQFB9fU1RBAKAL
k1ZJRFQLhoCkAKEMoAhUUE1GpAoPpAAQQTcvBF9TQl9QQ0kwTFBDQlRQTV9bgFRTTUkBU01JVAoC
W4EQVFNNSQFJTlFfCERBVF8IFE0zX0RTTQSgTCmTaBETChCm+t09Gza0TqQkjRAInRZTCF9UXzAA
cJlqAF9UXzCgDpNfVF8wAKQRBQoC/wGhRiagDZNfVF8wAaQNMS4yAKFFJaBDBpNfVF8wCgKZg4hr
AABUTUYycAoSVE1GMXBUTUYxREFUX3BPRlNUSU5RX6ALk0RBVF8K/6QKAnBUTUYyREFUX3BPRlNU
SU5RX6ALk0RBVF8K/6QKAqAKk0RBVF8K8aQBpAChTh6gPpNfVF8wCgMIUFBJMRIEAgAAcAoRREFU
X3BPRlNUSU5RX6AKk0RBVF8K/6QBcERBVF+IUFBJMQEApFBQSTGhTBqgDZNfVF8wCgSkVFJTVKFL
GaBJDZNfVF8wCgUIUFBJMhIFAwAAAHAKIURBVF9wT0ZTVElOUV9wREFUX4hQUEkyAQCgC5NEQVRf
Cv+kCgJwCjFEQVRfcE9GU1RJTlFfoAuTREFUXwr/pAoCoDSTREFUXwrwcApRREFUX3BPRlNUSU5R
X6Abk0RBVF8K/3AM8P///4hQUEkyCgIApFBQSTKhRgSgNJNEQVRfCvFwClFEQVRfcE9GU1RJTlFf
oBuTREFUXwr/cAzx////iFBQSTIKAgCkUFBJMqEOcERBVF+IUFBJMgoCAKRQUEkyoU4LoAuTX1Rf
MAoGpAoDoU8KoEMGk19UXzAKB5mDiGsAAFRNRjJwChJUTUYxcFRNRjFEQVRfcE9GU1RJTlFfoAuT
REFUXwr/pAoCcFRNRjJEQVRfcE9GU1RJTlFfoAuTREFUXwr/pAoCoAqTREFUXwrxpAGkAKFIBKBD
BJNfVF8wCgiZg4hrAABUTUYycApDVE1GMXBUTUYxREFUX3BPRlNUSU5RX3BUTUYyREFUX3BPRlNU
SU5RX6REQVRfoQGhQwmgQAmTaBETChDtVGA3E8x1RpAcR1bX8tRdCF9UXzEAcJlqAF9UXzGgDJNf
VF8xAKQRAwEDoUwFoEcFk19UXzEBcAoiVE1GMXBUTUYxREFUX3BPRlNUSU5RX6ALk0RBVF8K/6QK
ApmDiGsAAFRNRjFwVE1GMURBVF9wT0ZTVElOUV+gC5NEQVRfCv+kCgKkAKEBpBEDAQAQPy5fU0Jf
UENJMFuASVRQRAIK6AoEW4ENSVRQRAMAD1RQREkBW4BUVklEAAwAD9T+CgJbgQtUVklEAlZJRFQQ
W4JKMS8DX1NCX1BDSTBJVFBNCF9ISUQNSU5UQzAxMDIACF9DSUQMQdAMMQhfU1RSESEKHlQAUABN
ACAAMQAuADIAIABEAGUAdgBpAGMAZQAAAAhfQ1JTEREKDoYJAAAAANT+AFAAAHkAW4BUU01JAVNN
SVQKAluBEFRTTUkBSU5RXwhEQVRfCFuAVFBNUgAMAADU/gsAUFuBC1RQTVIAQUNDMAgUJ19TVEEA
oB6Sk0FDQzAK/6AUk1ZJRFQLhoCgCFRQTUakCg+kAKQAFE8kX0RTTQSgThqTaBETChCm+t09Gza0
TqQkjRAInRZTCF9UXzAAcJlqAF9UXzCgDJNfVF8wAKQRAwF/oUoXoA2TX1RfMAGkDTEuMAChSRag
SAWTX1RfMAoCmYOIawAAVE1GMnAKElRNRjFwVE1GMURBVF9wT0ZTVElOUV+gC5NEQVRfCv+kCgJw
VE1GMkRBVF9wT0ZTVElOUV+gC5NEQVRfCv+kCgKkAKFNEKA+k19UXzAKAwhQUEkxEgQCAABwChFE
QVRfcE9GU1RJTlFfoAqTREFUXwr/pAFwREFUX4hQUEkxAQCkUFBJMaFLDKALk19UXzAKBKQKAqFM
C6BKCpNfVF8wCgUIUFBJMhIFAwAAAHAKIURBVF9wT0ZTVElOUV9wREFUX4hQUEkyAQCgC5NEQVRf
Cv+kCgJwREFUX4hQUEkyAQBwCjFEQVRfcE9GU1RJTlFfoAuTREFUXwr/pAoCoBeTREFUXwvw/3AM
8P///4hQUEkyCgIAoSigF5NEQVRfC/H/cAzx////iFBQSTIKAgChDnBEQVRfiFBQSTIKAgCkUFBJ
MqEOoAqTX1RfMAoGpAChAaFDCaBACZNoERMKEO1UYDcTzHVGkBxHVtfy1F0IX1RfMQBwmWoAX1Rf
MaAMk19UXzEApBEDAQOhTAWgRwWTX1RfMQFwCiJUTUYxcFRNRjFEQVRfcE9GU1RJTlFfoAuTREFU
Xwr/pAoCmYOIawAAVE1GMXBUTUYxREFUX3BPRlNUSU5RX6ALk0RBVF8K/6QKAqQAoQGkEQMBABBP
El9HUEVbgEdQUzABR1BCUwpQW4E9R1BTMAEAQAYAA0dVMDMBR1UwNAFHVTA1AQBKDwAER0kwNAFH
STA1AQBKBQABR08zMwEATgcABUdPNjkBCElOVEcAFD5fTDEzAKAak0dPNjkBcAq2REJHOHAAR08z
M3AAR082OaEcoBqTR082OQBwCrdEQkc4cAFHTzMzcAFHTzY5FEsEX0wxNACgO5NHVTA0AHJJTlRH
AUlOVEdwSU5UR0RCRzhwAEdJMDSGXC8EX1NCX1BDSTBHRlgwREQwMgqGWyIL9AGhB3ABR0kwNBRL
BF9MMTUAoDuTR1UwNQBySU5URwFJTlRHcElOVEdEQkc4cABHSTA1hlwvBF9TQl9QQ0kwR0ZYMERE
MDIKh1siC/QBoQdwAUdJMDUQIy5fU0JfUENJMFuAU01JMQFTTUlQAVuBC1NNSTEBU1NNSQgQTgZc
AAhCVE5QAAhCVE5XAFuCTAUvBF9TQl9QQ0kwTFBDQk1CVE4IX0hJRAxB0AwyCF9VSUQBFBNfU1RB
AKAIREFMQqQKD6EDpAAIX1BSVxIFAgoSARQYR0hJRACgDEJUTleGTUJUTgoCpBEDAQEQRQdfR1BF
W4BHUElPAUdQQlMKUFuBGkdQSU8BAEAGAAJHVTAyAQBNDwACR0kwMgEURQRfTDEyAKA9k0dVMDIA
oC1EQUxCcAoSREJHOHAAR0kwMoZcLwRfU0JfUENJMExQQ0JNQlROCoBbIgv0AaEHcAFHSTAyECMv
A19TQl9QQ0kwTFBDQhQTTVdBSwGgDEJUTleGTUJUTgoCW4BTTlZTAAwYjDSeC6EBW4ElU05WUxBT
SUdOQARTVkVSCFNSRVYIU0laRSBDVklQEERBTEIIEEkXLwNfU0JfUENJMExQQ0JbgkcWSF9FQwhf
SElEDEHQDAkIX1VJRAEUF19TVEEAcAoDXl5eLkdGWDBDTElEpAAIQjFDQwAIQjFTVAAIQjJDQwAI
QjJTVAAIQ0ZBTgAIQ01EUgAIRE9DSwAIRUpFVAAITUNBUAAIUExNWAAIUEVDSAAIUEVDTAAIUEVO
VgAIUElOVgAIUFBTSAAIUFBTTAAIUFNUUAAIUlBXUgAITFNURQAIU0xQQwAIVlBXUgAUHEVDTUQJ
oBVFQ09OoglDTURSWyEKFHBoQ01EUluCHkJBVDAIX0hJRAxB0AwKCF9VSUQAFAhfU1RBAKQAECFc
AFuBHEdOVlMQAEAPQk5VTQgACEIxU0MIABBCMVNTCFuCHkJBVDEIX0hJRAxB0AwKCF9VSUQBFAhf
U1RBAKQAEBpcAFuBFUdOVlMQAEgQQjJTQwgAEEIyU1MIW4IfQkFUMghfSElEDEHQDAoIX1VJRAoC
FAhfU1RBAKQAW4I4LwNfU0JfUENJMERPQ0sIX0hJRA1BQkNEMDAwMQAIX0NJRAxB0AwVCF9VSUQK
AhQIX1NUQQCkABAfX1NCX1uCGExJRDAIX0hJRAxB0AwNFAhfU1RBAKQACF9TMF8SBgQAAAAAoBJT
UzNfCF9TM18SBwQKBQAAAKASU1M0XwhfUzRfEgcECgYAAAAIX1M1XxIHBAoHAAAAFEIEUFRTXwGg
OmhcLwRfU0JfUENJMExQQ0JTUFRTaFwvA19TQl9QQ0kwTlBUU2hcLwRfU0JfUENJMExQQ0JTSU9T
aBRDBVdBS18BXC8EX1NCX1BDSTBMUENCU1dBS2hcLwNfU0JfUENJME5XQUtoXC8EX1NCX1BDSTBM
UENCTVdBS2hcLwRfU0JfUENJMExQQ0JTSU9XaA==
====
begin-base64 644 FACP.1
RkFDUIQAAAACGUlOVEVMIERRNzdLQiAgOgAAAEFNSSATAAEAQKA1npihIp4BAQkAsgAAAKChAAAA
BAAAAAAAAAQEAAAAAAAAUAQAAAgEAAAgBAAAAAAAAAQCAQQQAAAAZQA5AAAEEAAAAA0AMhAAAKWE
AwABCAAA+QwAAAAAAAAGAAAA
====
begin-base64 644 FPDT.4
RlBEVEQAAAAB5UlOVEVMIERRNzdLQiAgOgAAAEFNSSATAAEAAQAQAQAAAAAYUFSeAAAAAAAAEAEA
AAAAOFBUngAAAAA=
====
begin-base64 644 HPET.7
SFBFVDgAAAABaUlOVEVMIERRNzdLQiAgOgAAAEFNSS4FAAAAAaeGgAAAAAAAAND+AAAAAAABAAA=
====
begin-base64 644 MCFG.6
TUNGRzwAAAAB+ElOVEVMIERRNzdLQiAgOgAAAE1TRlSXAAAAAAAAAAAAAAAAAAD4AAAAAAAAAD8A
AAAA
====
begin-base64 644 RSDT.0
UlNEVFQAAAABkElOVEVMIERRNzdLQiAgOgAAAE1TRlQTAAEAEKEingBGI56YRiOe4EYjnhhHI55Y
RyOekEcjngBLI56wVCOe2F8jnpBgI544YSOe
====
begin-base64 644 SSDT.10
U1NEVCILAAABY0lOVEVMIERRNzdLQiAgOgAAAElOVEwXEQUgEEYMXAAIU1NEVBJDBQwNQ1BVMElT
VCAADBgAcZwMqgkAAA1BUElTVCAgIAAMmGodngwDAwAADUNQVTBDU1QgAAwYUB2eDDsIAAANQVBD
U1QgICAADBh8HZ4MGQEAAAhDRkdEDN/2ZgAIXFBEQzAMAAAAgAhcUERDMQwAAACACFxQREMyDAAA
AIAIXFBEQzMMAAAAgAhcUERDNAwAAACACFxQREM1DAAAAIAIXFBEQzYMAAAAgAhcUERDNwwAAACA
CFxTRFRMABBNClxfUFJfW4BQUE1UAAwYvzWeCykAW4FFCVBQTVQQUEdSVggAIENOVEQIQUNSVAhB
UFNWCEFBQzAIQ1BJRCBDUFBDCENDVFAIQ0xWTAhDQk1JCFBMMTAQUEwyMBBQTFcwCENUQzAIVEFS
MAhQUEMwCFBMMTEQUEwyMRBQTFcxCENUQzEIVEFSMQhQUEMxCFBMMTIQUEwyMhBQTFcyCENUQzII
VEFSMghQUEMyCBBKK1wuX1BSX0NQVTAISEkwXwAISEMwXwAUKF9QREMBcENQUENcLwNfUFJfQ1BV
MF9QUENwQ1BEQ2hgR0NBUGCkYBRGCENUTEQAoE4Hk1xFQ09OAaBEB5BbElwuX1BSX0NOVEQAWxJc
LwNfU0JfUFRJRFdQTUQAoEEFXC5fUFJfQ05URAhCVUZGER0KGgEAAAAAADAKAaUAIQAABwAAAAAA
AAAAAAAAXC8DX1NCX1BUSURXUE1EQlVGRlwvA19TQl9QVElESVNQQxQbX09TQwRwQ09TQ2hpamtg
R0NBUGBDVExEpGAUSAZDUERDAYpoAFJFVlOKaAoEU0laRXCHaGBwdGAKCABhWxNoCkB3YQoIAFRF
TVAIU1RTMBEHCgQAAAAAc1NUUzBURU1QYqRDT1NDERMKEBamd0AMKb5Hnr3YcFhxOVNSRVZTU0la
RWIUTQtDT1NDBIprAFNUUzCKawoEQ0FQMIpoAElJRDCKaAoESUlEMYpoCghJSUQyimgKDElJRDMI
VUlEMBETChAWpndADCm+R5692HBYcTlTilVJRDAARUlEMIpVSUQwCgRFSUQxilVJRDAKCEVJRDKK
VUlEMAoMRUlEM6AykpCQk0lJRDBFSUQwk0lJRDFFSUQxkJNJSUQyRUlEMpNJSUQzRUlEM3AKBlNU
UzCka6AOkpNpAXAKClNUUzCka6RrFE4KR0NBUAGKaABTVFMwimgKBENBUDCgEpGTU1RTMAoGk1NU
UzAKCqQAoBZ7U1RTMAEAe0NBUDAL/wtDQVAwpAB9e1BEQzAM////fwBDQVAwUERDMKBHBXtDRkdE
Cj4AoEwEkJB7Q0ZHRAsABAB7UERDMAoYAJJ7U0RUTAoCAH1TRFRMCgJTRFRMW4BDU1QwAIOIU1NE
VAoHAIOIU1NEVAoIAFsgQ1NUMEhDMF+kABBPFlwuX1BSX0NQVTEISEkxXwAISEMxXwAUH19QREMB
cFwvA19QUl9DUFUwQ1BEQ2hgR0NBUGCkYBQiX09TQwRwXC8DX1BSX0NQVTBDT1NDaGlqa2BHQ0FQ
YKRgFE4HR0NBUAGKaABTVFMximgKBENBUDGgEpGTU1RTMQoGk1NUUzEKCqQAoBZ7U1RTMQEAe0NB
UDEL/wtDQVAxpAB9e1BEQzEM////fwBDQVAxUERDMaAQk3tQREMxCgkACglBUFBUoA17UERDMQoY
AEFQQ1RwUERDMVBEQzCkABRKBEFQQ1QAoEIEkHtDRkdECi4AkntTRFRMCiAAfVNEVEwKIFNEVExb
gENTVDEAg4hTU0RUCgoAg4hTU0RUCgsAWyBDU1QxSEMxXxRJBEFQUFQAoEEEkHtDRkdEAQCSe1NE
VEwKEAB9U0RUTAoQU0RUTFuASVNUMQCDiFNTRFQKBACDiFNTRFQKBQBbIElTVDFISTFfEEQOXC5f
UFJfQ1BVMhQfX1BEQwFwXC8DX1BSX0NQVTBDUERDaGBHQ0FQYKRgFCJfT1NDBHBcLwNfUFJfQ1BV
MENPU0NoaWprYEdDQVBgpGAURAlHQ0FQAYpoAFNUUzKKaAoEQ0FQMqASkZNTVFMyCgaTU1RTMgoK
pACgFntTVFMyAQB7Q0FQMgv/C0NBUDKkAH17UERDMgz///9/AENBUDJQREMyoBuTe1BEQzIKCQAK
CVwvA19QUl9DUFUxQVBQVKAYe1BEQzIKGABcLwNfUFJfQ1BVMUFQQ1RwUERDMlBEQzCkABBEDlwu
X1BSX0NQVTMUH19QREMBcFwvA19QUl9DUFUwQ1BEQ2hgR0NBUGCkYBQiX09TQwRwXC8DX1BSX0NQ
VTBDT1NDaGlqa2BHQ0FQYKRgFEQJR0NBUAGKaABTVFMzimgKBENBUDOgEpGTU1RTMwoGk1NUUzMK
CqQAoBZ7U1RTMwEAe0NBUDML/wtDQVAzpAB9e1BEQzMM////fwBDQVAzUERDM6Abk3tQREMzCgkA
CglcLwNfUFJfQ1BVMUFQUFSgGHtQREMzChgAXC8DX1BSX0NQVTFBUENUcFBEQzNQREMwpAAQRA5c
Ll9QUl9DUFU0FB9fUERDAXBcLwNfUFJfQ1BVMENQRENoYEdDQVBgpGAUIl9PU0MEcFwvA19QUl9D
UFUwQ09TQ2hpamtgR0NBUGCkYBRECUdDQVABimgAU1RTNIpoCgRDQVA0oBKRk1NUUzQKBpNTVFM0
CgqkAKAWe1NUUzQBAHtDQVA0C/8LQ0FQNKQAfXtQREM0DP///38AQ0FQNFBEQzSgG5N7UERDNAoJ
AAoJXC8DX1BSX0NQVTFBUFBUoBh7UERDNAoYAFwvA19QUl9DUFUxQVBDVHBQREM0UERDMKQAEEQO
XC5fUFJfQ1BVNRQfX1BEQwFwXC8DX1BSX0NQVTBDUERDaGBHQ0FQYKRgFCJfT1NDBHBcLwNfUFJf
Q1BVMENPU0NoaWprYEdDQVBgpGAURAlHQ0FQAYpoAFNUUzWKaAoEQ0FQNaASkZNTVFM1CgaTU1RT
NQoKpACgFntTVFM1AQB7Q0FQNQv/C0NBUDWkAH17UERDNQz///9/AENBUDVQREM1oBuTe1BEQzUK
CQAKCVwvA19QUl9DUFUxQVBQVKAYe1BEQzUKGABcLwNfUFJfQ1BVMUFQQ1RwUERDNVBEQzCkABBE
DlwuX1BSX0NQVTYUH19QREMBcFwvA19QUl9DUFUwQ1BEQ2hgR0NBUGCkYBQiX09TQwRwXC8DX1BS
X0NQVTBDT1NDaGlqa2BHQ0FQYKRgFEQJR0NBUAGKaABTVFM2imgKBENBUDagEpGTU1RTNgoGk1NU
UzYKCqQAoBZ7U1RTNgEAe0NBUDYL/wtDQVA2pAB9e1BEQzYM////fwBDQVA2UERDNqAbk3tQREM2
CgkACglcLwNfUFJfQ1BVMUFQUFSgGHtQREM2ChgAXC8DX1BSX0NQVTFBUENUcFBEQzZQREMwpAAQ
RA5cLl9QUl9DUFU3FB9fUERDAXBcLwNfUFJfQ1BVMENQRENoYEdDQVBgpGAUIl9PU0MEcFwvA19Q
Ul9DUFUwQ09TQ2hpamtgR0NBUGCkYBRECUdDQVABimgAU1RTN4poCgRDQVA3oBKRk1NUUzcKBpNT
VFM3CgqkAKAWe1NUUzcBAHtDQVA3C/8LQ0FQN6QAfXtQREM3DP///38AQ0FQN1BEQzegG5N7UERD
NwoJAAoJXC8DX1BSX0NQVTFBUFBUoBh7UERDNwoYAFwvA19QUl9DUFUxQVBDVHBQREM3UERDMKQA
====
begin-base64 644 SSDT.8
U1NEVG0DAAAB8klOVEVMIERRNzdLQiAgOgAAAElOVEwSEQkgEEYJXAAIU1RGRREKCgcQBgAAAADv
CFNURkQRCgoHkAYAAAAA7whGWlRGEQoKBwAAAAAAAPUIRENGTBEKCgfBAAAAAACxCFNDQkYRAwoV
CENNREMAFEIER1RGQgp3Q01EQwo4YFsTU0NCRmAKOENNRFh3Q01EQwoHYIxTQ0JGcmABAEEwMDFw
aENNRFhwaUEwMDF1Q01EQxBBK1wvA19TQl9QQ0kwU0FUMAhSRUdGARQSX1JFRwKgC5NoCgJwaVJF
R0YIVE1EMBEDChSKVE1EMABQSU8wilRNRDAKBERNQTCKVE1EMAoIUElPMYpUTUQwCgxETUExilRN
RDAKEENITkYUMl9HVE0AcAp4UElPMHAKFERNQTBwCnhQSU8xcAoURE1BMX1DSE5GCgVDSE5GpFRN
RDAUBl9TVE0DW4JEBVNQVDAIX0FEUgv//xRFBF9HVEYAcABDTURDoBSRRFNTUEZIUFBHVEZCU1RG
RAoGoQtHVEZCU1RGRQoGR1RGQkZaVEYAR1RGQkRDRkwApFNDQkZbgkYFU1BUMQhfQURSDP//AQAU
RQRfR1RGAHAAQ01EQ6AUkURTU1BGSFBQR1RGQlNURkQKBqELR1RGQlNURkUKBkdURkJGWlRGAEdU
RkJEQ0ZMAKRTQ0JGW4JGBVNQVDIIX0FEUgz//wIAFEUEX0dURgBwAENNREOgFJFEU1NQRkhQUEdU
RkJTVEZECgahC0dURkJTVEZFCgZHVEZCRlpURgBHVEZCRENGTACkU0NCRluCRgVTUFQzCF9BRFIM
//8DABRFBF9HVEYAcABDTURDoBSRRFNTUEZIUFBHVEZCU1RGRAoGoQtHVEZCU1RGRQoGR1RGQkZa
VEYAR1RGQkRDRkwApFNDQkZbgkYFU1BUNAhfQURSDP//BAAURQRfR1RGAHAAQ01EQ6AUkURTU1BG
SFBQR1RGQlNURkQKBqELR1RGQlNURkUKBkdURkJGWlRGAEdURkJEQ0ZMAKRTQ0JGW4JGBVNQVDUI
X0FEUgz//wUAFEUEX0dURgBwAENNREOgFJFEU1NQRkhQUEdURkJTVEZECgahC0dURkJTVEZFCgZH
VEZCRlpURgBHVEZCRENGTACkU0NCRg==
====
begin-base64 644 SSDT.9
U1NEVKoJAAABZklOVEVMIERRNzdLQiAgOgAAAElOVEwXEQUgEEWYXC5fUFJfQ1BVMAhfUFBDABRO
CF9QQ1QAcFwuX1BSX0NQUENcLwNfUFJfQ1BVMF9QUEOgPpB7Q0ZHRAEAe1BEQzABAKQSLAIRFAoR
ggwAfwAAAAAAAAAAAAAAeQARFAoRggwAfwAAAAAAAAAAAAAAeQCkEiwCERQKEYIMAAEQAAAAEQAA
AAAAAHkAERQKEYIMAAEIAACzAAAAAAAAAHkAFBlYUFNTAKANe1BEQzABAKROUFNTpFNQU1MIU1BT
UxJDIRASIAYMHQwAAAzo/QAADG4AAAAMCgAAAAyDAAAADAAAAAASIAYMHAwAAAzo/QAADG4AAAAM
CgAAAAyDAQAADAEAAAASIAYMuAsAAAz68AAADG4AAAAMCgAAAAyDAgAADAIAAAASIAYMVAsAAAzH
5gAADG4AAAAMCgAAAAyDAwAADAMAAAASIAYM8AoAAAzE3AAADG4AAAAMCgAAAAyDBAAADAQAAAAS
IAYMjAoAAAzw0gAADG4AAAAMCgAAAAyDBQAADAUAAAASIAYMKAoAAAzmxgAADG4AAAAMCgAAAAyD
BgAADAYAAAASIAYMxAkAAAyCvQAADG4AAAAMCgAAAAyDBwAADAcAAAASIAYM/AgAAAwuqwAADG4A
AAAMCgAAAAyDCAAADAgAAAASIAYMmAgAAAwAoAAADG4AAAAMCgAAAAyDCQAADAkAAAASIAYMNAgA
AAxPlwAADG4AAAAMCgAAAAyDCgAADAoAAAASIAYM0AcAAAzSjgAADG4AAAAMCgAAAAyDCwAADAsA
AAASIAYMbAcAAAx6hgAADG4AAAAMCgAAAAyDDAAADAwAAAASIAYMCAcAAAxNfgAADG4AAAAMCgAA
AAyDDQAADA0AAAASIAYMpAYAAAwmdAAADG4AAAAMCgAAAAyDDgAADA4AAAASIAYMQAYAAAxXbAAA
DG4AAAAMCgAAAAyDDwAADA8AAAASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYM
AAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACA
DAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAM
AAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwA
AACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIAS
IAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwA
AACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAA
AIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAA
gAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAA
AIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIAIX1BTUxJDIRASIAYMHQwAAAzo/QAA
DAoAAAAMCgAAAAwA/wAADAD/AAASIAYMHAwAAAzo/QAADAoAAAAMCgAAAAwAHwAADAAfAAASIAYM
uAsAAAz68AAADAoAAAAMCgAAAAwAHgAADAAeAAASIAYMVAsAAAzH5gAADAoAAAAMCgAAAAwAHQAA
DAAdAAASIAYM8AoAAAzE3AAADAoAAAAMCgAAAAwAHAAADAAcAAASIAYMjAoAAAzw0gAADAoAAAAM
CgAAAAwAGwAADAAbAAASIAYMKAoAAAzmxgAADAoAAAAMCgAAAAwAGgAADAAaAAASIAYMxAkAAAyC
vQAADAoAAAAMCgAAAAwAGQAADAAZAAASIAYM/AgAAAwuqwAADAoAAAAMCgAAAAwAFwAADAAXAAAS
IAYMmAgAAAwAoAAADAoAAAAMCgAAAAwAFgAADAAWAAASIAYMNAgAAAxPlwAADAoAAAAMCgAAAAwA
FQAADAAVAAASIAYM0AcAAAzSjgAADAoAAAAMCgAAAAwAFAAADAAUAAASIAYMbAcAAAx6hgAADAoA
AAAMCgAAAAwAEwAADAATAAASIAYMCAcAAAxNfgAADAoAAAAMCgAAAAwAEgAADAASAAASIAYMpAYA
AAwmdAAADAoAAAAMCgAAAAwAEQAADAARAAASIAYMQAYAAAxXbAAADAoAAAAMCgAAAAwAEAAADAAQ
AAASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAA
gAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACA
DAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYM
AAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACA
DAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAM
AAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwA
AACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIAS
IAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwA
AACADAAAAIASIAYMAAAAgAwAAACADAAAAIAMAAAAgAwAAACADAAAAIASIAYMAAAAgAwAAACADAAA
AIAMAAAAgAwAAACADAAAAIAIUFNERgAUSwRfUFNEAKAuklBTREZwVENOVIiDiEhQU0QAAAoEAHBU
Q05UiIOIU1BTRAAACgQAcP9QU0RGoA97UERDMAsACACkSFBTRKRTUFNECEhQU0QSDQESCgUKBQAA
Cv4KgAhTUFNEEg0BEgoFCgUAAAr8CoA=
====
begin-base64 644 TCPA.5
VENQQTIAAAACPUlOVEVMIERRNzdLQiAgOgAAAE1TRlQTAAABAAAAAAEAEJA0ngAAAAA=
====
begin-base64 644 headers
ClJTRCBQVFI6IENoZWNrc3VtPTIxOSwgT0VNSUQ9SU5URUwsIFJzZHRBZGRyZXNzPTB4OWUyMmEw
MjgKCgpSU0RUOiBMZW5ndGg9ODQsIFJldmlzaW9uPTEsIENoZWNrc3VtPTE0NCwKCU9FTUlEPUlO
VEVMLCBPRU0gVGFibGUgSUQ9RFE3N0tCLCBPRU0gUmV2aXNpb249MHgzYSwKCUNyZWF0b3IgSUQ9
TVNGVCwgQ3JlYXRvciBSZXZpc2lvbj0weDEwMDEzCgoKCUVudHJpZXM9eyAweDllMjJhMTEwLCAw
eDllMjM0NjAwLCAweDllMjM0Njk4LCAweDllMjM0NmUwLCAweDllMjM0NzE4LCAweDllMjM0NzU4
LCAweDllMjM0NzkwLCAweDllMjM0YjAwLCAweDllMjM1NGIwLCAweDllMjM1ZmQ4LCAweDllMjM2
MDkwLCAweDllMjM2MTM4IH0KCgoJRFNEVD0weDllMjJhMTk4CglJTlRfTU9ERUw9QVBJQwoJU0NJ
X0lOVD05CglTTUlfQ01EPTB4YjIsIEFDUElfRU5BQkxFPTB4YTAsIEFDUElfRElTQUJMRT0weGEx
LCBTNEJJT1NfUkVRPTB4MAoJUE0xYV9FVlRfQkxLPTB4NDAwLTB4NDAzCglQTTFhX0NOVF9CTEs9
MHg0MDQtMHg0MDUKCVBNMl9DTlRfQkxLPTB4NDUwLTB4NDUwCglQTTJfVE1SX0JMSz0weDQwOC0w
eDQwYgoJUE0yX0dQRTBfQkxLPTB4NDIwLTB4NDJmCglQX0xWTDJfTEFUPTEwMW1zLCBQX0xWTDNf
TEFUPTU3bXMKCUZMVVNIX1NJWkU9MTAyNCwgRkxVU0hfU1RSSURFPTE2CglEVVRZX09GRlNFVD0w
LCBEVVRZX1dJRFRIPTAKCURBWV9BTFJNPTEzLCBNT05fQUxSTT0wLCBDRU5UVVJZPTUwCglGbGFn
cz17V0JJTlZELFBST0NfQzEsU0xQX0JVVFRPTixSVENfUzR9CgoKRFNEVDogTGVuZ3RoPTQxODA5
LCBSZXZpc2lvbj0yLCBDaGVja3N1bT0yMDcsCglPRU1JRD1JTlRFTCwgT0VNIFRhYmxlIElEPURR
NzdLQiwgT0VNIFJldmlzaW9uPTB4M2EsCglDcmVhdG9yIElEPUlOVEwsIENyZWF0b3IgUmV2aXNp
b249MHgyMDA1MTExNwoKCkFQSUM6IExlbmd0aD0xNDYsIFJldmlzaW9uPTMsIENoZWNrc3VtPTMz
LAoJT0VNSUQ9SU5URUwsIE9FTSBUYWJsZSBJRD1EUTc3S0IsIE9FTSBSZXZpc2lvbj0weDNhLAoJ
Q3JlYXRvciBJRD1BTUksIENyZWF0b3IgUmV2aXNpb249MHgxMDAxMwoKCkZQRFQ6IExlbmd0aD02
OCwgUmV2aXNpb249MSwgQ2hlY2tzdW09MjI5LAoJT0VNSUQ9SU5URUwsIE9FTSBUYWJsZSBJRD1E
UTc3S0IsIE9FTSBSZXZpc2lvbj0weDNhLAoJQ3JlYXRvciBJRD1BTUksIENyZWF0b3IgUmV2aXNp
b249MHgxMDAxMwoKClRDUEE6IExlbmd0aD01MCwgUmV2aXNpb249MiwgQ2hlY2tzdW09NjEsCglP
RU1JRD1JTlRFTCwgT0VNIFRhYmxlIElEPURRNzdLQiwgT0VNIFJldmlzaW9uPTB4M2EsCglDcmVh
dG9yIElEPU1TRlQsIENyZWF0b3IgUmV2aXNpb249MHgxMDAwMDEzCgoKTUNGRzogTGVuZ3RoPTYw
LCBSZXZpc2lvbj0xLCBDaGVja3N1bT0yNDgsCglPRU1JRD1JTlRFTCwgT0VNIFRhYmxlIElEPURR
NzdLQiwgT0VNIFJldmlzaW9uPTB4M2EsCglDcmVhdG9yIElEPU1TRlQsIENyZWF0b3IgUmV2aXNp
b249MHg5NwoKCkhQRVQ6IExlbmd0aD01NiwgUmV2aXNpb249MSwgQ2hlY2tzdW09MTA1LAoJT0VN
SUQ9SU5URUwsIE9FTSBUYWJsZSBJRD1EUTc3S0IsIE9FTSBSZXZpc2lvbj0weDNhLAoJQ3JlYXRv
ciBJRD1BTUkuLCBDcmVhdG9yIFJldmlzaW9uPTB4NQoKClNTRFQ6IExlbmd0aD04NzcsIFJldmlz
aW9uPTEsIENoZWNrc3VtPTI0MiwKCU9FTUlEPUlOVEVMLCBPRU0gVGFibGUgSUQ9RFE3N0tCLCBP
RU0gUmV2aXNpb249MHgzYSwKCUNyZWF0b3IgSUQ9SU5UTCwgQ3JlYXRvciBSZXZpc2lvbj0weDIw
MDkxMTEyCgoKU1NEVDogTGVuZ3RoPTI0NzQsIFJldmlzaW9uPTEsIENoZWNrc3VtPTEwMiwKCU9F
TUlEPUlOVEVMLCBPRU0gVGFibGUgSUQ9RFE3N0tCLCBPRU0gUmV2aXNpb249MHgzYSwKCUNyZWF0
b3IgSUQ9SU5UTCwgQ3JlYXRvciBSZXZpc2lvbj0weDIwMDUxMTE3CgoKU1NEVDogTGVuZ3RoPTI4
NTAsIFJldmlzaW9uPTEsIENoZWNrc3VtPTk5LAoJT0VNSUQ9SU5URUwsIE9FTSBUYWJsZSBJRD1E
UTc3S0IsIE9FTSBSZXZpc2lvbj0weDNhLAoJQ3JlYXRvciBJRD1JTlRMLCBDcmVhdG9yIFJldmlz
aW9uPTB4MjAwNTExMTcKCgpETUFSOiBMZW5ndGg9MTg0LCBSZXZpc2lvbj0xLCBDaGVja3N1bT04
OSwKCU9FTUlEPUlOVEVMLCBPRU0gVGFibGUgSUQ9RFE3N0tCLCBPRU0gUmV2aXNpb249MHgzYSwK
CUNyZWF0b3IgSUQ9SU5UTCwgQ3JlYXRvciBSZXZpc2lvbj0weDEKCgpBU0YhOiBMZW5ndGg9MTY1
LCBSZXZpc2lvbj0zMiwgQ2hlY2tzdW09MTUwLAoJT0VNSUQ9SU5URUwsIE9FTSBUYWJsZSBJRD1E
UTc3S0IsIE9FTSBSZXZpc2lvbj0weDNhLAoJQ3JlYXRvciBJRD1URlNNLCBDcmVhdG9yIFJldmlz
aW9uPTB4ZjQyNDAKCgpCR1JUOiBMZW5ndGg9NTYsIFJldmlzaW9uPTAsIENoZWNrc3VtPTIyNiwK
CU9FTUlEPUlOVEVMLCBPRU0gVGFibGUgSUQ9RFE3N0tCLCBPRU0gUmV2aXNpb249MHgzYSwKCUNy
ZWF0b3IgSUQ9QU1JLCBDcmVhdG9yIFJldmlzaW9uPTB4MTAwMTMKCg==
====

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Evergrowing source tracking table

Mike Belopuhov-5
On Fri, May 05, 2017 at 16:21 +0200, Remi Barbier wrote:

> >Synopsis:      PF: Evergrowing source tracking table.
> >Category:      PF
> >Environment:
>         System      : OpenBSD 6.1
>         Details     : OpenBSD 6.1-current (GENERIC.MP) #50: Thu May  4
> 11:52:48 MDT 2017
>
> [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
>
>         Architecture: OpenBSD.amd64
>         Machine     : amd64
> >Description:
>         <Expired entries in the source tracking table never get
> removed. Both current and 6.1 are impacted.>
> >How-To-Repeature:
>         <Tested with tcp, ssh connections. Any rule tracking the sources.
> As shown by pfctl -vsS and pfctl -vsi the expired entries are not
> removed. pfctl -F Sources won't help.
>
> It seems that in the move from pf.c rev 1.1018 to 1.1019, calling
> pf_remove_src_node() was omitted:
>
> RCS file: /cvs/src/sys/net/pf.c,v
> retrieving revision 1.1018
> retrieving revision 1.1019
> diff -u -r1.1018 -r1.1019
> --- src/sys/net/pf.c    2017/03/09 05:47:28     1.1018
> +++ src/sys/net/pf.c    2017/03/17 17:19:16     1.1019
> @@ -1,4 +1,4 @@
> -/*     $OpenBSD: pf.c,v 1.1018 2017/03/09 05:47:28 claudio Exp $ */
> +/*     $OpenBSD: pf.c,v 1.1019 2017/03/17 17:19:16 mpi Exp $ */
>
>  /*
>   * Copyright (c) 2001 Daniel Hartmeier
>
>
> @@ -1235,20 +1241,26 @@
>  }
>
>  void
> -pf_purge_expired_src_nodes(void)
> +pf_purge_expired_src_nodes(int waslocked)
>  {
>         struct pf_src_node              *cur, *next;
> +       int                              locked = waslocked;
>
> -       NET_ASSERT_LOCKED();
> -
>         for (cur = RB_MIN(pf_src_tree, &tree_src_tracking); cur; cur = next) {
>         next = RB_NEXT(pf_src_tree, &tree_src_tracking, cur);
>
>                 if (cur->states == 0 && cur->expire <= time_uptime) {
> -                       next = RB_NEXT(pf_src_tree, &tree_src_tracking, cur);
> -                       pf_remove_src_node(cur);
> +                       if (! locked) {
> +                               rw_enter_write(&pf_consistency_lock);
> +                               next = RB_NEXT(pf_src_tree,
> +                                   &tree_src_tracking, cur);
> +                               locked = 1;
> +                       }
>                 }
>         }
> +
> +       if (locked && !waslocked)
> +               rw_exit_write(&pf_consistency_lock);
>  }
> >

Thanks for the report.  You're absolutely right.

diff --git sys/net/pf.c sys/net/pf.c
index 02af280c9ec..2af0c2da6c6 100644
--- sys/net/pf.c
+++ sys/net/pf.c
@@ -1254,10 +1254,11 @@ pf_purge_expired_src_nodes(int waslocked)
  rw_enter_write(&pf_consistency_lock);
  next = RB_NEXT(pf_src_tree,
     &tree_src_tracking, cur);
  locked = 1;
  }
+ pf_remove_src_node(cur);
  }
  }
 
  if (locked && !waslocked)
  rw_exit_write(&pf_consistency_lock);

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Evergrowing source tracking table

Remi Barbier
Thanks for the quick confirmation.
PR closed.

On 5 May 2017 at 17:55, Mike Belopuhov <[hidden email]> wrote:

> On Fri, May 05, 2017 at 16:21 +0200, Remi Barbier wrote:
>> >Synopsis:      PF: Evergrowing source tracking table.
>> >Category:      PF
>> >Environment:
>>         System      : OpenBSD 6.1
>>         Details     : OpenBSD 6.1-current (GENERIC.MP) #50: Thu May  4
>> 11:52:48 MDT 2017
>>
>> [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
>>
>>         Architecture: OpenBSD.amd64
>>         Machine     : amd64
>> >Description:
>>         <Expired entries in the source tracking table never get
>> removed. Both current and 6.1 are impacted.>
>> >How-To-Repeature:
>>         <Tested with tcp, ssh connections. Any rule tracking the sources.
>> As shown by pfctl -vsS and pfctl -vsi the expired entries are not
>> removed. pfctl -F Sources won't help.
>>
>> It seems that in the move from pf.c rev 1.1018 to 1.1019, calling
>> pf_remove_src_node() was omitted:
>>
>> RCS file: /cvs/src/sys/net/pf.c,v
>> retrieving revision 1.1018
>> retrieving revision 1.1019
>> diff -u -r1.1018 -r1.1019
>> --- src/sys/net/pf.c    2017/03/09 05:47:28     1.1018
>> +++ src/sys/net/pf.c    2017/03/17 17:19:16     1.1019
>> @@ -1,4 +1,4 @@
>> -/*     $OpenBSD: pf.c,v 1.1018 2017/03/09 05:47:28 claudio Exp $ */
>> +/*     $OpenBSD: pf.c,v 1.1019 2017/03/17 17:19:16 mpi Exp $ */
>>
>>  /*
>>   * Copyright (c) 2001 Daniel Hartmeier
>>
>>
>> @@ -1235,20 +1241,26 @@
>>  }
>>
>>  void
>> -pf_purge_expired_src_nodes(void)
>> +pf_purge_expired_src_nodes(int waslocked)
>>  {
>>         struct pf_src_node              *cur, *next;
>> +       int                              locked = waslocked;
>>
>> -       NET_ASSERT_LOCKED();
>> -
>>         for (cur = RB_MIN(pf_src_tree, &tree_src_tracking); cur; cur = next) {
>>         next = RB_NEXT(pf_src_tree, &tree_src_tracking, cur);
>>
>>                 if (cur->states == 0 && cur->expire <= time_uptime) {
>> -                       next = RB_NEXT(pf_src_tree, &tree_src_tracking, cur);
>> -                       pf_remove_src_node(cur);
>> +                       if (! locked) {
>> +                               rw_enter_write(&pf_consistency_lock);
>> +                               next = RB_NEXT(pf_src_tree,
>> +                                   &tree_src_tracking, cur);
>> +                               locked = 1;
>> +                       }
>>                 }
>>         }
>> +
>> +       if (locked && !waslocked)
>> +               rw_exit_write(&pf_consistency_lock);
>>  }
>> >
>
> Thanks for the report.  You're absolutely right.
>
> diff --git sys/net/pf.c sys/net/pf.c
> index 02af280c9ec..2af0c2da6c6 100644
> --- sys/net/pf.c
> +++ sys/net/pf.c
> @@ -1254,10 +1254,11 @@ pf_purge_expired_src_nodes(int waslocked)
>                                 rw_enter_write(&pf_consistency_lock);
>                                 next = RB_NEXT(pf_src_tree,
>                                     &tree_src_tracking, cur);
>                                 locked = 1;
>                         }
> +                       pf_remove_src_node(cur);
>                 }
>         }
>
>         if (locked && !waslocked)
>                 rw_exit_write(&pf_consistency_lock);

Loading...