Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Feb 2016 10:36:47 +0000
From:      "Sgalabov_gmail.com (Stanislav Galabov)" <phabric-noreply@FreeBSD.org>
To:        freebsd-mips@freebsd.org
Subject:   [Differential] [Request, 597 lines] D5187: U-Boot loader (ubldr) support for MIPS
Message-ID:  <differential-rev-PHID-DREV-lydkabzwr6zbaqctozb5-req@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

--b1_1f56356ac303c3f039e449ffad2bc799
Content-Type: text/plain; charset = "utf-8"
Content-Transfer-Encoding: 8bit

Sgalabov_gmail.com created this revision.
Sgalabov_gmail.com added reviewers: MIPS, loader, adrian, imp, ray.
Sgalabov_gmail.com added a subscriber: freebsd-mips-list.
Sgalabov_gmail.com set the repository for this revision to rS FreeBSD src repository.
Sgalabov_gmail.com added a project: MIPS.

REVISION SUMMARY
  This revision implements ubldr support for MIPS.
  A lot of it just mimics the ARM support for ubldr, basically the biggest change is in the start.S file.
  
  Apart from that, several Makefiles in sys/boot were not including the bsd.stand.mk, which prevented proper build for MIPS targets (due to some things compiled as PIC and others - as non-PIC). These Makefiles now include bsd.stand.mk and things build fine for MIPS (everything is build as non-PIC).
  
  I've used the head version of U-Boot and modified it to support the FreeBSD API for MIPS architectures. I've submitted the patch to U-Boot as well. In case it doesn't go through for some reason, I am also putting a copy of the patch here:
  https://www.dropbox.com/s/dmgz9idpj4beqpr/0001-Add-FreeBSD-API-support-for-MIPS-platforms.patch?dl=0

TEST PLAN
  I've tested this with the following setup:
  
  - QEMU with its 'mips' target in little endian mode
  - u-boot compiled for quemu-mips (little endian)
  - ubldr compiled for mipsel
  - a kernel quickly put together for the qemu-mips target that only supports basic UART (so we can see the bootlog).
  
  Output of the whole thing booting can be seen below:
  
  > qemu-system-mipsel -M mips -bios u-boot.bin -nographic -net nic,macaddr=00:16:3e:00:00:01 -net tap -hda hda.img -cpu 24Kc
  
  W: /etc/qemu-ifup: no bridge for guest interface found
  Could not open option rom 'vgabios-cirrus.bin': No such file or directory
  
  U-Boot 2016.03-rc1-dirty (Feb 04 2016 - 11:41:10 +0200)
  
  Board: Qemu -M mips CPU: 24Kc proc_id=0x19300
  DRAM:  128 MiB
  Using default environment
  
  In:    serial
  Out:   serial
  Err:   serial
  Net:   NE2000
  IDE:   Bus 0: OK Bus 1: OK
  
    Device 0: Model: QEMU HARDDISK  Firm: 2.0.0  Ser#: QM00001 
              Type: Hard Disk
              Capacity: 50.0 MB = 0.0 GB (102400 x 512)
    Device 1: not available
    Device 2: not available
    Device 3: not available
  
  Hit any key to stop autoboot:  0 
  qemu-mipsel # tftp; bootelf
  Using NE2000 device
  TFTP from server 192.168.78.1; our IP address is 192.168.78.10
  Filename 'demo'.
  Load address: 0x80500000
  Loading: #################
  
    	 5.6 MiB/s
  
  done
  Bytes transferred = 244995 (3bd03 hex)
  
  Starting application at 0x80800080 ...
  --------------------------------------
  
  Consoles: U-Boot console  
  Compatible U-Boot API signature found @87f6e0a8
  
  FreeBSD/mipsel U-Boot loader, Revision 1.2
  (root@stassi-bsd9, Wed Feb  3 17:44:10 EET 2016)
  
  DRAM: 128MB
  Number of U-Boot devices: 2
  U-Boot env: loaderdev not set, will probe all devices.
  Found U-Boot device: disk
  
    Probing all disk devices...
    Checking unit=0 slice=<auto> partition=<auto>... good.
  
  Booting from disk0s1:
  /
  /boot/kernel/kernel data=0x3ebaa8+0x27ff8 syms=[0x4+0x43a90+0x4+0x5e7cf]
  Hit [Enter] to boot immediately, or any other key for command prompt.
  Booting [/boot/kernel/kernel]...               
  Kernel entry at 0x80100100...
  Kernel args: (null)
  U-Boot args (from -2141491201 args):
  Environment:
  	???m??
  disk0s1:
  
  entry: mips_init()
  Cache info:
  
    picache_stride    = 4096
    picache_loopcount = 0
    pdcache_stride    = 1024
    pdcache_loopcount = 2
  
  cpu0: MIPS Technologies processor v0.147
  
    MMU: Standard TLB, 16 entries (4K 16K 64K 256K 1M 16M 64M 256M pg sizes)
    L1 i-cache: 2 ways of 64 sets, 16 bytes per line
    L1 d-cache: 2 ways of 64 sets, 16 bytes per line
    L2 cache: disabled
    Config1=0x9e190c8e<WatchRegs,MIPS16,EJTAG>
    Config2=0x80000000
  
  Physical memory chunk(s):
  0x514000 - 0x1ffffff, 28229632 bytes (6892 pages)
  Maxmem is 0x2000000
  KDB: debugger backends: ddb
  KDB: current backend: ddb
  Copyright (c) 1992-2016 The FreeBSD Project.
  Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
  	The Regents of the University of California. All rights reserved.
  FreeBSD is a registered trademark of The FreeBSD Foundation.
  FreeBSD 11.0-CURRENT #0 733656d(local/sgalabov_mtk)-dirty: Wed Feb  3 19:56:05 EET 2016
  
    root@stassi-bsd9:/usr/obj/mips.mipsel/src/sgalabov/sys/QEMU-MIPS mips
  
  gcc version 4.2.1 20070831 patched [FreeBSD]
  Preloaded elf kernel "kernel" at 0x8050dfe0.
  real memory  = 33554432 (32768K bytes)
  Physical memory chunk(s):
  0x005a8000 - 0x01f47fff, 26869760 bytes (6560 pages)
  avail memory = 26456064 (25MB)
  ULE: setup cpu 0
  random: entropy device external interface
  null: <full device, null device, zero device>
  mem: <memory>
  nfslock: pseudo-device
  nexus0: <MIPS32 root nexus>
  random: harvesting attach, 8 bytes (4 bits) from nexus0
  clock0: <Generic MIPS32 ticker> on nexus0
  Timecounter "MIPS32" frequency 50000000 Hz quality 800
  Event timer "MIPS32" frequency 50000000 Hz quality 800
  random: harvesting attach, 8 bytes (4 bits) from clock0
  obio0 at mem 0x10000000-0x1fffffff on nexus0
  uart0: <16550 or compatible> on obio0
  uart0: console (-1,n,8,1)
  uart0: fast interrupt
  uart0: PPS capture mode 2 (DCD)
  random: harvesting attach, 8 bytes (4 bits) from uart0
  random: harvesting attach, 8 bytes (4 bits) from obio0
  Device configuration finished.
  Timecounters tick every 10.000 msec
  tcp_init: net.inet.tcp.tcbhashsize auto tuned to 512
  lo0: bpf attached
  Trying to mount root from ufs:ada0 []...
  mountroot: waiting for device ada0...
  Mounting from ufs:ada0 failed with error 19.
  
  Loader variables:
  <snip>

REPOSITORY
  rS FreeBSD src repository

REVISION DETAIL
  https://reviews.freebsd.org/D5187

AFFECTED FILES
  sys/boot/Makefile.mips
  sys/boot/common/Makefile.inc
  sys/boot/common/self_reloc.c
  sys/boot/fdt/Makefile
  sys/boot/ficl/Makefile
  sys/boot/mips/Makefile
  sys/boot/mips/uboot/Makefile
  sys/boot/mips/uboot/conf.c
  sys/boot/mips/uboot/help.uboot
  sys/boot/mips/uboot/ldscript.mips
  sys/boot/mips/uboot/loader.conf
  sys/boot/mips/uboot/start.S
  sys/boot/mips/uboot/version
  sys/boot/uboot/fdt/Makefile
  sys/boot/uboot/lib/Makefile
  sys/boot/uboot/lib/elf_freebsd.c
  sys/boot/uboot/lib/glue.c

