Re: On time64 and Large File Support

Paul Eggert <[email protected]> Sun, 25 Dec 2022 11:19:11 -0800
Newsgroups dev.linux.lists.c-std-porting
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------tNtW2eYtrSd5eJwzrrZ588te
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 11/12/22 21:11, Zack Weinberg wrote:
> "A couple hours" more like eight, ugh.

I know the feeling. I didn't get time free until recently.

I reviewed your patch and had the following thoughts.

* Gnulib doesn't need AC_SYS_LARGEFILE_REQUIRED or 
AC_SYS_YEAR2038_REQUIRED and they're easy for users to do on their own 
with a simple AS_IF, so let's omit these variants for now, to keep 
things simpler.

* The documentation incorrectly implies that AC_SYS_LARGEFILE and 
AC_SYS_YEAR2038 are orthogonal, i.e., that one can request large-file 
support and year-2038 support independently. But AC_SYS_YEAR2038 
AC_REQUIREs AC_SYS_LARGEFILE, and one cannot configure with 
--disable-largefile --enable-year2038 and expect things to work. This is 
inherent to the underlying _TIME_BITS mechanism; it's not something 
Autoconf can fix with glibc, and since this year-2038 business only 
occurs with glibc it's not something Autoconf can (or is likely to be 
able to) fix anywhere.

To help things move forward I installed your patch into Autoconf master 
on Savannah, and followed up with the attached patch which tries to 
address the above issues. In particular, it notes that the difference 
between AC_SYS_LARGEFILE and AC_SYS_YEAR2038 is a temporary hack, in 
that eventually (hopefully well before the year 2038) AC_SYS_LARGEFILE 
will be an alias for what AC_SYS_YEAR2038 does now.

Comments welcome of course.

I tested this by migrating these Autoconf changes into my private copy 
of Gnulib and gzip, and building gzip on both 32- and 64-bit glibc. I 
plan to install those changes on Savannah soon, and to follow up with 
similar changes to GNU coreutils etc. This should help to test these 
Autoconf changes before the next Autoconf is released.

--------------tNtW2eYtrSd5eJwzrrZ588te
Content-Type: text/x-patch; charset=UTF-8;
 name="0001-Omit-just-added-_REQUIRED-macros.patch"
Content-Disposition: attachment;
 filename="0001-Omit-just-added-_REQUIRED-macros.patch"
Content-Transfer-Encoding: base64

