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--