EMAIL PREFERENCES
  https://reviews.freebsd.org/settings/panel/emailpreferences/

To: Sgalabov_gmail.com, MIPS, loader, adrian, imp, ray
Cc: freebsd-mips-list

--b1_1f56356ac303c3f039e449ffad2bc799
Content-Type: text/x-patch; charset=utf-8; name="D5187.13000.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D5187.13000.patch"

ZGlmZiAtLWdpdCBhL3N5cy9ib290L3Vib290L2xpYi9nbHVlLmMgYi9zeXMvYm9vdC91Ym9vdC9s
aWIvZ2x1ZS5jCi0tLSBhL3N5cy9ib290L3Vib290L2xpYi9nbHVlLmMKKysrIGIvc3lzL2Jvb3Qv
dWJvb3QvbGliL2dsdWUuYwpAQCAtODMsOCArODMsMTMgQEAKIAlpZiAodWJvb3RfYWRkcmVzcyA9
PSAwKQogCQl1Ym9vdF9hZGRyZXNzID0gMjU1ICogMTAyNCAqIDEwMjQ7CiAKKyNpZmRlZiBfX21p
cHMKKwlzcCA9ICh2b2lkICopKHVib290X2FkZHJlc3MgJiB+MHgwMDAwZmZmZik7CisJc3BlbmQg
PSBzcCArIDB4MDAwMTAwMDAgLSBBUElfU0lHX01BR0xFTjsKKyNlbHNlCiAJc3AgPSAodm9pZCAq
KSh1Ym9vdF9hZGRyZXNzICYgfjB4MDAwZmZmZmYpOwogCXNwZW5kID0gc3AgKyAweDAwMzAwMDAw
IC0gQVBJX1NJR19NQUdMRU47CisjZW5kaWYKIAl3aGlsZSAoc3AgPCBzcGVuZCkgewogCQlpZiAo
IWJjbXAoc3AsIEFQSV9TSUdfTUFHSUMsIEFQSV9TSUdfTUFHTEVOKSkgewogCQkJKnNpZyA9IChz
dHJ1Y3QgYXBpX3NpZ25hdHVyZSAqKXNwOwpkaWZmIC0tZ2l0IGEvc3lzL2Jvb3QvdWJvb3QvbGli
L2VsZl9mcmVlYnNkLmMgYi9zeXMvYm9vdC91Ym9vdC9saWIvZWxmX2ZyZWVic2QuYwotLS0gYS9z
eXMvYm9vdC91Ym9vdC9saWIvZWxmX2ZyZWVic2QuYworKysgYi9zeXMvYm9vdC91Ym9vdC9saWIv
ZWxmX2ZyZWVic2QuYwpAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4K
ICNpbmNsdWRlIDxzeXMvbGlua2VyLmg+CiAKKyNpZmRlZiBfX21pcHMKKyNpbmNsdWRlIDxzeXMv
cHJvYy5oPgorI2luY2x1ZGUgPG1hY2hpbmUvZnJhbWUuaD4KKyNlbmRpZgogI2luY2x1ZGUgPG1h
Y2hpbmUvbWRfdmFyLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9tZXRhZGF0YS5oPgogI2luY2x1ZGUg
PG1hY2hpbmUvZWxmLmg+CmRpZmYgLS1naXQgYS9zeXMvYm9vdC91Ym9vdC9saWIvTWFrZWZpbGUg
Yi9zeXMvYm9vdC91Ym9vdC9saWIvTWFrZWZpbGUKLS0tIGEvc3lzL2Jvb3QvdWJvb3QvbGliL01h
a2VmaWxlCisrKyBiL3N5cy9ib290L3Vib290L2xpYi9NYWtlZmlsZQpAQCAtNDYsNiArNDYsNyBA
QAogCiBDTEVBTkZJTEVTKz0JbWFjaGluZQogCisuaW5jbHVkZSA8YnNkLnN0YW5kLm1rPgogLmlu
Y2x1ZGUgPGJzZC5saWIubWs+CiAKIGJlZm9yZWRlcGVuZCAke09CSlN9OiBtYWNoaW5lCmRpZmYg
LS1naXQgYS9zeXMvYm9vdC91Ym9vdC9mZHQvTWFrZWZpbGUgYi9zeXMvYm9vdC91Ym9vdC9mZHQv
TWFrZWZpbGUKLS0tIGEvc3lzL2Jvb3QvdWJvb3QvZmR0L01ha2VmaWxlCisrKyBiL3N5cy9ib290
L3Vib290L2ZkdC9NYWtlZmlsZQpAQCAtMjgsNiArMjgsNyBAQAogCiBDTEVBTkZJTEVTKz0JbWFj
aGluZQogCisuaW5jbHVkZSA8YnNkLnN0YW5kLm1rPgogLmluY2x1ZGUgPGJzZC5saWIubWs+CiAK
IGJlZm9yZWRlcGVuZCAke09CSlN9OiBtYWNoaW5lCmRpZmYgLS1naXQgYS9zeXMvYm9vdC9taXBz
L3Vib290L3ZlcnNpb24gYi9zeXMvYm9vdC9taXBzL3Vib290L3ZlcnNpb24KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYm9vdC9taXBzL3Vib290L3ZlcnNpb24K
QEAgLTAsMCArMSw5IEBACiskRnJlZUJTRCQKKworTk9URSBBTlkgQ0hBTkdFUyBZT1UgTUFLRSBU
TyBUSEUgQk9PVEJMT0NLUyBIRVJFLiAgVGhlIGZvcm1hdCBvZiB0aGlzCitmaWxlIGlzIGltcG9y
dGFudC4gIE1ha2Ugc3VyZSB0aGUgY3VycmVudCB2ZXJzaW9uIG51bWJlciBpcyBvbiBsaW5lIDYu
CisKKzEuMjoJRXh0ZW5kZWQgd2l0aCBOQU5EIEZTIHN1cHBvcnQuCisxLjE6CUZsYXR0ZW5lZCBE
ZXZpY2UgVHJlZSBibG9iIHN1cHBvcnQuCisxLjA6CUFkZGVkIHN0b3JhZ2Ugc3VwcG9ydC4gQm9v
dGluZyBmcm9tIEhERCwgVVNCLCBldGMuIGlzIG5vdyBwb3NzaWJsZS4KKzAuNToJSW5pdGlhbCBV
LUJvb3QvYXJtIHZlcnNpb24gKG5ldGJvb3Rpbmcgb25seSkuCmRpZmYgLS1naXQgYS9zeXMvYm9v
dC9taXBzL3Vib290L3N0YXJ0LlMgYi9zeXMvYm9vdC9taXBzL3Vib290L3N0YXJ0LlMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYm9vdC9taXBzL3Vib290L3N0
YXJ0LlMKQEAgLTAsMCArMSwxMDcgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDE2IFN0YW5p
c2xhdiBHYWxhYm92CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAq
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkK
KyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqICRGcmVlQlNEJAorICov
CisKKyNpbmNsdWRlIDxtYWNoaW5lL2FzbS5oPgorCisJLnRleHQKKyNpZmRlZiBTVVBQT1JUX1NF
TEZfUkVMT0MKKwkuZXh0ZXJuCV9DX0xBQkVMKHNlbGZfcmVsb2MpCisjZW5kaWYKKwkuZXh0ZXJu
IF9DX0xBQkVMKG1haW4pCisJLndlYWsJX0RZTkFNSUMKKworLyoKKyAqIEVudHJ5IHBvaW50IHRv
IHRoZSBsb2FkZXIgdGhhdCBVLUJvb3QgcGFzc2VzIGNvbnRyb2wgdG8uCisgKi8KK0VOVFJZKF9z
dGFydCkKKyNpZmRlZiBTVVBQT1JUX1NFTEZfUkVMT0MKKwkvKiBYWFg6IERvZXMgYW55b25lIG5l
ZWQgdGhpcyBwYXJ0IGF0IGFsbD8gSXQgY3VycmVudGx5IGRvZXNuJ3Qgd29yay4gKi8KKwkuc2V0
IG1pcHMzMnIyCisJLyogCisJICogRG8gc2VsZi1yZWxvY2F0aW9uIHdoZW4gdGhlIHdlYWsgZXh0
ZXJuYWwgc3ltYm9sIF9EWU5BTUlDIGlzIG5vbi1OVUxMCisJICogV2hlbiBsaW5rZWQgYXMgYSBk
eW5hbWljIHJlbG9jYXRhYmxlIGZpbGUsIHRoZSBsaW5rZXIgYXV0b21hdGljYWxseQorCSAqIGRl
ZmluZXMgX0RZTkFNSUMgd2l0aCBhIHZhbHVlIHRoYXQgaXMgdGhlIG9mZnNldCBvZiB0aGUgZHlu
YW1pYworCSAqIHJlbG9jYXRpb24gaW5mbyBzZWN0aW9uLgorCSAqIE5vdGUgdGhhdCB3ZSdyZSBz
dGlsbCBvbiB1LWJvb3QncyBzdGFjayBoZXJlLCBidXQgdGhlIHNlbGZfcmVsb2MgCisJICogY29k
ZSB1c2VzIG9ubHkgYSBjb3VwbGUgZG96ZW4gYnl0ZXMgb2Ygc3RhY2sgc3BhY2UuCisJICovCisJ
bHcJdDAsIC5oZXJlX29mZgkJLyogLmhlcmVfb2ZmIGlzIGEgc3ltYm9sIHdob3NlIHZhbHVlICov
CisJCQkJCS8qIGlzIGl0cyBvd24gb2Zmc2V0IGluIHRoZSB0ZXh0IHNlZy4gKi8KKwkJCQkJLyog
R2V0IGl0cyBwYy1yZWxhdGl2ZSBhZGRyZXNzIGFuZCAqLworCWx3CXQxLCAuZHluYW1pY19vZmYJ
Lyogc3VidHJhY3QgaXRzIHZhbHVlIGFuZCB3ZSBnZXQgKi8KKwlub3AKKwlhZGQJdDIsIHQwLCB0
MQorCW1vdm4JdDEsIHQyLCB0MQorCWJlcXoJdDEsIDFmCisJbm9wCisJYglfQ19MQUJFTChzZWxm
X3JlbG9jKQkvKiBEbyByZWxvYyBpZiBfRFlOQU1JQyBpcyBub24tTlVMTC4gKi8KKwlub3AKKzE6
CisjZW5kaWYKKwlzdwlzcCwgdWJvb3RfYWRkcmVzcworCWIJbWFpbgorRU5EKF9zdGFydCkKKwor
I2lmZGVmIFNVUFBPUlRfU0VMRl9SRUxPQworCS8qIAorCSAqIERhdGEgZm9yIHNlbGYtcmVsb2Nh
dGlvbiwgaW4gdGhlIHRleHQgc2VnbWVudCBmb3IgcGMtcmVsIGFjY2Vzcy4KKwkgKi8KKy5oZXJl
X29mZjoKKwkud29yZAkuIC0gX3N0YXJ0CisuZHluYW1pY19vZmY6CisJLndvcmQJX0RZTkFNSUMK
KyNlbmRpZgorCisvKgorICogc3lzY2FsbCgpCisgKi8KK0VOVFJZKHN5c2NhbGwpCisJc3cJcmEs
IHJldF9hZGRyZXNzCisJbHcJdDksIHN5c2NhbGxfcHRyCisJamFscgl0OQorCW5vcAorCWx3CXJh
LCByZXRfYWRkcmVzcworCWpyCXJhCisJbm9wCitFTkQoc3lzY2FsbCkKKworLyoKKyAqIERhdGEg
c2VjdGlvbgorICovCisJLmRhdGEKKwkuYWxpZ24JNAorCS5nbG9ibAlzeXNjYWxsX3B0cgorc3lz
Y2FsbF9wdHI6CisJLmxvbmcJMAorCisJLmdsb2JsCXVib290X2FkZHJlc3MKK3Vib290X2FkZHJl
c3M6CisJLmxvbmcJMAorCityZXRfYWRkcmVzczoKKwkubG9uZwkwCmRpZmYgLS1naXQgYS9zeXMv
Ym9vdC9taXBzL3Vib290L2xvYWRlci5jb25mIGIvc3lzL2Jvb3QvbWlwcy91Ym9vdC9sb2FkZXIu
Y29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9ib290L21p
cHMvdWJvb3QvbG9hZGVyLmNvbmYKQEAgLTAsMCArMSwxMyBAQAorIyBUaGlzIGlzIGRlZmF1bHRz
L2xvYWRlci5jb25mIGZvciBBUk0sIGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yIGxvYWRlcig4KS4K
KyMgRG8gbm90IG1vZGlmeSB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlLCBpbnN0ZWFkIHB1dCB5
b3VyIGN1c3RvbWl6YXRpb25zCisjIGludG8gL2Jvb3QvbG9hZGVyLmNvbmYgb3IgL2Jvb3QvbG9h
ZGVyLmNvbmYubG9jYWwKKyMgJEZyZWVCU0QkCisKK2F1dG9ib290X2RlbGF5PTEwCitib290Zmls
ZT0ia2VybmVsIiAgICAgICMgS2VybmVsIG5hbWUgKHBvc3NpYmx5IGFic29sdXRlIHBhdGgpCitr
ZXJuZWw9Imtlcm5lbCIgICAgICAgICMgL2Jvb3Qgc3ViLWRpcmVjdG9yeSBjb250YWluaW5nIGtl
cm5lbCBhbmQgbW9kdWxlcworbG9hZGVyX2NvbmZfZmlsZXM9Ii9ib290L2xvYWRlci5jb25mIC9i
b290L2xvYWRlci5jb25mLmxvY2FsIgorbW9kdWxlX3BhdGg9Ii9ib290L2tlcm5lbDsvYm9vdC9t
b2R1bGVzOy9ib290L2R0YiIKK25leHRib290X2NvbmY9Ii9ib290L25leHRib290LmNvbmYiCitu
ZXh0Ym9vdF9lbmFibGU9Ik5PIgordmVyYm9zZV9sb2FkaW5nPSJOTyIKZGlmZiAtLWdpdCBhL3N5
cy9ib290L21pcHMvdWJvb3QvbGRzY3JpcHQubWlwcyBiL3N5cy9ib290L21pcHMvdWJvb3QvbGRz
Y3JpcHQubWlwcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9i
b290L21pcHMvdWJvb3QvbGRzY3JpcHQubWlwcwpAQCAtMCwwICsxLDEzMyBAQAorLyogJEZyZWVC
U0QkICovCisKK09VVFBVVF9BUkNIKG1pcHMpCitFTlRSWShfc3RhcnQpCitTRUNUSU9OUworewor
ICAvKiBSZWFkLW9ubHkgc2VjdGlvbnMsIG1lcmdlZCBpbnRvIHRleHQgc2VnbWVudDogKi8KKyAg
LiA9IFVCTERSX0xPQURBRERSICsgU0laRU9GX0hFQURFUlM7CisgIC50ZXh0ICAgICAgOgorICB7
CisgICAgKigudGV4dCkKKyAgICAvKiAuZ251Lndhcm5pbmcgc2VjdGlvbnMgYXJlIGhhbmRsZWQg
c3BlY2lhbGx5IGJ5IGVsZjMyLmVtLiAgKi8KKyAgICAqKC5nbnUud2FybmluZykKKyAgICAqKC5n
bnUubGlua29uY2UudCopCisgIH0gPTAKKyAgX2V0ZXh0ID0gLjsKKyAgUFJPVklERSAoZXRleHQg
PSAuKTsKKyAgLmludGVycCAgICAgOiB7ICooLmludGVycCkgCX0KKyAgLmhhc2ggICAgICAgICAg
OiB7ICooLmhhc2gpCQl9CisgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CisgIC5k
eW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CisgIC5nbnUudmVyc2lvbiAgIDogeyAqKC5n
bnUudmVyc2lvbikJfQorICAuZ251LnZlcnNpb25fZCAgIDogeyAqKC5nbnUudmVyc2lvbl9kKQl9
CisgIC5nbnUudmVyc2lvbl9yICAgOiB7ICooLmdudS52ZXJzaW9uX3IpCX0KKyAgLnJlbGEudGV4
dCAgICAgOgorICAgIHsgKigucmVsYS50ZXh0KSAqKC5yZWxhLmdudS5saW5rb25jZS50KikgfQor
ICAucmVsYS5kYXRhICAgICA6CisgICAgeyAqKC5yZWxhLmRhdGEpICooLnJlbGEuZ251Lmxpbmtv
bmNlLmQqKSB9CisgIC5yZWxhLnJvZGF0YSAgIDoKKyAgICB7ICooLnJlbGEucm9kYXRhKSAqKC5y
ZWxhLmdudS5saW5rb25jZS5yKikgfQorICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3Qp
CQl9CisgIC5yZWxhLmdvdDEgICAgIDogeyAqKC5yZWxhLmdvdDEpCQl9CisgIC5yZWxhLmdvdDIg
ICAgIDogeyAqKC5yZWxhLmdvdDIpCQl9CisgIC5yZWxhLmN0b3JzICAgIDogeyAqKC5yZWxhLmN0
b3JzKQl9CisgIC5yZWxhLmR0b3JzICAgIDogeyAqKC5yZWxhLmR0b3JzKQl9CisgIC5yZWxhLmlu
aXQgICAgIDogeyAqKC5yZWxhLmluaXQpCX0KKyAgLnJlbGEuZmluaSAgICAgOiB7ICooLnJlbGEu
ZmluaSkJfQorICAucmVsYS5ic3MgICAgICA6IHsgKigucmVsYS5ic3MpCQl9CisgIC5yZWxhLnBs
dCAgICAgIDogeyAqKC5yZWxhLnBsdCkJCX0KKyAgLnJlbGEuc2RhdGEgICAgOiB7ICooLnJlbGEu
c2RhdGEpCQl9CisgIC5yZWxhLnNic3MgICAgIDogeyAqKC5yZWxhLnNic3MpCQl9CisgIC5yZWxh
LnNkYXRhMiAgIDogeyAqKC5yZWxhLnNkYXRhMikJCX0KKyAgLnJlbGEuc2JzczIgICAgOiB7ICoo
LnJlbGEuc2JzczIpCQl9CisgIC5pbml0ICAgICAgOiB7ICooLmluaXQpICAgIH0gPTAKKyAgLmZp
bmkgICAgICA6IHsgKiguZmluaSkgICAgfSA9MAorICAucm9kYXRhICAgIDogeyAqKC5yb2RhdGEp
ICooLmdudS5saW5rb25jZS5yKikgfQorICAucm9kYXRhMSAgIDogeyAqKC5yb2RhdGExKSB9Cisg
IC5zZGF0YTIgICAgOiB7ICooLnNkYXRhMikgIH0KKyAgLnNic3MyICAgICA6IHsgKiguc2JzczIp
ICAgfQorICAvKiBBZGp1c3QgdGhlIGFkZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQgdG8gdGhl
IG5leHQgcGFnZSB1cC4gKi8KKyAgLiA9ICgoLiArIDB4MTAwMCkgJiB+KDB4MTAwMCAtIDEpKTsK
KyAgLmRhdGEgICAgOgorICB7CisgICAgKiguZGF0YSkKKyAgICAqKC5nbnUubGlua29uY2UuZCop
CisgICAgQ09OU1RSVUNUT1JTCisgIH0KKyAgLmRhdGExICAgOiB7ICooLmRhdGExKSB9CisgIC5n
b3QxICAgICAgICAgICA6IHsgKiguZ290MSkgfQorICAuZHluYW1pYyAgICAgICAgOiB7ICooLmR5
bmFtaWMpIH0KKyAgLyogUHV0IC5jdG9ycyBhbmQgLmR0b3JzIG5leHQgdG8gdGhlIC5nb3QyIHNl
Y3Rpb24sIHNvIHRoYXQgdGhlIHBvaW50ZXJzCisgICAgIGdldCByZWxvY2F0ZWQgd2l0aCAtbXJl
bG9jYXRhYmxlLiBBbHNvIHB1dCBpbiB0aGUgLmZpeHVwIHBvaW50ZXJzLgorICAgICBUaGUgY3Vy
cmVudCBjb21waWxlciBubyBsb25nZXIgbmVlZHMgdGhpcywgYnV0IGtlZXAgaXQgYXJvdW5kIGZv
ciAyLjcuMiAgKi8KKyAgICAgICAgICAgICAgICBQUk9WSURFIChfR09UMl9TVEFSVF8gPSAuKTsK
KyAgLmdvdDIgICAgICAgICAgIDogIHsgKiguZ290MikgfQorICAgICAgICAgICAgICAgIFBST1ZJ
REUgKF9fQ1RPUl9MSVNUX18gPSAuKTsKKyAgLmN0b3JzICAgICAgICAgIDogeyAqKC5jdG9ycykg
fQorICAgICAgICAgICAgICAgIFBST1ZJREUgKF9fQ1RPUl9FTkRfXyA9IC4pOworICAgICAgICAg
ICAgICAgIFBST1ZJREUgKF9fRFRPUl9MSVNUX18gPSAuKTsKKyAgLmR0b3JzICAgICAgICAgIDog
eyAqKC5kdG9ycykgfQorICAgICAgICAgICAgICAgIFBST1ZJREUgKF9fRFRPUl9FTkRfXyA9IC4p
OworICAgICAgICAgICAgICAgIFBST1ZJREUgKF9GSVhVUF9TVEFSVF8gPSAuKTsKKyAgLmZpeHVw
ICAgICAgICAgIDogeyAqKC5maXh1cCkgfQorICAgICAgICAgICAgICAgIFBST1ZJREUgKF9GSVhV
UF9FTkRfID0gLik7CisgICAgICAgICAgICAgICAgUFJPVklERSAoX0dPVDJfRU5EXyA9IC4pOwor
ICAgICAgICAgICAgICAgIFBST1ZJREUgKF9HT1RfU1RBUlRfID0gLik7CisgIC5nb3QgICAgICAg
ICAgICA6IHsgKiguZ290KSB9CisgIC5nb3QucGx0ICAgICAgICA6IHsgKiguZ290LnBsdCkgfQor
ICAgICAgICAgICAgICAgIFBST1ZJREUgKF9HT1RfRU5EXyA9IC4pOworICAvKiBXZSB3YW50IHRo
ZSBzbWFsbCBkYXRhIHNlY3Rpb25zIHRvZ2V0aGVyLCBzbyBzaW5nbGUtaW5zdHJ1Y3Rpb24gb2Zm
c2V0cworICAgICBjYW4gYWNjZXNzIHRoZW0gYWxsLCBhbmQgaW5pdGlhbGl6ZWQgZGF0YSBhbGwg
YmVmb3JlIHVuaW5pdGlhbGl6ZWQsIHNvCisgICAgIHdlIGNhbiBzaG9ydGVuIHRoZSBvbi1kaXNr
IHNlZ21lbnQgc2l6ZS4gICovCisgIC5zZGF0YSAgICAgOiB7ICooLnNkYXRhKSB9CisgIF9lZGF0
YSAgPSAgLjsKKyAgUFJPVklERSAoZWRhdGEgPSAuKTsKKyAgLnNic3MgICAgICA6CisgIHsKKyAg
ICBQUk9WSURFIChfX3Nic3Nfc3RhcnQgPSAuKTsKKyAgICAqKC5zYnNzKQorICAgICooLnNjb21t
b24pCisgICAgKiguZHluc2JzcykKKyAgICBQUk9WSURFIChfX3Nic3NfZW5kID0gLik7CisgIH0K
KyAgLnBsdCAgIDogeyAqKC5wbHQpIH0KKyAgLmJzcyAgICAgICA6CisgIHsKKyAgIFBST1ZJREUg
KF9fYnNzX3N0YXJ0ID0gLik7CisgICAqKC5keW5ic3MpCisgICAqKC5ic3MpCisgICAqKENPTU1P
TikKKyAgfQorICBfZW5kID0gLiA7CisgIFBST1ZJREUgKGVuZCA9IC4pOworICAvKiBTdGFicyBk
ZWJ1Z2dpbmcgc2VjdGlvbnMuICAqLworICAuc3RhYiAwIDogeyAqKC5zdGFiKSB9CisgIC5zdGFi
c3RyIDAgOiB7ICooLnN0YWJzdHIpIH0KKyAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCisgICAg
IFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8g
dGhlIGJlZ2lubmluZworICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAu
ICAqLworICAvKiBEV0FSRiAxICovCisgIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1Zykg
fQorICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQorICAvKiBHTlUgRFdBUkYgMSBl
eHRlbnNpb25zICovCisgIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9
CisgIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9CisgIC8qIERXQVJG
IDEuMSBhbmQgRFdBUkYgMiAqLworICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJh
bmdlcykgfQorICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KKyAg
LyogRFdBUkYgMiAqLworICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbykgfQor
ICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9CisgIC5kZWJ1Z19saW5l
ICAgICAwIDogeyAqKC5kZWJ1Z19saW5lKSB9CisgIC5kZWJ1Z19mcmFtZSAgICAwIDogeyAqKC5k
ZWJ1Z19mcmFtZSkgfQorICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9Cisg
IC5kZWJ1Z19sb2MgICAgICAwIDogeyAqKC5kZWJ1Z19sb2MpIH0KKyAgLmRlYnVnX21hY2luZm8g
IDAgOiB7ICooLmRlYnVnX21hY2luZm8pIH0KKyAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNp
b25zICovCisgIC5kZWJ1Z193ZWFrbmFtZXMgMCA6IHsgKiguZGVidWdfd2Vha25hbWVzKSB9Cisg
IC5kZWJ1Z19mdW5jbmFtZXMgMCA6IHsgKiguZGVidWdfZnVuY25hbWVzKSB9CisgIC5kZWJ1Z190
eXBlbmFtZXMgMCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9CisgIC5kZWJ1Z192YXJuYW1lcyAg
MCA6IHsgKiguZGVidWdfdmFybmFtZXMpIH0KKyAgLyogVGhlc2UgbXVzdCBhcHBlYXIgcmVnYXJk
bGVzcyBvZiAgLiAgKi8KK30KZGlmZiAtLWdpdCBhL3N5cy9ib290L21pcHMvdWJvb3QvaGVscC51
Ym9vdCBiL3N5cy9ib290L21pcHMvdWJvb3QvaGVscC51Ym9vdApuZXcgZmlsZSBtb2RlIDEwMDY0
NAotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9ib290L21pcHMvdWJvb3QvaGVscC51Ym9vdApAQCAt
MCwwICsxLDI3IEBACiskRnJlZUJTRCQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUdWJl
bnYgRFNob3cgb3IgaW1wb3J0IFUtQm9vdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKworCXViZW52
IDxpbXBvcnQgfCBzaG93PiBbdmFybmFtZSAuLi5dCisKKwlEaXNwbGF5IFUtQm9vdCBlbnZpcm9u
bWVudCB2YXJpYWJsZXMsIG9yIGltcG9ydCB0aGVtIGludG8gdGhlCisJbG9hZGVyIGVudmlyb25t
ZW50ICh3aGljaCBtYWtlcyB0aGVtIGF2YWlsYWJsZSBpbiB0aGUga2VybmVsKS4KKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyBUdWJlbnYgU2ltcG9ydCBESW1wb3J0IFUtQm9vdCBlbnYgdmFy
cworCisJdWJlbnYgaW1wb3J0IFt2YXJuYW1lIC4uLl0KKworCUlmIG5vIHZhcmlhYmxlIG5hbWVz
IGFyZSBzcGVjaWZpZWQsIGFsbCBVLUJvb3QgZW52aXJvbm1lbnQKKwl2YXJpYWJsZXMgYXJlIGlt
cG9ydGVkLiAgRWFjaCB2YXJpYWJsZSBpcyBwcmVmaXhlZCB3aXRoICJ1Ym9vdC4iCisJdG8gYXZv
aWQgYW55IHBvc3NpYmxlIGNvbmZsaWN0cyB3aXRoIGxvYWRlciBvciBrZXJuZWwgdmFyaWFibGVz
LgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFR1YmVudiBTc2hvdyBEU2hvdyBVLUJvb3Qg
ZW52IHZhcnMKKworCXViZW52IHNob3cgW3Zhcm5hbWUgLi4uXQorCisJSWYgbm8gdmFyaWFibGUg
bmFtZXMgYXJlIHNwZWNpZmllZCwgYWxsIFUtQm9vdCBlbnZpcm9ubWVudAorCXZhcmlhYmxlcyBh
cmUgc2hvd24uCisKZGlmZiAtLWdpdCBhL3N5cy9ib290L21pcHMvdWJvb3QvY29uZi5jIGIvc3lz
L2Jvb3QvbWlwcy91Ym9vdC9jb25mLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tIC9kZXYvbnVs
bAorKysgYi9zeXMvYm9vdC9taXBzL3Vib290L2NvbmYuYwpAQCAtMCwwICsxLDExMCBAQAorLyot
CisgKiBDb3B5cmlnaHQgKGMpIDIwMDggU2VtaWhhbGYsIFJhZmFsIEphd29yb3dza2kKKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgor
ICogU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK19fRkJT
RElEKCIkRnJlZUJTRCQiKTsKKworI2luY2x1ZGUgPHN0YW5kLmg+CisjaW5jbHVkZSAiYm9vdHN0
cmFwLmgiCisjaW5jbHVkZSAibGlidWJvb3QuaCIKKworI2lmIGRlZmluZWQoTE9BREVSX05FVF9T
VVBQT1JUKQorI2luY2x1ZGUgImRldl9uZXQuaCIKKyNlbmRpZgorCitzdHJ1Y3QgZGV2c3cgKmRl
dnN3W10gPSB7CisjaWYgZGVmaW5lZChMT0FERVJfRElTS19TVVBQT1JUKSB8fCBkZWZpbmVkKExP
QURFUl9DRDk2NjBfU1VQUE9SVCkKKwkmdWJvb3Rfc3RvcmFnZSwKKyNlbmRpZgorI2lmIGRlZmlu
ZWQoTE9BREVSX05FVF9TVVBQT1JUKQorCSZuZXRkZXYsCisjZW5kaWYKKwlOVUxMCit9OworCitz
dHJ1Y3QgZnNfb3BzICpmaWxlX3N5c3RlbVtdID0geworI2lmIGRlZmluZWQoTE9BREVSX1VGU19T
VVBQT1JUKQorCSZ1ZnNfZnNvcHMsCisjZW5kaWYKKyNpZiBkZWZpbmVkKExPQURFUl9DRDk2NjBf
U1VQUE9SVCkKKwkmY2Q5NjYwX2Zzb3BzLAorI2VuZGlmCisjaWYgZGVmaW5lZChMT0FERVJfRVhU
MkZTX1NVUFBPUlQpCisJJmV4dDJmc19mc29wcywKKyNlbmRpZgorI2lmIGRlZmluZWQoTE9BREVS
X05BTkRGU19TVVBQT1JUKQorCSZuYW5kZnNfZnNvcHMsCisjZW5kaWYKKyNpZiBkZWZpbmVkKExP
QURFUl9ORlNfU1VQUE9SVCkKKwkmbmZzX2Zzb3BzLAorI2VuZGlmCisjaWYgZGVmaW5lZChMT0FE
RVJfVEZUUF9TVVBQT1JUKQorCSZ0ZnRwX2Zzb3BzLAorI2VuZGlmCisjaWYgZGVmaW5lZChMT0FE
RVJfR1pJUF9TVVBQT1JUKQorCSZnemlwZnNfZnNvcHMsCisjZW5kaWYKKyNpZiBkZWZpbmVkKExP
QURFUl9CWklQMl9TVVBQT1JUKQorCSZiemlwZnNfZnNvcHMsCisjZW5kaWYKKwlOVUxMCit9Owor
CitzdHJ1Y3QgbmV0aWZfZHJpdmVyICpuZXRpZl9kcml2ZXJzW10gPSB7CisjaWYgZGVmaW5lZChM
T0FERVJfTkVUX1NVUFBPUlQpCisJJnVib290X25ldCwKKyNlbmRpZgorCU5VTEwsCit9OworCitz
dHJ1Y3QgZmlsZV9mb3JtYXQgKmZpbGVfZm9ybWF0c1tdID0geworCSZ1Ym9vdF9lbGYsCisJTlVM
TAorfTsKKworZXh0ZXJuIHN0cnVjdCBjb25zb2xlIHVib290X2NvbnNvbGU7CisKK3N0cnVjdCBj
b25zb2xlICpjb25zb2xlc1tdID0geworCSZ1Ym9vdF9jb25zb2xlLAorCU5VTEwKK307CisKK3Zv
aWQKK2Fib3J0KHZvaWQpCit7CisgCisJcHJpbnRmKCJlcnJvcjogbG9hZGVyIGFib3J0XG4iKTsK
Kwl3aGlsZSAoMSk7Cit9CisKK3ZvaWQKK2xvbmdqbXBlcnJvcih2b2lkKQoreworIAorCXByaW50
ZigiZXJyb3I6IGxvYWRlciBsb25nam1wIGVycm9yXG4iKTsKKwl3aGlsZSAoMSk7Cit9CmRpZmYg
LS1naXQgYS9zeXMvYm9vdC9taXBzL3Vib290L01ha2VmaWxlIGIvc3lzL2Jvb3QvbWlwcy91Ym9v
dC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9i
b290L21pcHMvdWJvb3QvTWFrZWZpbGUKQEAgLTAsMCArMSwxNzEgQEAKKyMgJEZyZWVCU0QkCisK
Ky5pbmNsdWRlIDxzcmMub3B0cy5taz4KKworU0VMRl9SRUxPQz89CW5vCisKK0ZJTEVTPQkJdWJs
ZHIKKworTkVXVkVSU1dIQVQ9CSJVLUJvb3QgbG9hZGVyIiAke01BQ0hJTkVfQVJDSH0KK0JJTkRJ
Uj89CS9ib290CitJTlNUQUxMRkxBR1M9CS1iCitXQVJOUz89CQkxCisjIEFkZHJlc3MgYXQgd2hp
Y2ggdWJsZHIgd2lsbCBiZSBsb2FkZWQuCisjIFRoaXMgdmFyaWVzIGZvciBkaWZmZXJlbnQgYm9h
cmRzIGFuZCBTT0NzLgorVUJMRFJfTE9BREFERFI/PQkweDgwODAwMDAwCisKKyMgQXJjaGl0ZWN0
dXJlLXNwZWNpZmljIGxvYWRlciBjb2RlCitTUkNTPQkJc3RhcnQuUyBjb25mLmMgdmVycy5jCisK
Ky5pZiAke1NFTEZfUkVMT0N9ICE9ICJubyIKK0ZJTEVTKz0JCXVibGRyLmJpbgorQ0ZMQUdTKz0J
LURTVVBQT1JUX1NFTEZfUkVMT0MKK1NSQ1MrPQkJc2VsZl9yZWxvYy5jCisuZW5kaWYKKworLmlm
ICFkZWZpbmVkKExPQURFUl9OT19ESVNLX1NVUFBPUlQpCitMT0FERVJfRElTS19TVVBQT1JUPz0J
eWVzCisuZWxzZQorTE9BREVSX0RJU0tfU1VQUE9SVD0Jbm8KKy5lbmRpZgorTE9BREVSX1VGU19T
VVBQT1JUPz0JeWVzCitMT0FERVJfQ0Q5NjYwX1NVUFBPUlQ/PQlubworTE9BREVSX0VYVDJGU19T
VVBQT1JUPz0Jbm8KKy5pZiAke01LX05BTkR9ICE9ICJubyIKK0xPQURFUl9OQU5ERlNfU1VQUE9S
VD89IHllcworLmVsc2UKK0xPQURFUl9OQU5ERlNfU1VQUE9SVD89IG5vCisuZW5kaWYKK0xPQURF
Ul9ORVRfU1VQUE9SVD89CXllcworTE9BREVSX05GU19TVVBQT1JUPz0JeWVzCitMT0FERVJfVEZU
UF9TVVBQT1JUPz0Jbm8KK0xPQURFUl9HWklQX1NVUFBPUlQ/PQlubworTE9BREVSX0JaSVAyX1NV
UFBPUlQ/PQlubworLmlmICR7TUtfRkRUfSAhPSAibm8iCitMT0FERVJfRkRUX1NVUFBPUlQ9CXll
cworLmVsc2UKK0xPQURFUl9GRFRfU1VQUE9SVD0Jbm8KKy5lbmRpZgorCisuaWYgJHtMT0FERVJf
RElTS19TVVBQT1JUfSA9PSAieWVzIgorQ0ZMQUdTKz0JLURMT0FERVJfRElTS19TVVBQT1JUCisu
ZW5kaWYKKy5pZiAke0xPQURFUl9VRlNfU1VQUE9SVH0gPT0gInllcyIKK0NGTEFHUys9CS1ETE9B
REVSX1VGU19TVVBQT1JUCisuZW5kaWYKKy5pZiAke0xPQURFUl9DRDk2NjBfU1VQUE9SVH0gPT0g
InllcyIKK0NGTEFHUys9CS1ETE9BREVSX0NEOTY2MF9TVVBQT1JUCisuZW5kaWYKKy5pZiAke0xP
QURFUl9FWFQyRlNfU1VQUE9SVH0gPT0gInllcyIKK0NGTEFHUys9CS1ETE9BREVSX0VYVDJGU19T
VVBQT1JUCisuZW5kaWYKKy5pZiAke0xPQURFUl9OQU5ERlNfU1VQUE9SVH0gPT0gInllcyIKK0NG
TEFHUys9CS1ETE9BREVSX05BTkRGU19TVVBQT1JUCisuZW5kaWYKKy5pZiAke0xPQURFUl9HWklQ
X1NVUFBPUlR9ID09ICJ5ZXMiCitDRkxBR1MrPQktRExPQURFUl9HWklQX1NVUFBPUlQKKy5lbmRp
ZgorLmlmICR7TE9BREVSX0JaSVAyX1NVUFBPUlR9ID09ICJ5ZXMiCitDRkxBR1MrPQktRExPQURF
Ul9CWklQMl9TVVBQT1JUCisuZW5kaWYKKy5pZiAke0xPQURFUl9ORVRfU1VQUE9SVH0gPT0gInll
cyIKK0NGTEFHUys9CS1ETE9BREVSX05FVF9TVVBQT1JUCisuZW5kaWYKKy5pZiAke0xPQURFUl9O
RlNfU1VQUE9SVH0gPT0gInllcyIKK0NGTEFHUys9CS1ETE9BREVSX05GU19TVVBQT1JUCisuZW5k
aWYKKy5pZiAke0xPQURFUl9URlRQX1NVUFBPUlR9ID09ICJ5ZXMiCitDRkxBR1MrPQktRExPQURF
Ul9URlRQX1NVUFBPUlQKKy5lbmRpZgorLmlmICR7TE9BREVSX0ZEVF9TVVBQT1JUfSA9PSAieWVz
IgorQ0ZMQUdTKz0JLUkkey5DVVJESVJ9Ly4uLy4uL2ZkdAorQ0ZMQUdTKz0JLUkkey5PQkpESVJ9
Ly4uLy4uL2ZkdAorQ0ZMQUdTKz0JLURMT0FERVJfRkRUX1NVUFBPUlQKK0xJQlVCT09UX0ZEVD0J
JHsuT0JKRElSfS8uLi8uLi91Ym9vdC9mZHQvbGlidWJvb3RfZmR0LmEKK0xJQkZEVD0JCSR7Lk9C
SkRJUn0vLi4vLi4vZmR0L2xpYmZkdC5hCisuZW5kaWYKKworQ0ZMQUdTKz0JLURORVRJRl9PUEVO
X0NMT1NFX09OQ0UKKworLmlmICR7TUtfRk9SVEh9ICE9ICJubyIKKyMgRW5hYmxlIEJvb3RGb3J0
aAorQk9PVF9GT1JUSD0JeWVzCitDRkxBR1MrPQktREJPT1RfRk9SVEggLUkkey5DVVJESVJ9Ly4u
Ly4uL2ZpY2wgLUkkey5DVVJESVJ9Ly4uLy4uL2ZpY2wvbWlwcworTElCRklDTD0JJHsuT0JKRElS
fS8uLi8uLi9maWNsL2xpYmZpY2wuYQorLmVuZGlmCisKKyMgQWx3YXlzIGFkZCBNSSBzb3VyY2Vz
CisuUEFUSDoJCSR7LkNVUkRJUn0vLi4vLi4vY29tbW9uCisuaW5jbHVkZQkiJHsuQ1VSRElSfS8u
Li8uLi9jb21tb24vTWFrZWZpbGUuaW5jIgorQ0ZMQUdTKz0JLUkkey5DVVJESVJ9Ly4uLy4uL2Nv
bW1vbgorQ0ZMQUdTKz0JLUkuCisKK0NMRUFORklMRVMrPQl2ZXJzLmMgbG9hZGVyLmhlbHAKKwor
Q0ZMQUdTKz0JLWZmcmVlc3RhbmRpbmcgLW1zb2Z0LWZsb2F0CisKK0xERkxBR1M9CS1ub3N0ZGxp
YiAtc3RhdGljIC1UICR7LkNVUkRJUn0vbGRzY3JpcHQuJHtNQUNISU5FX0NQVUFSQ0h9CisKKyMg
UHVsbCBpbiBjb21tb24gbG9hZGVyIGNvZGUKKy5QQVRIOgkJJHsuQ1VSRElSfS8uLi8uLi91Ym9v
dC9jb21tb24KKy5pbmNsdWRlCSIkey5DVVJESVJ9Ly4uLy4uL3Vib290L2NvbW1vbi9NYWtlZmls
ZS5pbmMiCitDRkxBR1MrPQktSSR7LkNVUkRJUn0vLi4vLi4vdWJvb3QvY29tbW9uCisKKyMgVS1C
b290IHN0YW5kYWxvbmUgc3VwcG9ydCBsaWJyYXJ5CitMSUJVQk9PVD0JJHsuT0JKRElSfS8uLi8u
Li91Ym9vdC9saWIvbGlidWJvb3QuYQorQ0ZMQUdTKz0JLUkkey5DVVJESVJ9Ly4uLy4uL3Vib290
L2xpYgorQ0ZMQUdTKz0JLUkkey5PQkpESVJ9Ly4uLy4uL3Vib290L2xpYgorCisjIHdoZXJlIHRv
IGdldCBsaWJzdGFuZCBmcm9tCitDRkxBR1MrPQktSSR7LkNVUkRJUn0vLi4vLi4vLi4vLi4vbGli
L2xpYnN0YW5kLworCisjIGNsYW5nIGRvZXNuJ3QgdW5kZXJzdGFuZCAlRCBhcyBhIHNwZWNpZmll
ciB0byBwcmludGYKK05PX1dFUlJPUi5jbGFuZz0KK05PX1dFUlJPUj0KKworRFBBREQ9CQkke0xJ
QkZJQ0x9ICR7TElCVUJPT1R9ICR7TElCRkRUfSAke0xJQlVCT09UX0ZEVH0gJHtMSUJTVEFORH0K
K0xEQUREPQkJJHtMSUJGSUNMfSAke0xJQlVCT09UfSAke0xJQkZEVH0gJHtMSUJVQk9PVF9GRFR9
IC1sc3RhbmQKKworT0JKUys9ICAke1NSQ1M6TiouaDpSOlMvJC8uby9nfQorCit2ZXJzLmM6CSR7
LkNVUkRJUn0vLi4vLi4vY29tbW9uL25ld3ZlcnMuc2ggJHsuQ1VSRElSfS92ZXJzaW9uCisJc2gg
JHsuQ1VSRElSfS8uLi8uLi9jb21tb24vbmV3dmVycy5zaCAkey5DVVJESVJ9L3ZlcnNpb24gJHtO
RVdWRVJTV0hBVH0KKworbG9hZGVyLmhlbHA6IGhlbHAuY29tbW9uIGhlbHAudWJvb3QgJHsuQ1VS
RElSfS8uLi8uLi9mZHQvaGVscC5mZHQKKwljYXQgJHsuQUxMU1JDfSB8IFwKKwkgICAgYXdrIC1m
ICR7LkNVUkRJUn0vLi4vLi4vY29tbW9uL21lcmdlX2hlbHAuYXdrID4gJHsuVEFSR0VUfQorCits
ZHNjcmlwdC5hYnM6CisJZWNobyAiVUJMRFJfTE9BREFERFIgPSAke1VCTERSX0xPQURBRERSfTsi
ID4key5UQVJHRVR9CisKK2xkc2NyaXB0LnBpZToKKwllY2hvICJVQkxEUl9MT0FEQUREUiA9IDA7
IiA+JHsuVEFSR0VUfQorCit1YmxkcjogJHtPQkpTfSBsZHNjcmlwdC5hYnMgJHsuQ1VSRElSfS9s
ZHNjcmlwdC4ke01BQ0hJTkVfQ1BVQVJDSH0gJHtEUEFERH0KKwkke0NDfSAke0NGTEFHU30gLVQg
bGRzY3JpcHQuYWJzICR7TERGTEFHU30gXAorCSAgICAtbyAkey5UQVJHRVR9ICR7T0JKU30gJHtM
REFERH0KKworLmlmICR7U0VMRl9SRUxPQ30gIT0gIm5vIgordWJsZHIucGllOiAke09CSlN9IGxk
c2NyaXB0LnBpZSAkey5DVVJESVJ9L2xkc2NyaXB0LiR7TUFDSElORV9DUFVBUkNIfSAke0RQQURE
fQorCSR7Q0N9ICR7Q0ZMQUdTfSAtVCBsZHNjcmlwdC5waWUgJHtMREZMQUdTfSAtcGllIC1XbCwt
QnN5bWJvbGljIFwKKwkgICAgLW8gJHsuVEFSR0VUfSAke09CSlN9ICR7TERBRER9CisKK3VibGRy
LmJpbjogdWJsZHIucGllCisJJHtPQkpDT1BZfSAtUyAtTyBiaW5hcnkgdWJsZHIucGllICR7LlRB
UkdFVH0KKy5lbmRpZgorCitDTEVBTkZJTEVTKz0JbGRzY3JpcHQuYWJzIGxkc2NyaXB0LnBpZSB1
YmxkciB1Ymxkci5waWUgdWJsZHIuYmluCisKKy5pZiAhZGVmaW5lZChMT0FERVJfT05MWSkKKy5Q
QVRIOiAkey5DVVJESVJ9Ly4uLy4uL2ZvcnRoCisuaW5jbHVkZQkiJHsuQ1VSRElSfS8uLi8uLi9m
b3J0aC9NYWtlZmlsZS5pbmMiCisKKyMgSW5zdGFsbCBsb2FkZXIucmMuCitGSUxFUys9CWxvYWRl
ci5yYworIyBQdXQgc2FtcGxlIG1lbnUucmMgb24gZGlzayBidXQgZG9uJ3QgZW5hYmxlIGl0IGJ5
IGRlZmF1bHQuCitGSUxFUys9CW1lbnUucmMKK0ZJTEVTTkFNRV9tZW51LnJjPQltZW51LnJjLnNh
bXBsZQorLmVuZGlmCisKKy5pbmNsdWRlIDxic2Quc3RhbmQubWs+CisuaW5jbHVkZSA8YnNkLnBy
b2cubWs+CmRpZmYgLS1naXQgYS9zeXMvYm9vdC9taXBzL01ha2VmaWxlIGIvc3lzL2Jvb3QvbWlw
cy9NYWtlZmlsZQotLS0gYS9zeXMvYm9vdC9taXBzL01ha2VmaWxlCisrKyBiL3N5cy9ib290L21p
cHMvTWFrZWZpbGUKQEAgLTEsMTIgKzEsMTQgQEAKICMgJEZyZWVCU0QkCiAKK1NVQkRJUj0gdWJv
b3QKKwogIwogIyBUaGUgQkVSSSBib290IGxvYWRlciBwb3J0IHdvcmtzIG9ubHkgb24gNjQtYml0
IE1JUFM7IG5vdCBhIGhhcmQgcG9ydCB0bwogIyAzMi1iaXQgaWYgc29tZW9uZSBpcyBpbnRlcmVz
dGVkLiAgQnVpbGQgb24gYWxsIDY0LWJpdCBNSVBTIHBsYXRmb3JtcyB0bwogIyBlbnN1cmUgaXQg
Z2V0cyBhZGVxdWF0ZSBidWlsZC10ZXN0IGNvdmVyYWdlLgogIwogLmlmICR7TUFDSElORV9BUkNI
fSA9PSAibWlwczY0IgotU1VCRElSPQliZXJpCitTVUJESVIrPQliZXJpCiAuZW5kaWYKIAogLmlu
Y2x1ZGUgPGJzZC5zdWJkaXIubWs+CmRpZmYgLS1naXQgYS9zeXMvYm9vdC9maWNsL01ha2VmaWxl
IGIvc3lzL2Jvb3QvZmljbC9NYWtlZmlsZQotLS0gYS9zeXMvYm9vdC9maWNsL01ha2VmaWxlCisr
KyBiL3N5cy9ib290L2ZpY2wvTWFrZWZpbGUKQEAgLTcsNiArNyw4IEBACiAuUEFUSDogJHtGSUNM
RElSfS8ke01BQ0hJTkVfQ1BVQVJDSDpTL2FtZDY0L2kzODYvfQogLmVsaWYgJHtNQUNISU5FX0FS
Q0h9ID09ICJtaXBzNjQiIHx8ICR7TUFDSElORV9BUkNIfSA9PSAibWlwczY0ZWwiCiAuUEFUSDog
JHtGSUNMRElSfS9taXBzNjQKKy5lbGlmICR7TUFDSElORV9BUkNIfSA9PSAibWlwczMyIiB8fCAk
e01BQ0hJTkVfQVJDSH0gPT0gIm1pcHMzMmVsIgorLlBBVEg6ICR7RklDTERJUn0vbWlwcwogLmVs
c2UKIC5QQVRIOiAke0ZJQ0xESVJ9LyR7TUFDSElORV9DUFVBUkNIfQogLmVuZGlmCmRpZmYgLS1n
aXQgYS9zeXMvYm9vdC9mZHQvTWFrZWZpbGUgYi9zeXMvYm9vdC9mZHQvTWFrZWZpbGUKLS0tIGEv
c3lzL2Jvb3QvZmR0L01ha2VmaWxlCisrKyBiL3N5cy9ib290L2ZkdC9NYWtlZmlsZQpAQCAtMjYs
NCArMjYsNSBAQAogCiBDRkxBR1MrPQktV2Zvcm1hdCAtV2FsbAogCisuaW5jbHVkZSA8YnNkLnN0
YW5kLm1rPgogLmluY2x1ZGUgPGJzZC5saWIubWs+CmRpZmYgLS1naXQgYS9zeXMvYm9vdC9jb21t
b24vc2VsZl9yZWxvYy5jIGIvc3lzL2Jvb3QvY29tbW9uL3NlbGZfcmVsb2MuYwotLS0gYS9zeXMv
Ym9vdC9jb21tb24vc2VsZl9yZWxvYy5jCisrKyBiL3N5cy9ib290L2NvbW1vbi9zZWxmX3JlbG9j
LmMKQEAgLTM2LDcgKzM2LDcgQEAKICNkZWZpbmUJRWxmV19EeW4JRWxmNjRfRHluCiAjZGVmaW5l
CUVMRldfUl9UWVBFCUVMRjY0X1JfVFlQRQogI2RlZmluZQlFTEZfUkVMQQotI2VsaWYgZGVmaW5l
ZChfX2FybV9fKSB8fCBkZWZpbmVkKF9faTM4Nl9fKQorI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8
fCBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQogI2RlZmluZQlFbGZXX1Jl
bAlFbGYzMl9SZWwKICNkZWZpbmUJRWxmV19EeW4JRWxmMzJfRHluCiAjZGVmaW5lCUVMRldfUl9U
WVBFCUVMRjMyX1JfVFlQRQpAQCAtNTYsNiArNTYsOSBAQAogI2VsaWYgZGVmaW5lZChfX2FybV9f
KQogI2RlZmluZQlSRUxPQ19UWVBFX05PTkUJCVJfQVJNX05PTkUKICNkZWZpbmUJUkVMT0NfVFlQ
RV9SRUxBVElWRQlSX0FSTV9SRUxBVElWRQorI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyNkZWZp
bmUgUkVMT0NfVFlQRV9OT05FCQlSX01JUFNfTk9ORQorI2RlZmluZSBSRUxPQ19UWVBFX1JFTEFU
SVZFCVJfTUlQU19SRUwKICNlbGlmIGRlZmluZWQoX19pMzg2X18pCiAjZGVmaW5lCVJFTE9DX1RZ
UEVfTk9ORQkJUl8zODZfTk9ORQogI2RlZmluZQlSRUxPQ19UWVBFX1JFTEFUSVZFCVJfMzg2X1JF
TEFUSVZFCmRpZmYgLS1naXQgYS9zeXMvYm9vdC9jb21tb24vTWFrZWZpbGUuaW5jIGIvc3lzL2Jv
b3QvY29tbW9uL01ha2VmaWxlLmluYwotLS0gYS9zeXMvYm9vdC9jb21tb24vTWFrZWZpbGUuaW5j
CisrKyBiL3N5cy9ib290L2NvbW1vbi9NYWtlZmlsZS5pbmMKQEAgLTIwLDYgKzIwLDggQEAKIFNS
Q1MrPQlsb2FkX2VsZjY0LmMgcmVsb2NfZWxmNjQuYwogLmVsaWYgJHtNQUNISU5FX0FSQ0h9ID09
ICJtaXBzNjQiIHx8ICR7TUFDSElORV9BUkNIfSA9PSAibWlwczY0ZWwiCiBTUkNTKz0gbG9hZF9l
bGY2NC5jIHJlbG9jX2VsZjY0LmMKKy5lbGlmICR7TUFDSElORV9BUkNIfSA9PSAibWlwcyIgfHwg
JHtNQUNISU5FX0FSQ0h9ID09ICJtaXBzZWwiCitTUkNTKz0gIGxvYWRfZWxmMzIuYyByZWxvY19l
bGYzMi5jCiAuZW5kaWYKIAogLmlmIGRlZmluZWQoTE9BREVSX05FVF9TVVBQT1JUKQpkaWZmIC0t
Z2l0IGEvc3lzL2Jvb3QvTWFrZWZpbGUubWlwcyBiL3N5cy9ib290L01ha2VmaWxlLm1pcHMKLS0t
IGEvc3lzL2Jvb3QvTWFrZWZpbGUubWlwcworKysgYi9zeXMvYm9vdC9NYWtlZmlsZS5taXBzCkBA
IC0zLDMgKzMsNSBAQAogLmlmICR7TUtfRkRUfSAhPSAibm8iCiBTVUJESVIrPQkJZmR0CiAuZW5k
aWYKKworU1VCRElSKz0JCXVib290Cgo=


--b1_1f56356ac303c3f039e449ffad2bc799--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?differential-rev-PHID-DREV-lydkabzwr6zbaqctozb5-req>