RnJvbSAzZjMzNTQ1MDdiYjljMmYxZDM4NDEyY2Y1NjZmZjk0NDM0MDgwMjNlIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1
PgpEYXRlOiBTYXQsIDI0IERlYyAyMDIyIDIzOjI0OjU0IC0wODAwClN1YmplY3Q6IFtQQVRD
SF0gT21pdCBqdXN0LWFkZGVkICpfUkVRVUlSRUQgbWFjcm9zCgpUaGV5IGFyZSBub3QgbmVl
ZGVkIGZvciBHbnVsaWIsIGFuZCB1c2VycyBoYXZlIGFuIGVhc3kgd2F5IHRvIGdldAp0aGVp
ciBlZmZlY3QsIHNvIGZvciBub3cgb21pdCB0aGVtIGFuZCBqdXN0IGRvY3VtZW50IHRoZSBl
YXN5IHdheS4KQWxzbywgcmVkbyBkb2N1bWVudGF0aW9uIHRvIG1ha2UgaXQgY2xlYXIgdGhh
dCBBQ19ZRUFSXzIwMzggaXMKbGlrZSBBQ19TWVNfTEFSR0VGSUxFIGV4Y2VwdCB3aXRoIGEg
ZGlmZmVyZW50IHllYXItMjAzOCBkZWZhdWx0LgoqIE5FV1MsIGRvYy9hdXRvY29uZi50ZXhp
OiBEb2N1bWVudCB0aGUgYWJvdmUuCiogbGliL2F1dG9jb25mL3NwZWNpZmljLm00IChBQ19T
WVNfWUVBUjIwMzhfUkVRVUlSRUQpOgooQUNfU1lTX0xBUkdFRklMRV9SRVFVSVJFRCk6IFJl
bW92ZS4gIFJlbW92ZSBzb21lIHN1cHBvcnQgY29kZS4KUGVyaGFwcyBmdXJ0aGVyIHNpbXBs
aWZpY2F0aW9uIGNvdWxkIGJlIGRvbmUgYnV0IEkgcXVpdCB3aGlsZQpJIHdhcyBhaGVhZC4K
LS0tCiBORVdTICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKysrLS0tLS0tCiBkb2MvYXV0
b2NvbmYudGV4aSAgICAgICAgfCAxODUgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiBsaWIvYXV0b2NvbmYvc3BlY2lmaWMubTQgfCAgNjUgKysrLS0tLS0tLS0t
LS0KIDMgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDE4OSBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwppbmRleCBkOWM2ZWQ5NC4uNWU4YTc2MDYg
MTAwNjQ0Ci0tLSBhL05FV1MKKysrIGIvTkVXUwpAQCAtMjcsMzcgKzI3LDE4IEBAIEdOVSBB
dXRvY29uZiBORVdTIC0gVXNlciB2aXNpYmxlIGNoYW5nZXMuCiAKICoqIE5ldyBmZWF0dXJl
cwogCi0qKiogTmV3IG1hY3JvcyBBQ19TWVNfWUVBUjIwMzggYW5kIEFDX1NZU19ZRUFSMjAz
OF9SRVFVSVJFRC4KLSAgVGhlc2UgbWFjcm9zIGF0dGVtcHQgdG8gZW5sYXJnZSB0aW1lX3Qg
dG8gNjQgYml0cywgb24gc3lzdGVtcyB3aGVyZQotICBpdCBoYXMgaGlzdG9yaWNhbGx5IGJl
ZW4gb25seSAzMiBiaXRzIHdpZGUsIGFuZCB0aGVyZWZvcmUgKGFzc3VtaW5nCi0gIHRoZSB1
c3VhbCBVbml4IGVwb2NoKSBjYW5ub3QgcmVwcmVzZW50IGRhdGVzIGFmdGVyIG1pZC1KYW51
YXJ5IG9mCi0gIDIwMzggKGhlbmNlIHRoZSBuYW1lcykuICBUaGUgZGlmZmVyZW5jZSBiZXR3
ZWVuIHRoZSB0d28gaXMgdGhhdAotICBBQ19TWVNfWUVBUjIwMzhfUkVRVUlSRUQgdW5jb25k
aXRpb25hbGx5IGNhdXNlcyAnY29uZmlndXJlJyB0byBlcnJvcgotICBvdXQgaWYgNjQtYml0
IHRpbWVfdCBpcyBub3QgYXZhaWxhYmxlLgotCi0gIEFDX1NZU19ZRUFSMjAzOCB3aWxsIGFs
c28gZXJyb3Igb3V0IGlmIHRoZSBob3N0IHN5c3RlbSBzaG93cyBzaWducyBvZgotICBzdXBw
b3J0aW5nIGRhdGVzIGFmdGVyIEphbiAyMDM4IChlLmcuIGluIGZpbGUgdGltZXN0YW1wcykg
YnV0IGl0IGNhbuKAmXQKLSAgZmlndXJlIG91dCBob3cgdG8gZ2V0IGEgd2lkZXIgdGltZV90
OyB0aGlzIGZhaWx1cmUgY2FuIGJlIG92ZXJyaWRkZW4KLSAgd2l0aCB0aGUgLS1kaXNhYmxl
LXllYXIyMDM4IG9wdGlvbi4KLQotICBMaWJyYXJ5IGF1dGhvcnMgc2hvdWxkIGJlIGNhdXRp
b3VzIGFib3V0IGFkZGluZyB0aGVzZSBtYWNyb3MgdG8KLSAgdGhlaXIgY29uZmlndXJlIHNj
cmlwdHM7IHRoZXkgY2FuIGJyZWFrIGJpbmFyeSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Lgot
Ci0qKiogTmV3IG1hY3JvIEFDX1NZU19MQVJHRUZJTEVfUkVRVUlSRUQuCi0gIFRoaXMgbWFj
cm8gaXMgdGhlIHNhbWUgYXMgdGhlIGV4aXN0aW5nIEFDX1NZU19MQVJHRUZJTEUgZXhjZXB0
IHRoYXQKLSAgaXQgd2lsbCBjYXVzZSAnY29uZmlndXJlJyB0byBlcnJvciBvdXQgaWYgNjQt
Yml0IG9mZl90IGlzIG5vdCBhdmFpbGFibGUsCi0gIGFuZCBpdCBkb2VzIG5vdCBwcm92aWRl
IGEgLS1kaXNhYmxlLWxhcmdlZmlsZSBvcHRpb24uCi0KLSoqKiBBQ19TWVNfTEFSR0VGSUxF
IG5vdyBvcHRpb25hbGx5IGFycmFuZ2VzIHRvIGVubGFyZ2UgdGltZV90LgotICBBcyBhbiBl
eHBlcmltZW50YWwgbWVhc3VyZSB0byBtYWtlIGl0IGVhc2llciB0byByZWJ1aWxkIG9sZCBw
cm9ncmFtcwotICB3aXRoIHN1cHBvcnQgZm9yIGRhdGVzIGFmdGVyIEphbiAyMDM4LCBpZiB5
b3UgcmVnZW5lcmF0ZSBhbnkgY29uZmlndXJlCi0gIHNjcmlwdCB0aGF0IHVzZXMgQUNfU1lT
X0xBUkdFRklMRSAoYnV0IG5vdCBBQ19TWVNfWUVBUjIwMzgpIHVzaW5nCi0gIEF1dG9jb25m
IDIuNzIsIGl0IHdpbGwgZ2FpbiBhbiAtLWVuYWJsZS15ZWFyMjAzOCBvcHRpb24uICBXaGVu
IHRoZQotICBwcm9ncmFtIGlzIGNvbmZpZ3VyZWQgd2l0aCB0aGlzIG9wdGlvbiwgdGltZV90
IHdpbGwgYmUgZW5sYXJnZWQgaWYKLSAgcG9zc2libGUsIGFzIGlmIEFDX1NZU19ZRUFSMjAz
OCBoYWQgYmVlbiB1c2VkLgotCi0gIFVzaW5nIHRoaXMgb3B0aW9uIGluIGEgbGlicmFyeSBi
dWlsZCBhbHNvIHBvdGVudGlhbGx5IGJyZWFrcyBiaW5hcnkKLSAgYmFja3dhcmQgY29tcGF0
aWJpbGl0eS4KKyoqKiBBQ19TWVNfTEFSR0VGSUxFIG5vdyBvcHRpb25hbGx5IGFycmFuZ2Vz
IHRvIHdpZGVuIHRpbWVfdC4KKyAgSXQgbm93IGNhdXNlcyAnY29uZmlndXJlJyB0byBnYWlu
IGFuIC0tZW5hYmxlLXllYXIyMDM4IG9wdGlvbiB3aGljaAorICB3aWRlbnMgdGltZV90IGlm
IHBvc3NpYmxlIG9uIHN5c3RlbXMgd2hlcmUgdGltZV90IGJ5IGRlZmF1bHQgY2Fubm90Cisg
IHJlcHJlc2VudCBmaWxlIHRpbWVzdGFtcHMgYW5kIG90aGVyIHRpbWVzdGFtcHMgYWZ0ZXIg
SmFudWFyeSAyMDM4LgorICBBcyB3aXRoIG9mZl90LCBpbm9fdCwgZXRjLiwgaWYgbGlicmFy
eSBBQklzIGRlcGVuZCBvbiB0aW1lX3Qgd2lkdGgsCisgIGFwcGxpY2F0aW9ucyBzaG91bGQg
YmUgY29uZmlndXJlZCBjb25zaXN0ZW50bHkgd2l0aCBsaWJyYXJpZXMuCisKKyoqKiBOZXcg
bWFjcm8gQUNfU1lTX1lFQVIyMDM4LgorICBUaGlzIGFjdHMgbGlrZSBBQ19TWVNfTEFSR0VG
SUxFLCBleGNlcHQgdGhhdCBpdCBjYXVzZXMgJ2NvbmZpZ3VyZScKKyAgdG8gZGVmYXVsdCB0
byAtLWVuYWJsZS15ZWFyMjAzOC4gIEluIGEgZnV0dXJlIEF1dG9jb25mIHZlcnNpb24sCisg
IEFDX1NZU19MQVJHRUZJTEUgaXMgcGxhbm5lZCB0byBkbyB0aGlzIHRvbywgc28gdGhlIHR3
byBtYWNyb3Mgd2lsbAorICBiZWNvbWUgZXF1aXZhbGVudC4KIAogKioqIEFDX1VTRV9TWVNU
RU1fRVhURU5TSU9OUyBub3cgZW5hYmxlcyBDMjMgQW5uZXggRiBleHRlbnNpb25zCiAgIGJ5
IGRlZmluaW5nIF9fU1REQ19XQU5UX0lFQ182MDU1OV9FWFRfXy4KZGlmZiAtLWdpdCBhL2Rv
Yy9hdXRvY29uZi50ZXhpIGIvZG9jL2F1dG9jb25mLnRleGkKaW5kZXggZGY5NjI4MGIuLjQy
ZmEyNGZlIDEwMDY0NAotLS0gYS9kb2MvYXV0b2NvbmYudGV4aQorKysgYi9kb2MvYXV0b2Nv
bmYudGV4aQpAQCAtODc5OCw3MiArODc5OCw5NSBAQCBpZiB0aGUgc3lzdGVtIHN1cHBvcnRz
IEBzYW1weyMhfSwgQHNhbXB7bm99IGlmIG5vdC4KIEBkZWZtYWMgQUNfU1lTX0xBUkdFRklM
RQogQGFjaW5kZXh7U1lTX0xBUkdFRklMRX0KIEBjdmluZGV4IF9GSUxFX09GRlNFVF9CSVRT
CitAY3ZpbmRleCBfVElNRV9CSVRTCiBAb3ZpbmRleCBDQwogQGNpbmRleCBMYXJnZSBmaWxl
IHN1cHBvcnQKIEBjaW5kZXggTEZTCi1JZiB0aGUgZGVmYXVsdCBAY29kZXtvZmZfdH0gdHlw
ZSBpcyBhIDMyLWJpdCBpbnRlZ2VyLCBhbmQgdGhlcmVmb3JlCi1jYW5ub3QgYmUgdXNlZCB0
byB3b3JrIHdpdGggZmlsZXMgbGFyZ2VyIHRoYW4gNCBnaWdhYnl0ZXMsIGFycmFuZ2UgdG8K
LW1ha2UgYSBsYXJnZXIgQGNvZGV7b2ZmX3R9IGF2YWlsYWJsZSwgaWYgdGhlIHN5c3RlbSBz
dXBwb3J0cyB0aGlzLgotU2V2ZXJhbCBvdGhlciB0eXBlcyByZWxhdGVkIHRvIHRoZSBzaXpl
cyBvZiBmaWxlcyBhbmQgZmlsZSBzeXN0ZW1zIHdpbGwKLWFsc28gYmUgZW5sYXJnZWQ6IEBj
b2Rle2lub190fSwgQGNvZGV7YmxrY250X3R9LCBAY29kZXtmc2Jsa2NudF90fSwKLUBjb2Rl
e2ZzZmlsY250X3R9LCBhbmQgcG9zc2libHkgQGNvZGV7ZGV2X3R9LgotCi1JZiBhIGxhcmdl
IEBjb2Rle29mZl90fSBpcyBhdmFpbGFibGUgKHdoZXRoZXIgb3Igbm90IGFueSBhcnJhbmdl
bWVudHMKLXdlcmUgbmVjZXNzYXJ5KSwgdGhlIHNoZWxsIHZhcmlhYmxlIEBjb2Rle2FjX2hh
dmVfbGFyZ2VmaWxlfSB3aWxsIGJlIHNldAotdG8gQHNhbXB7eWVzfTsgaWYgbm90LCBpdCB3
aWxsIGJlIHNldCB0byBAc2FtcHtub30uCi0KLVByZXByb2Nlc3NvciBtYWNyb3Mgd2lsbCBi
ZSBkZWZpbmVkIGlmIG5lY2Vzc2FyeSB0byBtYWtlIGEgbGFyZ2VyCi1AY29kZXtvZmZfdH0g
YXZhaWxhYmxlLiAgKEZvciBleGFtcGxlLCBvbiBtYW55IHN5c3RlbXMgdGhlIG1hY3JvCi1A
Y29kZXtfRklMRV9PRkZTRVRfQklUU30gd2lsbCBiZSBkZWZpbmVkLikgIFNvbWUgb2YgdGhl
c2UgbWFjcm9zIG9ubHkKLXdvcmsgaWYgdGhleSBhcmUgZGVmaW5lZCBiZWZvcmUgdGhlIGZp
cnN0IHN5c3RlbSBoZWFkZXIgaXMgaW5jbHVkZWQ7Ci10aGVyZWZvcmUsIHdoZW4gdXNpbmcg
dGhpcyBtYWNybyBpbiBjb25jZXJ0IHdpdGgKLUBjb2Rle0FDX0NPTkZJR19IRUFERVJTfSwg
bWFrZSBzdXJlIHRoYXQgQGZpbGV7Y29uZmlnLmh9IGlzIGluY2x1ZGVkCi1iZWZvcmUgYW55
IHN5c3RlbSBoZWFkZXJzLgotCi1PbiBhIGZldyBvbGRlciBzeXN0ZW1zLCB0aGUgb3V0cHV0
IHZhcmlhYmxlIEBjb2Rle0NDfSB3aWxsIGFsc28gYmUKLWNoYW5nZWQgdG8gYWRkIHNwZWNp
YWwgY29tcGlsZXIgb3B0aW9ucyB0aGF0IGFyZSBuZWVkZWQgdG8gZW5hYmxlIGxhcmdlCi1A
Y29kZXtvZmZfdH0uCitJZiB0aGUgZGVmYXVsdCBAY29kZXtvZmZfdH0gdHlwZSBpcyBhIDMy
LWJpdCBpbnRlZ2VyIHNvCithcHBsaWNhdGlvbnMgY2FuIGRlYWwgb25seSB3aXRoIGZpbGVz
IGNvbnRhaW5pbmcgbGVzcyB0aGFuIDIgR2lCLAorbWFrZSBhIHdpZGVyIEBjb2Rle29mZl90
fSBhdmFpbGFibGUgaWYgdGhlIHN5c3RlbSBzdXBwb3J0cyB0aGlzLgorVGhpcyBtYXkgYWxz
byB3aWRlbiBzZXZlcmFsIG90aGVyIHR5cGVzIHJlbGF0ZWQgdG8gZmlsZXMgYW5kIGZpbGUK
K3N5c3RlbXMsIGluY2x1ZGluZyBAY29kZXtibGtjbnRfdH0sIEBjb2Rle2Rldl90fSwgQGNv
ZGV7aW5vX3R9LAorQGNvZGV7ZnNibGtjbnRfdH0sIGFuZCBAY29kZXtmc2ZpbGNudF90fS4K
KworQWxzbywgYXJyYW5nZSBmb3IgYSBAY29tbWFuZHtjb25maWd1cmV9IG9wdGlvbiB0byBy
ZXF1ZXN0IHdpZGVuaW5nIHRoZQordHlwZSBAY29kZXt0aW1lX3R9IGFzIG5lZWRlZCB0byBy
ZXByZXNlbnQgZmlsZSB0aW1lc3RhbXBzIGFuZCBvdGhlcgordGltZXN0YW1wcyBhZnRlciBK
YW51YXJ5IDIwMzguICBJZiB5ZWFyLTIwMzggc3VwcG9ydCBpcyByZXF1ZXN0ZWQgYnV0CitA
Y29tbWFuZHtjb25maWd1cmV9IGZhaWxzIHRvIGZpbmQgYSB3YXkgdG8gZW5hYmxlIGEgd2lk
ZSBAY29kZXt0aW1lX3R9CithbmQgaW5zcGVjdGlvbiBvZiB0aGUgc3lzdGVtIHN1Z2dlc3Rz
IHRoYXQgdGhpcyBmZWF0dXJlIGlzIGF2YWlsYWJsZQorc29tZWhvdywgQGNvbW1hbmR7Y29u
ZmlndXJlfSB3aWxsIGVycm9yIG91dC4KKworSW4gdGhpcyB2ZXJzaW9uIG9mIEF1dG9jb25m
LCB0aGUgeWVhci0yMDM4IEBjb21tYW5ke2NvbmZpZ3VyZX0gb3B0aW9uCitjdXJyZW50bHkg
ZGVmYXVsdHMgdG8gQGNvZGV7LS1kaXNhYmxlLXllYXIyMDM4fS4gIElmIHlvdSB3YW50IHRo
ZQorZGVmYXVsdCB0byBiZSBAY29kZXstLWVuYWJsZS15ZWFyMjAzOH0sIHlvdSBjYW4gdXNl
CitAY29kZXtBQ19TWVNfWUVBUjIwMzh9IGluc3RlYWQgb2YgQGNvZGV7QUNfU1lTX0xBUkdF
RklMRX0uICBJbiBvdGhlcgord29yZHMsIHBhY2thZ2VzIHRoYXQgdXNlIEBjb2Rle0FDX1NZ
U19MQVJHRUZJTEV9IGNhbiBiZSBtYWRlIHJlYWR5IGZvcgordGhlIHllYXIgMjAzOCBlaXRo
ZXIgYnkgc3dpdGNoaW5nIHRvIEBjb2Rle0FDX1NZU19ZRUFSMjAzOH0sIG9yIGJ5Citjb25m
aWd1cmluZyB3aXRoIEBvcHRpb257LS1lbmFibGUteWVhcjIwMzh9LiAgQSBmdXR1cmUgdmVy
c2lvbiBvZgorQXV0b2NvbmYgaXMgcGxhbm5lZCB0byBjaGFuZ2UgdGhlIEBjb2Rle0FDX1NZ
U19MQVJHRUZJTEV9IGRlZmF1bHQgdG8KK0Bjb2Rley0tZW5hYmxlLXllYXIyMDM4fTsgd2hl
biB0aGF0IGhhcHBlbnMsIEBjb2Rle0FDX1NZU19MQVJHRUZJTEV9IGFuZAorQGNvZGV7QUNf
U1lTX1lFQVIyMDM4fSB3aWxsIGJlIGVxdWl2YWxlbnQuICBAeHJlZntBQ19TWVNfWUVBUjIw
Mzh9LgorCitTZXQgdGhlIHNoZWxsIHZhcmlhYmxlIEBjb2Rle2FjX2hhdmVfbGFyZ2VmaWxl
fSB0byB0byBAc2FtcHt5ZXN9IG9yCitAY29kZXtub30gZGVwZW5kaW5nIG9uIHdoZXRoZXIg
YSB3aWRlIEBjb2Rle29mZl90fSBpcyBhdmFpbGFibGUsCityZWdhcmRsZXNzIG9mIHdoZXRo
ZXIgYXJyYW5nZW1lbnRzIHdlcmUgbmVjZXNzYXJ5LiAgU2ltaWxhcmx5LCBzZXQgdGhlCitz
aGVsbCB2YXJpYWJsZSBAY29kZXthY19oYXZlX3llYXIyMDM4fSB0byBAY29kZXt5ZXN9IG9y
IEBjb2Rle25vfQorZGVwZW5kaW5nIG9uIHdoZXRoZXIgYSB3aWRlLWVub3VnaCBAY29kZXt0
aW1lX3R9IGlzIGF2YWlsYWJsZS4gIElmIHlvdXIKK3BhY2thZ2UgcmVxdWlyZXMgbGFyZ2Ut
ZmlsZSBvciB5ZWFyLTIwMzggc3VwcG9ydCwgeW91IGNhbiB1c2UgY29kZSBsaWtlIHRoaXM6
CisKK0BleGFtcGxlCitBU19JRihbdGVzdCAkYWNfaGF2ZV95ZWFyMjAzOCA9IG5vXSwKKyAg
W0FDX01TR19GQUlMVVJFKFt5ZWFyLTIwMzggc3VwcG9ydCBtaXNzaW5nXSldKQorQGVuZCBl
eGFtcGxlCisKK0RlZmluZSBwcmVwcm9jZXNzb3IgbWFjcm9zIGlmIG5lY2Vzc2FyeSB0byBt
YWtlIHR5cGVzIHdpZGVyOyBGb3IKK2V4YW1wbGUsIG9uIG1hbnkgc3lzdGVtcyB0aGUgbWFj
cm9zIEBjb2Rle19GSUxFX09GRlNFVF9CSVRTfSBhbmQKK0Bjb2Rle19USU1FX0JJVFN9IGNh
biBiZSBkZWZpbmVkLiAgU29tZSBvZiB0aGVzZSBtYWNyb3Mgd29yayBvbmx5IGlmCit0aGV5
IGFyZSBkZWZpbmVkIGJlZm9yZSB0aGUgZmlyc3Qgc3lzdGVtIGhlYWRlciBpcyBpbmNsdWRl
ZDsgdGhlcmVmb3JlLAord2hlbiB1c2luZyB0aGlzIG1hY3JvIGluIGNvbmNlcnQgd2l0aCBA
Y29kZXtBQ19DT05GSUdfSEVBREVSU30sIG1ha2UKK3N1cmUgdGhhdCBAZmlsZXtjb25maWcu
aH0gaXMgaW5jbHVkZWQgYmVmb3JlIGFueSBzeXN0ZW0gaGVhZGVycy4KKworT24gYSBmZXcg
b2xkZXIgc3lzdGVtcywgYWxzbyBjaGFuZ2UgdGhlIG91dHB1dCB2YXJpYWJsZSBAY29kZXtD
Q30gdG8gYWRkCitzcGVjaWFsIGNvbXBpbGVyIG9wdGlvbnMgdGhhdCBhcmUgbmVlZGVkIHRv
IGVuYWJsZSBsYXJnZSBAY29kZXtvZmZfdH0uCiAKIExhcmdlLWZpbGUgc3VwcG9ydCBjYW4g
YmUgZGlzYWJsZWQgYnkgY29uZmlndXJpbmcgd2l0aCB0aGUKLUBvcHRpb257LS1kaXNhYmxl
LWxhcmdlZmlsZX0gb3B0aW9uLiAgTm90ZSB0aGF0IHRoaXMgaGFzIG5vIGVmZmVjdCBvbgot
c3lzdGVtcyB3aGVyZSBAY29kZXtvZmZfdH0gaXMgNjQgYml0cyBvciBsYXJnZXIgYnkgZGVm
YXVsdC4gIERpc2FibGluZwotbGFyZ2UtZmlsZSBzdXBwb3J0IGNhbiBoYXZlIHN1cnByaXNp
bmcgZWZmZWN0cywgc3VjaCBhcyBjYXVzaW5nCi1mdW5jdGlvbnMgbGlrZSBAY29kZXtyZWFk
ZGlyfSBhbmQgQGNvZGV7c3RhdH0gdG8gZmFpbCBvbiBzbWFsbCBmaWxlcwotKGJlY2F1c2Ug
dGhlaXIgQGVtcGh7aW5vZGUgbnVtYmVyc30gYXJlIHVucmVwcmVzZW50YWJsZSkuCitAb3B0
aW9uey0tZGlzYWJsZS1sYXJnZWZpbGV9IG9wdGlvbiwgYW5kIHllYXItMjAzOCBzdXBwb3J0
IGNhbgorYmUgZW5hYmxlZCBhbmQgZGlzYWJsZWQgdmlhIHRoZSBAb3B0aW9uey0tZW5hYmxl
LXllYXIyMDM4fSBhbmQKK0BvcHRpb257LS1kaXNhYmxlLXllYXIyMDM4fSBvcHRpb25zLiAg
VGhlc2Ugb3B0aW9ucyBoYXZlIG5vIGVmZmVjdCBvbgorc3lzdGVtcyB3aGVyZSB0eXBlcyBh
cmUgd2lkZSBlbm91Z2ggYnkgZGVmYXVsdC4KK0xhcmdlLWZpbGUgc3VwcG9ydCBpcyByZXF1
aXJlZCBmb3IgeWVhci0yMDM4IHN1cHBvcnQ6IGlmIHlvdSBjb25maWd1cmUKK3dpdGggQG9w
dGlvbnstLWRpc2FibGUtbGFyZ2VmaWxlfSBvbiBhIHBsYXRmb3JtIHdpdGggMzItYml0CitA
Y29kZXt0aW1lX3R9LCB0aGVuIHllYXItMjAzOCBzdXBwb3J0IGlzIG5vdCBhdmFpbGFibGUu
CisKK0Rpc2FibGluZyBsYXJnZS1maWxlIG9yIHllYXItMjAzOCBzdXBwb3J0IGNhbiBoYXZl
IHN1cnByaXNpbmcgZWZmZWN0cywKK3N1Y2ggYXMgY2F1c2luZyBmdW5jdGlvbnMgbGlrZSBA
Y29kZXtyZWFkZGlyfSBhbmQgQGNvZGV7c3RhdH0gdG8gZmFpbAorZXZlbiBvbiBzbWFsbCBm
aWxlcyBiZWNhdXNlIHRoZWlyIGlub2RlIG51bWJlcnMgYXJlIHVucmVwcmVzZW50YWJsZSwg
b3IKK2NhdXNpbmcgZnVuY3Rpb25zIGxpa2UgQGNvZGV7c3RhdH0gdG8gZmFpbCBiZWNhdXNl
IGEgZmlsZSdzIHRpbWVzdGFtcCBpcworb3V0IG9mIHJhbmdlLgogCiBSZWdhcmRsZXNzIG9m
IHdoZXRoZXIgeW91IHVzZSB0aGlzIG1hY3JvLCBwb3J0YWJsZSBwcm9ncmFtcyBzaG91bGQg
bm90CiBhc3N1bWUgdGhhdCBhbnkgb2YgdGhlIHR5cGVzIGxpc3RlZCBhYm92ZSBmaXQgaW50
byBhIEBjb2Rle2xvbmcgaW50fS4KLUZvciBleGFtcGxlLCBpdCBpcyBub3QgY29ycmVjdCB0
byBwcmludCBhbiBhcmJpdHJhcnkgQGNvZGV7b2ZmX3R9IHZhbHVlCi1AY29kZXtYfSB3aXRo
IEBjb2Rle3ByaW50ZiAoIiVsZCIsIChsb25nIGludCkgWCl9LgotCi1Ob3RlIHRoYXQgdGhl
IHN0YW5kYXJkIEMgbGlicmFyeSBmdW5jdGlvbnMgQGNvZGV7ZnNlZWt9IGFuZCBAY29kZXtm
dGVsbH0KLWRvIG5vdCB1c2UgQGNvZGV7b2ZmX3R9LiAgSWYgeW91IG5lZWQgdG8gdXNlIGVp
dGhlciBvZiB0aGVzZSBmdW5jdGlvbnMsCi15b3Ugc2hvdWxkIHVzZSBAY29kZXtBQ19GVU5D
X0ZTRUVLT30gYXMgd2VsbCBhcyBAY29kZXtBQ19TWVNfTEFSR0VGSUxFfSwKLWFuZCB0aGVu
IHVzZSB0aGVpciBQb3NpeCByZXBsYWNlbWVudHMgQGNvZGV7ZnNlZWtvfSBhbmQgQGNvZGV7
ZnRlbGxvfSwKLXdoaWNoIEBlbXBoe2RvfSB1c2UgQGNvZGV7b2ZmX3R9LCB3aGVuIGF2YWls
YWJsZS4gIEB4cmVme0FDX0ZVTkNfRlNFRUtPfS4KLQotQXMgb2YgQXV0b2NvbmYgMi43Miwg
QGNvZGV7QUNfU1lTX0xBUkdFRklMRX0gYWxzbyBAZW1waHtvcHRpb25hbGx5fQotYXJyYW5n
ZXMgdG8gZW5sYXJnZSBAY29kZXt0aW1lX3R9LiAgVGhpcyBpcyB0byBtYWtlIGl0IGVhc2ll
ciB0byBidWlsZAotcHJvZ3JhbXMgdGhhdCBzdXBwb3J0IHRpbWVzdGFtcHMgYWZ0ZXIgMjAz
ODsgbWFueSBjb25maWd1cmUgc2NyaXB0cyB3aWxsCi1ub3QgbmVlZCB0byBiZSBtb2RpZmll
ZCwgb25seSByZWdlbmVyYXRlZCB3aXRoIG5ld2VyIEF1dG9jb25mLiAgV2hlbgotQGNvZGV7
QUNfU1lTX0xBUkdFRklMRX0gaXMgdXNlZCwgYW5kIEBjb2Rle0FDX1NZU19ZRUFSMjAzOH0g
aXMKLUBlbXBoe25vdH0gdXNlZCwgQGNvZGV7dGltZV90fSB3aWxsIG5vcm1hbGx5IGJlIGxl
ZnQgYXQgdGhlIHN5c3RlbSdzCi1kZWZhdWx0IHNpemUsIGJ1dCB5b3UgY2FuIHJlcXVlc3Qg
aXQgYmUgZW5sYXJnZWQgYnkgY29uZmlndXJpbmcgd2l0aCB0aGUKLUBvcHRpb257LS1lbmFi
bGUteWVhcjIwMzh9IG9wdGlvbi4gIChXaGVuIEBjb2Rle0FDX1NZU19ZRUFSMjAzOH0gaXMg
YWxzbwotdXNlZCwgQGNvZGV7dGltZV90fSBpcyBlbmxhcmdlZCBpZiBwb3NzaWJsZS4gIEB4
cmVme0FDX1NZU19ZRUFSMjAzOH0uKQotQGVuZCBkZWZtYWMKLQotQGRlZm1hYyBBQ19TWVNf
TEFSR0VGSUxFX1JFUVVJUkVECi1AYWNpbmRleHtTWVNfTEFSR0VGSUxFX1JFUVVJUkVEfQot
VGhpcyBtYWNybyBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIEBjb2Rle0FDX1NZU19MQVJHRUZJ
TEV9LAotYnV0IGFsc28gZGVjbGFyZXMgdGhhdCB0aGUgcHJvZ3JhbSBiZWluZyBjb25maWd1
cmVkCi1AZW1waHtyZXF1aXJlc30gc3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXMuCi1JZiBhIGxh
cmdlIEBjb2Rle29mZl90fSBpcyB1bmF2YWlsYWJsZSwKLUBjb21tYW5ke2NvbmZpZ3VyZX0g
d2lsbCBlcnJvciBvdXQuCi1UaGUgQG9wdGlvbnstLWRpc2FibGUtbGFyZ2VmaWxlfSBvcHRp
b24gd2lsbCBub3QgYmUgYXZhaWxhYmxlLgorRm9yIGV4YW1wbGUsIGl0IGlzIG5vdCBwb3J0
YWJsZSB0byBwcmludCBhbiBhcmJpdHJhcnkgQGNvZGV7b2ZmX3R9IG9yCitAY29kZXt0aW1l
X3R9IHZhbHVlIEBjb2Rle1h9IHdpdGggQGNvZGV7cHJpbnRmICgiJWxkIiwgKGxvbmcgaW50
KSBYKX0uCisKK1RoZSBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb25zIEBjb2Rle2ZzZWVr
fSBhbmQgQGNvZGV7ZnRlbGx9IGRvIG5vdAordXNlIEBjb2Rle29mZl90fS4gIElmIHlvdSBu
ZWVkIHRvIHVzZSBlaXRoZXIgb2YgdGhlc2UgZnVuY3Rpb25zLCB5b3UKK3Nob3VsZCB1c2Ug
QGNvZGV7QUNfRlVOQ19GU0VFS099IGFzIHdlbGwgYXMgQGNvZGV7QUNfU1lTX0xBUkdFRklM
RX0sIGFuZAordGhlbiB1c2UgdGhlaXIgUG9zaXggcmVwbGFjZW1lbnRzIEBjb2Rle2ZzZWVr
b30gYW5kIEBjb2Rle2Z0ZWxsb30uCitAeHJlZntBQ19GVU5DX0ZTRUVLT30uCisKK1doZW4g
dXNpbmcgQGNvZGV7QUNfU1lTX0xBUkdFRklMRX0gaW4gZGlmZmVyZW50IHBhY2thZ2VzIHRo
YXQgYXJlIGxpbmtlZAordG9nZXRoZXIgYW5kIHRoYXQgaGF2ZSBBQklzIHRoYXQgZGVwZW5k
IG9uIHRoZSB3aWR0aCBvZiBAY29kZXtvZmZfdH0sCitAY29kZXt0aW1lX3R9IG9yIHJlbGF0
ZWQgdHlwZXMsIHRoZSBzaW1wbGVzdCB0aGluZyBpcyB0byBjb25maWd1cmUgYWxsCitjb21w
b25lbnRzIHRoZSBzYW1lIHdheS4gIEZvciBleGFtcGxlLCBpZiBhbiBhcHBsaWNhdGlvbiB1
c2VzCitAY29kZXtBQ19TWVNfTEFSR0VGSUxFfSBhbmQgaXMgY29uZmlndXJlZCB3aXRoCitA
b3B0aW9uey0tZW5hYmxlLXllYXIyMDM4fSwgbGlicmFyaWVzIGl0IGxpbmtzIHRvIHdpdGgg
YW4gQGNvZGV7b2ZmX3R9LQorb3IgQGNvZGV7dGltZV90fS1kZXBlbmRlbnQgQUJJIHNob3Vs
ZCBiZSBjb25maWd1cmVkIGVxdWl2YWxlbnRseS4KK0FsdGVybmF0aXZlbHksIHlvdSBjYW4g
bW9kaWZ5IGxpYnJhcmllcyB0byBzdXBwb3J0IGJvdGggMzItIGFuZCA2NC1iaXQKK0FCSXMg
dGhvdWdoIHRoaXMgaXMgbW9yZSB3b3JrIGFuZCB0eXBpY2FsbHkgZmV3IGxpYnJhcmllcyBv
dGhlciB0aGFuIHRoZQorQyBsaWJyYXJ5IGl0c2VsZiBhcmUgbW9kaWZpZWQgaW4gdGhpcyB3
YXkuCiBAZW5kIGRlZm1hYwogCi0KIEBhbmNob3J7QUNfU1lTX0xPTkdfRklMRV9OQU1FU30K
IEBkZWZtYWMgQUNfU1lTX0xPTkdfRklMRV9OQU1FUwogQGFjaW5kZXh7U1lTX0xPTkdfRklM
RV9OQU1FU30KQEAgLTg4ODUsNTUgKzg5MDgsOSBAQCBzeXN0ZW0uICBJZiBzbywgc2V0IHRo
ZSBzaGVsbCB2YXJpYWJsZSBAY29kZXthY19jdl9zeXNfcG9zaXhfdGVybWlvc30gdG8KIEBh
bmNob3J7QUNfU1lTX1lFQVIyMDM4fQogQGRlZm1hYyBBQ19TWVNfWUVBUjIwMzgKIEBhY2lu
ZGV4e1NZU19ZRUFSMjAzOH0KLUBjdmluZGV4IF9USU1FX0JJVFMKIEBjaW5kZXggWWVhciAy
MDM4Ci1JZiB0aGUgZGVmYXVsdCBAY29kZXt0aW1lX3R9IHR5cGUgaXMgYSBzaWduZWQgMzIt
Yml0IGludGVnZXIsCi1hbmQgdGhlcmVmb3JlIChhc3N1bWluZyB0aGUgdXN1YWwgVW5peCBl
cG9jaCkgY2Fubm90IHJlcHJlc2VudAotdGltZXN0YW1wcyBhZnRlciBtaWQtSmFudWFyeSBv
ZiAyMDM4LCBhcnJhbmdlIHRvIG1ha2UgYSBsYXJnZXIKLUBjb2Rle3RpbWVfdH0gYXZhaWxh
YmxlLCBpZiB0aGUgc3lzdGVtIHN1cHBvcnRzIHRoaXMuCi0KLUlmIGEgbGFyZ2UgQGNvZGV7
dGltZV90fSBpcyBhdmFpbGFibGUgKHdoZXRoZXIgb3Igbm90IGFueSBhcnJhbmdlbWVudHMK
LXdlcmUgbmVjZXNzYXJ5KSwgdGhlIHNoZWxsIHZhcmlhYmxlIEBjb2Rle2FjX2hhdmVfeWVh
cjIwMzh9IHdpbGwgYmUgc2V0Ci10byBAc2FtcHt5ZXN9OyBpZiBub3QsIGl0IHdpbGwgYmUg
c2V0IHRvIEBzYW1we25vfS4KLQotUHJlcHJvY2Vzc29yIG1hY3JvcyB3aWxsIGJlIGRlZmlu
ZWQgaWYgbmVjZXNzYXJ5IHRvIG1ha2UgYSBsYXJnZXIKLUBjb2Rle3RpbWVfdH0gYXZhaWxh
YmxlLiAgKEZvciBleGFtcGxlLCBvbiBzb21lIHN5c3RlbXMgdGhlIG1hY3JvCi1AY29kZXtf
VElNRV9CSVRTfSB3aWxsIGJlIGRlZmluZWQuKSAgU29tZSBvZiB0aGVzZSBtYWNyb3Mgb25s
eSB3b3JrIGlmCi10aGV5IGFyZSBkZWZpbmVkIGJlZm9yZSB0aGUgZmlyc3Qgc3lzdGVtIGhl
YWRlciBpcyBpbmNsdWRlZDsgdGhlcmVmb3JlLAotd2hlbiB1c2luZyB0aGlzIG1hY3JvIGlu
IGNvbmNlcnQgd2l0aCBAY29kZXtBQ19DT05GSUdfSEVBREVSU30sIG1ha2UKLXN1cmUgdGhh
dCBAZmlsZXtjb25maWcuaH0gaXMgaW5jbHVkZWQgYmVmb3JlIGFueSBzeXN0ZW0gaGVhZGVy
cy4KLQotU3VwcG9ydCBmb3IgdGltZXN0YW1wcyBhZnRlciAyMDM4IGNhbiBiZSBkaXNhYmxl
ZCBieSBjb25maWd1cmluZyB3aXRoCi10aGUgQG9wdGlvbnstLWRpc2FibGUteWVhcjIwMzh9
IG9wdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGhhcyBubyBlZmZlY3Qgb24KLXN5c3RlbXMgd2hl
cmUgQGNvZGV7dGltZV90fSBpcyA2NCBiaXRzIG9yIGxhcmdlciBieSBkZWZhdWx0LgotSWYg
dGhpcyBvcHRpb24gaXMgQGVtcGh7bm90fSBnaXZlbiwgYW5kIEBjb21tYW5ke2NvbmZpZ3Vy
ZX0gZmFpbHMgdG8KLWZpbmQgYSB3YXkgdG8gZW5hYmxlIGEgbGFyZ2UgQGNvZGV7dGltZV90
fSwgYnV0IGluc3BlY3Rpb24gb2YgdGhlCi1zeXN0ZW0gc3VnZ2VzdHMgdGhhdCB0aGlzIGZl
YXR1cmUgaXMgYXZhaWxhYmxlIEBlbXBoe3NvbWVob3d9LCBpdCB3aWxsCi1lcnJvciBvdXQu
Ci0KLVJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB5b3UgdXNlIHRoaXMgbWFjcm8sIHBvcnRhYmxl
IHByb2dyYW1zIHNob3VsZCBub3QKLWFzc3VtZSB0aGF0IEBjb2Rle3RpbWVfdH0gZml0cyBp
bnRvIEBjb2Rle2xvbmcgaW50fS4gIEZvciBleGFtcGxlLCBpdCBpcwotbm90IGNvcnJlY3Qg
dG8gcHJpbnQgYW4gYXJiaXRyYXJ5IEBjb2Rle3RpbWVfdH0gdmFsdWUgQGNvZGV7WH0gd2l0
aAotQGNvZGV7cHJpbnRmICgiJWxkIiwgKGxvbmcgaW50KSBYKX0uCi0KLUBzdHJvbmd7Q2F1
dGlvbjp9IElmIHlvdSBhcmUgZGV2ZWxvcGluZyBhIHNoYXJlZCBsaWJyYXJ5LCBhbmQKLUBj
b2Rle3RpbWVfdH0gYXBwZWFycyBhbnl3aGVyZSBpbiB5b3VyIGxpYnJhcnkncyBwdWJsaWMg
aW50ZXJmYWNlLCB1c2UKLW9mIHRoaXMgbWFjcm8gbWF5IGJyZWFrIGJpbmFyeSBjb21wYXRp
YmlsaXR5IHdpdGggb2xkZXIgZXhlY3V0YWJsZXMuCi1AZW5kIGRlZm1hYwotCi1AZGVmbWFj
IEFDX1NZU19ZRUFSMjAzOF9SRVFVSVJFRAotQGFjaW5kZXh7U1lTX1lFQVIyMDM4X1JFUVVJ
UkVEfQotVGhpcyBtYWNybyBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIEBjb2Rle0FDX1NZU19Z
RUFSMjAzOH0sCi1idXQgYWxzbyBkZWNsYXJlcyB0aGF0IHRoZSBwcm9ncmFtIGJlaW5nIGNv
bmZpZ3VyZWQKLUBlbXBoe3JlcXVpcmVzfSBzdXBwb3J0IGZvciB0aW1lc3RhbXBzIGFmdGVy
IG1pZC1KYW51YXJ5IG9mIDIwMzguCi1JZiBhIGxhcmdlIEBjb2Rle3RpbWVfdH0gaXMgdW5h
dmFpbGFibGUsCi1AY29tbWFuZHtjb25maWd1cmV9IHdpbGwgQGVtcGh7dW5jb25kaXRpb25h
bGx5fSBlcnJvciBvdXQKLSh1bmxpa2UgdGhlIGJlaGF2aW9yIG9mIEBjb2Rle0FDX1NZU19Z
RUFSMjAzOH0pLgotVGhlIEBvcHRpb257LS1kaXNhYmxlLXllYXIyMDM4fSBvcHRpb24gd2ls
bCBub3QgYmUgYXZhaWxhYmxlLgotCi1Ac3Ryb25ne0NhdXRpb246fSBJZiB5b3UgYXJlIGRl
dmVsb3BpbmcgYSBzaGFyZWQgbGlicmFyeSwgYW5kCi1AY29kZXt0aW1lX3R9IGFwcGVhcnMg
YW55d2hlcmUgaW4geW91ciBsaWJyYXJ5J3MgcHVibGljIGludGVyZmFjZSwgdXNlCi1vZiB0
aGlzIG1hY3JvIG1heSBicmVhayBiaW5hcnkgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGV4
ZWN1dGFibGVzLgorVGhpcyBpcyBsaWtlIEBjb2Rle0FDX1NZU19MQVJHRUZJTEV9IGV4Y2Vw
dCBpdCBkZWZhdWx0cyB0byBlbmFibGluZworaW5zdGVhZCBvZiBkaXNhYmxpbmcgeWVhci0y
MDM4IHN1cHBvcnQuICBAeHJlZntBQ19TWVNfTEFSR0VGSUxFfS4KIEBlbmQgZGVmbWFjCiAK
IEBub2RlIEMgYW5kIFBvc2l4IFZhcmlhbnRzCmRpZmYgLS1naXQgYS9saWIvYXV0b2NvbmYv
c3BlY2lmaWMubTQgYi9saWIvYXV0b2NvbmYvc3BlY2lmaWMubTQKaW5kZXggMDQ5M2QwMWQu
LjZmOWI4OWJjIDEwMDY0NAotLS0gYS9saWIvYXV0b2NvbmYvc3BlY2lmaWMubTQKKysrIGIv
bGliL2F1dG9jb25mL3NwZWNpZmljLm00CkBAIC0xNTYsOCArMTU2LDYgQEAgQVNfQ0FTRShb
JGFjX2N2X3N5c195ZWFyMjAzOF9vcHRzXSwKICAgWyJzdXBwb3J0IG5vdCBkZXRlY3RlZCJd
LAogICAgIFthY19oYXZlX3llYXIyMDM4PW5vCiAgICAgIEFTX0NBU0UoWyRlbmFibGVfeWVh
cjIwMzhdLAotICAgICAgW3JlcXVpcmVkXSwKLSAgICAgICAgW0FDX01TR19GQUlMVVJFKFtz
dXBwb3J0IGZvciB0aW1lc3RhbXBzIGFmdGVyIEphbiAyMDM4IGlzIHJlcXVpcmVkXSldLAog
ICAgICAgW3llc10sCiAgICAgICAgIFsjIElmIHdlJ3JlIG5vdCBjcm9zcyBjb21waWxpbmcg
YW5kICd0b3VjaCcgd29ya3Mgd2l0aCBhIGxhcmdlCiAgICAgICAgICMgdGltZXN0YW1wLCB0
aGVuIHdlIGNhbiBwcmVzdW1lIHRoZSBzeXN0ZW0gc3VwcG9ydHMgd2lkZXIgdGltZV90CkBA
IC0yMDQsMjIgKzIwMiwxOSBAQCBBU19DQVNFKFskYWNfY3Zfc3lzX3llYXIyMDM4X29wdHNd
LAogIyAtLWVuYWJsZS15ZWFyMjAzOCwgb3IgYSAtLWRpc2FibGUteWVhcjIwMzgsIG9yIG5v
IG9wdGlvbiBhdCBhbGwgdG8KICMgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuICBOb3RlIHRoYXQg
dGhpcyBpcyBleHBhbmRlZCB2ZXJ5IGxhdGUgYW5kCiAjIHRoZXJlZm9yZSB0aGVyZSBjYW5u
b3QgYmUgYW55IGNvZGUgaW4gdGhlIEFDX0FSR19FTkFCTEUuICBUaGUKLSMgZGVmYXVsdCB2
YWx1ZSBmb3IgYGVuYWJsZV95ZWFyMjAzOGAgaXMgZW1pdHRlZCB1bmNvbmRpdGlvbmFsbHkK
KyMgZGVmYXVsdCB2YWx1ZSBmb3IgZW5hYmxlX3llYXIyMDM4IGlzIGVtaXR0ZWQgdW5jb25k
aXRpb25hbGx5CiAjIGJlY2F1c2UgdGhlIGdlbmVyYXRlZCBjb2RlIGFsd2F5cyBsb29rcyBh
dCB0aGlzIHZhcmlhYmxlLgogbTRfZGVmaW5lKFtfQUNfU1lTX1lFQVIyMDM4X0VOQUJMRV0s
CiBbbTRfZGl2ZXJ0X3RleHQoW0RFRkFVTFRTXSwKLSAgbTRfcHJvdmlkZV9pZihbQUNfU1lT
X1lFQVIyMDM4X1JFUVVJUkVEXSwKLSAgICBbZW5hYmxlX3llYXIyMDM4PXJlcXVpcmVkXSwK
ICAgbTRfcHJvdmlkZV9pZihbQUNfU1lTX1lFQVIyMDM4XSwKICAgICBbZW5hYmxlX3llYXIy
MDM4PXllc10sCi0gICAgW2VuYWJsZV95ZWFyMjAzOD1ub10pKSldZG5sCi1bbTRfcHJvdmlk
ZV9pZihbQUNfU1lTX1lFQVIyMDM4X1JFUVVJUkVEXSwgW10sCisgICAgW2VuYWJsZV95ZWFy
MjAzOD1ub10pKV1kbmwKIFtBQ19BUkdfRU5BQkxFKFt5ZWFyMjAzOF0sCiAgIG00X3Byb3Zp
ZGVfaWYoW0FDX1NZU19ZRUFSMjAzOF0sCiAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWRpc2Fi
bGUteWVhcjIwMzhdLAotICAgICAgW29taXQgc3VwcG9ydCBmb3IgZGF0ZXMgYWZ0ZXIgSmFu
IDIwMzhdKV0sCisgICAgICBbZG8gbm90IHN1cHBvcnQgdGltZXN0YW1wcyBhZnRlciAyMDM4
XSldLAogICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUteWVhcjIwMzhdLAotICAgICAg
W2luY2x1ZGUgc3VwcG9ydCBmb3IgZGF0ZXMgYWZ0ZXIgSmFuIDIwMzhdKV0pKV0pXSkKKyAg
ICAgIFtzdXBwb3J0IHRpbWVzdGFtcHMgYWZ0ZXIgMjAzOF0pXSkpXSkKIAogIyBfQUNfU1lT
X1lFQVIyMDM4X09QVF9JTgogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjQxLDI4
ICsyMzYsMTIgQEAgQUNfREVGVU4oW19BQ19TWVNfWUVBUjIwMzhfT1BUX0lOXSwKICMgT24g
c3lzdGVtcyB3aGVyZSB0aW1lX3QgaXMgbm90IGFsd2F5cyA2NCBiaXRzLCB0aGlzIHByb2Jl
IGNhbiBiZQogIyBza2lwcGVkIGJ5IHBhc3NpbmcgdGhlIC0tZGlzYWJsZS15ZWFyMjAzOCBv
cHRpb24gdG8gY29uZmlndXJlLgogQUNfREVGVU4oW0FDX1NZU19ZRUFSMjAzOF0sCi1bbTRf
cHJvdmlkZV9pZihbQUNfU1lTX0xBUkdFRklMRV9SRVFVSVJFRF0sIFtdLAotICBbQUNfUkVR
VUlSRShbQUNfU1lTX0xBUkdFRklMRV0pXSldZG5sCitbQUNfUkVRVUlSRShbQUNfU1lTX0xB
UkdFRklMRV0pXWRubAogW200X3Byb3ZpZGVfaWYoW19BQ19TWVNfWUVBUjIwMzhfUFJPQkVd
LCBbXSwgW2RubAogICBBU19JRihbdGVzdCAiJGVuYWJsZV95ZWFyMjAzOCIgIT0gbm9dLCBb
X0FDX1NZU19ZRUFSMjAzOF9QUk9CRV0pCiAgIEFDX0NPTkZJR19DT01NQU5EU19QUkUoW19B
Q19TWVNfWUVBUjIwMzhfRU5BQkxFXSkKIF0pXSkKIAotIyBBQ19TWVNfWUVBUjIwMzhfUkVR
VUlSRUQKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFNhbWUgYXMgQUNfU1lTX1lF
QVIyMDM4LCBidXQgZGVjbGFyZXMgdGhhdCB0aGlzIHByb2dyYW0gKnJlcXVpcmVzKgotIyBz
dXBwb3J0IGZvciBsYXJnZSB0aW1lX3QuICBJZiB3ZSBjYW5ub3QgZmluZCBhbnkgd2F5IHRv
IG1ha2UgdGltZV90Ci0jIGNhcGFibGUgb2YgcmVwcmVzZW50aW5nIHZhbHVlcyBsYXJnZXIg
dGhhbiAyKiozMSAtIDEsIGNvbmZpZ3VyZSB3aWxsCi0jIGVycm9yIG91dC4gIEZ1cnRoZXJt
b3JlLCBubyAtLWVuYWJsZS15ZWFyMjAzOCBub3IgLS1kaXNhYmxlLXllYXIyMDM4Ci0jIG9w
dGlvbiB3aWxsIGJlIGF2YWlsYWJsZS4KLUFDX0RFRlVOKFtBQ19TWVNfWUVBUjIwMzhfUkVR
VUlSRURdLAotW200X3Byb3ZpZGVfaWYoW0FDX1NZU19MQVJHRUZJTEVfUkVRVUlSRURdLCBb
XSwKLSAgW0FDX1JFUVVJUkUoW0FDX1NZU19MQVJHRUZJTEVdKV0pXWRubAotW200X3Byb3Zp
ZGVfaWYoW19BQ19TWVNfWUVBUjIwMzhfUFJPQkVdLCBbXSwgW2RubAotICBfQUNfU1lTX1lF
QVIyMDM4X1BST0JFCi0gIEFDX0NPTkZJR19DT01NQU5EU19QUkUoW19BQ19TWVNfWUVBUjIw
MzhfRU5BQkxFXSkKLV0pXSkKLQogIyBfQUNfU1lTX0xBUkdFRklMRV9URVNUX0NPREUKICMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEMgY29kZSB1c2VkIHRvIHByb2JlIGZv
ciBsYXJnZSBmaWxlIHN1cHBvcnQuCkBAIC0zMjMsOSArMzAyLDcgQEAgYWNfaGF2ZV9sYXJn
ZWZpbGU9eWVzCiBBU19DQVNFKFskYWNfY3Zfc3lzX2xhcmdlZmlsZV9vcHRzXSwKICAgWyJu
b25lIG5lZWRlZCJdLCBbXSwKICAgWyJzdXBwb3J0IG5vdCBkZXRlY3RlZCJdLAotICAgIFth
Y19oYXZlX2xhcmdlZmlsZT1ubwotICAgICBBU19JRihbdGVzdCAkZW5hYmxlX2xhcmdlZmls
ZSA9IHJlcXVpcmVkXSwKLSAgICAgICBbQUNfTVNHX0ZBSUxVUkUoW3N1cHBvcnQgZm9yIGxh
cmdlIGZpbGVzIGlzIHJlcXVpcmVkXSldKV0sCisgICAgW2FjX2hhdmVfbGFyZ2VmaWxlPW5v
XSwKIAogICBbIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiXSwKICAgICBbQUNfREVGSU5FKFtf
RklMRV9PRkZTRVRfQklUU10sIFs2NF0sCkBAIC0zNDYsMjEgKzMyMywxNiBAQCBfQUNfU1lT
X1lFQVIyMDM4X09QVF9JTgogCiAjIF9BQ19TWVNfTEFSR0VGSUxFX0VOQUJMRQogIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgU3Vicm91dGluZSBvZiBBQ19TWVNfTEFSR0VGSUxF
LiAgSWYgQUNfU1lTX0xBUkdFRklMRV9SRVFVSVJFRCB3YXMKLSMgbm90IHVzZWQgYXQgYW55
IHBvaW50IGluIHRoaXMgY29uZmlndXJlIHNjcmlwdCwgYWRkIGEKLSMgLS1kaXNhYmxlLWxh
cmdlZmlsZSBvcHRpb24gdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuICBOb3RlIHRoYXQgdGhp
cworIyBTdWJyb3V0aW5lIG9mIEFDX1NZU19MQVJHRUZJTEUuICBOb3RlIHRoYXQgdGhpcwog
IyBpcyBleHBhbmRlZCB2ZXJ5IGxhdGUgYW5kIHRoZXJlZm9yZSB0aGVyZSBjYW5ub3QgYmUg
YW55IGNvZGUgaW4gdGhlCi0jIEFDX0FSR19FTkFCTEUuICBUaGUgZGVmYXVsdCB2YWx1ZSBm
b3IgYGVuYWJsZV9sYXJnZWZpbGVgIGlzIGVtaXR0ZWQKKyMgQUNfQVJHX0VOQUJMRS4gIFRo
ZSBkZWZhdWx0IHZhbHVlIGZvciBlbmFibGVfbGFyZ2VmaWxlIGlzIGVtaXR0ZWQKICMgdW5j
b25kaXRpb25hbGx5IGJlY2F1c2UgdGhlIGdlbmVyYXRlZCBzaGVsbCBjb2RlIGFsd2F5cyBs
b29rcyBhdAogIyB0aGlzIHZhcmlhYmxlLgogbTRfZGVmaW5lKFtfQUNfU1lTX0xBUkdFRklM
RV9FTkFCTEVdLAogW200X2RpdmVydF90ZXh0KFtERUZBVUxUU10sCi0gIG00X3Byb3ZpZGVf
aWYoW0FDX1NZU19MQVJHRUZJTEVfUkVRVUlSRURdLAotICAgIFtlbmFibGVfbGFyZ2VmaWxl
PXJlcXVpcmVkXSwKLSAgICBbZW5hYmxlX2xhcmdlZmlsZT15ZXNdKSldZG5sCi1bbTRfcHJv
dmlkZV9pZihbQUNfU1lTX0xBUkdFRklMRV9SRVFVSVJFRF0sIFtdLAorICBlbmFibGVfbGFy
Z2VmaWxlPXllcyldZG5sCiBbQUNfQVJHX0VOQUJMRShbbGFyZ2VmaWxlXSwKLSAgW0FTX0hF
TFBfU1RSSU5HKFstLWRpc2FibGUtbGFyZ2VmaWxlXSwgW29taXQgc3VwcG9ydCBmb3IgbGFy
Z2UgZmlsZXNdKV0pXSldKQorICBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1sYXJnZWZp
bGVdLCBbb21pdCBzdXBwb3J0IGZvciBsYXJnZSBmaWxlc10pXSldKQogCiAjIEFDX1NZU19M
QVJHRUZJTEUKICMgLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzcyLDI4ICszNDQsMTMgQEAgbTRf
ZGVmaW5lKFtfQUNfU1lTX0xBUkdFRklMRV9FTkFCTEVdLAogIyB0byBoYXZlIGEgNjQtYml0
IGlub2RlIG51bWJlciBjYW5ub3QgYmUgYWNjZXNzZWQgYnkgMzItYml0IGFwcGxpY2F0aW9u
cyBvbgogIyBMaW51eCB4ODYveDg2XzY0LiAgVGhpcyBjYW4gb2NjdXIgd2l0aCBmaWxlIHN5
c3RlbXMgc3VjaCBhcyBYRlMgYW5kIE5GUy4KICMgVGhpcyBtYWNybyBhbGxvd3MgY29uZmln
dXJhdGlvbiB0byBjb250aW51ZSBpZiB0aGUgc3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydAotIyBs
YXJnZSBmaWxlczsgc2VlIGFsc28gQUNfU1lTX0xBUkdFRklMRV9SRVFVSVJFRC4KKyMgbGFy
Z2UgZmlsZXMuCiBBQ19ERUZVTihbQUNfU1lTX0xBUkdFRklMRV0sCiBbbTRfcHJvdmlkZV9p
ZihbX0FDX1NZU19MQVJHRUZJTEVfUFJPQkVdLCBbXSwgW2RubAogICBBU19JRihbdGVzdCAi
JGVuYWJsZV9sYXJnZWZpbGUiICE9IG5vXSwgW19BQ19TWVNfTEFSR0VGSUxFX1BST0JFXSkK
ICAgQUNfQ09ORklHX0NPTU1BTkRTX1BSRShbX0FDX1NZU19MQVJHRUZJTEVfRU5BQkxFXSkK
IF0pXSkKIAotIyBBQ19TWVNfTEFSR0VGSUxFX1JFUVVJUkVECi0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLSMgU2FtZSBhcyBBQ19TWVNfTEFSR0VGSUxFLCBidXQgZGVjbGFyZXMg
dGhhdCB0aGlzIHByb2dyYW0gKnJlcXVpcmVzKgotIyBzdXBwb3J0IGZvciBsYXJnZSBmaWxl
cy4gIElmIHdlIGNhbm5vdCBmaW5kIGEgY29tYmluYXRpb24gb2YgY29tcGlsZXIKLSMgb3B0
aW9ucyBhbmQgI2RlZmluZXMgdGhhdCBtYWtlcyBgb2ZmX3RgIGNhcGFibGUgb2YgcmVwcmVz
ZW50aW5nIDIqKjYzIC0gMSwKLSMgYGNvbmZpZ3VyZWAgd2lsbCBlcnJvciBvdXQuICBGdXJ0
aGVybW9yZSwgYGNvbmZpZ3VyZWAgd2lsbCBub3Qgb2ZmZXIgYQotIyAtLWRpc2FibGUtbGFy
Z2VmaWxlIGNvbW1hbmQgbGluZSBvcHRpb24uCi0jIElmIGJvdGggQUNfU1lTX0xBUkdFRklM
RSBhbmQgQUNfU1lTX0xBUkdFRklMRV9SRVFVSVJFRCBhcmUgdXNlZCBpbiB0aGUKLSMgc2Ft
ZSBjb25maWd1cmUgc2NyaXB0IC0tIGluIGVpdGhlciBvcmRlciAtLSBBQ19TWVNfTEFSR0VG
SUxFX1JFUVVJUkVEIHdpbnMuCi1BQ19ERUZVTihbQUNfU1lTX0xBUkdFRklMRV9SRVFVSVJF
RF0sCi1bbTRfcHJvdmlkZV9pZihbX0FDX1NZU19MQVJHRUZJTEVfUFJPQkVdLCBbXSwgW2Ru
bAotICBfQUNfU1lTX0xBUkdFRklMRV9QUk9CRQotICBBQ19DT05GSUdfQ09NTUFORFNfUFJF
KFtfQUNfU1lTX0xBUkdFRklMRV9FTkFCTEVdKQotXSldKQotCiAjIEFDX1NZU19MT05HX0ZJ
TEVfTkFNRVMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBTZWN1cml0eTogdXNlIGEg
dGVtcG9yYXJ5IGRpcmVjdG9yeSBhcyB0aGUgbW9zdCBwb3J0YWJsZSB3YXkgb2YKLS0gCjIu
MzguMQoK

--------------tNtW2eYtrSd5eJwzrrZ588te--