From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.cs.ucla.edu (mail.cs.ucla.edu [131.179.128.66]) by sourceware.org (Postfix) with ESMTPS id F23B53858D33 for ; Sat, 6 Apr 2024 17:18:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F23B53858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=cs.ucla.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cs.ucla.edu ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F23B53858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=131.179.128.66 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712423888; cv=none; b=r84ouOgcFzHQK3UagdxdkRlXZTx7rfNWznh39oykuYmE2z5Y3+HBmjvDD+SBdHxcN2hAyHj+3CUZu2Qm9EeEYOsOZn57HfwkORnNIgld9xF6qvTxyqZAb3nZjFPGumEWPIWDI4BVxyBUwomNngPgx2jYoplxRw35wwquZLrIkOU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712423888; c=relaxed/simple; bh=9epDxKNsl+wSU19/z9Vh2sQFVBInEtZ2aXXDJv/gLdo=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=YiVG8PNBypjLkQBypgmqcL0+sVHd9o+h+Ftq8Hoq8EOpmB+3K7UTog4O8DbNg/IFyizhdHv/uVEZLTC/O53NFx1J1Yhgu1aqBKxX4+YdOWvkbvc/ViYIBA7v7x+GqzOyBs4bqcjGy2t9uucULmxJ1xi0bjvSmwCKMOOKo7Fy7I0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 1F78E3C011BDB; Sat, 6 Apr 2024 10:18:05 -0700 (PDT) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id 7gubRu3xZs_s; Sat, 6 Apr 2024 10:18:04 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 6F6783C011BDD; Sat, 6 Apr 2024 10:18:04 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu 6F6783C011BDD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1712423884; bh=c8NjQ0lxJ7Gjm1r/3mirdy+XbBbslVuqyf5WZ5ieflk=; h=Message-ID:Date:MIME-Version:To:From; b=fO5HK5G0Lgyko7+oWTZH/bkJyyOaG6YGdCd3nclH6Rk/EFyVhMqMocH3WWDWb0Pfk OYcE3KupL+oPeYt5mglzyyOapBPhVd07b52kbsFj4BD/nWW4RQuv+hAxpm/QPDrLKd 9CCYLUe2f0SgXa7sPIWuCE3ZXGJDJVtihY+1kpxa23UPDVMsg6SsjeakZz3g7FKcuo /A61sbc+uGwmoqFg0K34M8sDwNkmJYt9iCdYJpR9jn0sfyY/nN3lEUKpYsZpZ1mYbv rAt/O5t3d9RFQIZrPSYLa/1nNIxQp+9VbHHL5dhURC7zowHADIc7xAJvGEL60/sprG H61jpJr1k2/sw== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id 1u7D97JX7ZOR; Sat, 6 Apr 2024 10:18:04 -0700 (PDT) Received: from [192.168.254.12] (unknown [47.154.17.165]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 39E863C011BDB; Sat, 6 Apr 2024 10:18:04 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------vExHDaEz5bIcIyg0oLYUr0aH" Message-ID: <1b2e16dd-4acf-45da-9285-7c6ce0e0fea6@cs.ucla.edu> Date: Sat, 6 Apr 2024 10:17:59 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: New GNU C Library (glibc) security flaw reported on 30 Jan 2024 To: Zack Weinberg , Siddhesh Poyarekar , Vincent Lefevre , Xi Ruoyao , Adhemerval Zanella , Turritopsis Dohrnii Teo En Ming , GNU libc development , "ceo@teo-en-ming-corp.com" References: <20240131145555.GB2102@cventin.lip.ens-lyon.fr> <96521764f4636c9ea3f3089f369975c12fa8be77.camel@xry111.site> <20240201005155.GF3044@qaa.vinc17.org> <20240201090721.GH3044@qaa.vinc17.org> <5ea9eabb-f047-490f-abe9-43630d79c395@cs.ucla.edu> <7234533a-c8dd-4114-aa64-d4af3b138a3a@gotplt.org> <4d94a528-fe3f-413d-afa0-91a41f8371ff@app.fastmail.com> Content-Language: en-US From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <4d94a528-fe3f-413d-afa0-91a41f8371ff@app.fastmail.com> X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,GIT_PATCH_0,KAM_MANYTO,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------vExHDaEz5bIcIyg0oLYUr0aH Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2024-02-07 09:07, Zack Weinberg wrote: > I might send another patch for this file later; I think it would be clearer to > consolidate most of the new language about how the comparison function is required > to behave into the "Comparison Functions" node. Since we've made no further progress and it's surely worth improving the documentation based on what we had, I installed the attached doc patch. This incorporates your suggestions, with some rewording (I hope you like it), except I omitted the assertion that other C libraries don't conform to the C standard with respect to qsort array addresses, as that's something we're not sure about. --------------vExHDaEz5bIcIyg0oLYUr0aH Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-bsearch-qsort-doc-to-match-POSIX-better.patch" Content-Disposition: attachment; filename="0001-Fix-bsearch-qsort-doc-to-match-POSIX-better.patch" Content-Transfer-Encoding: base64 RnJvbSA1NzU4MWFjZDk1NTkyMTdlODU5ZmRhYzY5MzE0NWNlNjM5OWY0ZDcwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBTYXQsIDYgQXByIDIwMjQgMDg6NDQ6MDEgLTA3MDAKU3ViamVjdDogW1BBVENI XSBGaXggYnNlYXJjaCwgcXNvcnQgZG9jIHRvIG1hdGNoIFBPU0lYIGJldHRlcgpNSU1FLVZl cnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29u dGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKKiBtYW51YWwvc2VhcmNoLnRleGkgKEFy cmF5IFNlYXJjaCBGdW5jdGlvbik6CkNvcnJlY3QgdGhlIHN0YXRlbWVudCBhYm91dCBsZmlu ZOKAmXMgbWVhbiBydW50aW1lOgppdCBpcyBwcm9wb3J0aW9uYWwgdG8gYSBudW1iZXIgKG5v dCB0aGF0IG51bWJlciksCmFuZCB0aGlzIGlzIHRydWUgb25seSBpZiByYW5kb20gZWxlbWVu dHMgYXJlIHNlYXJjaGVkIGZvci4KUmVsYXggdGhlIGNvbnN0cmFpbnQgb24gYnNlYXJjaOKA mXMgYXJyYXkgYXJndW1lbnQ6ClBPU0lYIHNheXMgaXQgbmVlZCBub3QgYmUgc29ydGVkLCBv bmx5IHBhcnRpYWxseSBzb3J0ZWQuClNheSB0aGF0IHRoZSBmaXJzdCBhcmcgcGFzc2VkIHRv IGJzZWFyY2jigJlzIGNvbXBhcmlzb24gZnVuY3Rpb24KaXMgdGhlIGtleSwgYW5kIHRoZSBz ZWNvbmQgYXJnIGlzIGFuIGFycmF5IGVsZW1lbnQsIGFzClBPU0lYIHJlcXVpcmVzLiAgRm9y IGJzZWFyY2ggYW5kIHFzb3J0LCBzYXkgdGhhdCB0aGUKY29tcGFyaXNvbiBmdW5jdGlvbiBz aG91bGQgbm90IGFsdGVyIHRoZSBhcnJheSwgYXMgUE9TSVgKcmVxdWlyZXMuICBGb3IgcXNv cnQsIHNheSB0aGF0IHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uCm11c3QgZGVmaW5lIGEgdG90 YWwgb3JkZXIsIGFzIFBPU0lYIHJlcXVpcmVzLCB0aGF0Cml0IHNob3VsZCBub3QgZGVwZW5k IG9uIGVsZW1lbnQgYWRkcmVzc2VzLCB0aGF0CnRoZSBvcmlnaW5hbCBhcnJheSBpbmRleCBj YW4gYmUgdXNlZCBmb3Igc3RhYmxlIHNvcnRzLAphbmQgdGhhdCBpZiBxc29ydCBzdGlsbCB3 b3JrcyBpZiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscy4KQmUgbW9yZSBjb25zaXN0ZW50IGlu IGNhbGxpbmcgdGhlIGFycmF5IGVsZW1lbnRzCuKAnGVsZW1lbnRz4oCdIHJhdGhlciB0aGFu IOKAnG9iamVjdHPigJ0uCgpDby1hdXRob3JlZC1ieTogWmFjayBXZWluYmVyZyA8emFja0Bv d2xmb2xpby5vcmc+Ci0tLQogbWFudWFsL3NlYXJjaC50ZXhpIHwgNjAgKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDM2 IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21hbnVhbC9z ZWFyY2gudGV4aSBiL21hbnVhbC9zZWFyY2gudGV4aQppbmRleCBkYjU3N2E1MzMyLi5jYjA4 YzQ5NDA5IDEwMDY0NAotLS0gYS9tYW51YWwvc2VhcmNoLnRleGkKKysrIGIvbWFudWFsL3Nl YXJjaC50ZXhpCkBAIC04NCw4ICs4NCw5IEBAIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBwb2lu dGVyIHRvIHRoZSBtYXRjaGluZyBlbGVtZW50IGluIHRoZSBhcnJheQogc3RhcnRpbmcgYXQg QHZhcntiYXNlfSBpZiBpdCBpcyBmb3VuZC4gIElmIG5vIG1hdGNoaW5nIGVsZW1lbnQgaXMK IGF2YWlsYWJsZSBAY29kZXtOVUxMfSBpcyByZXR1cm5lZC4KIAotVGhlIG1lYW4gcnVudGlt ZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIEBjb2RleypAdmFye25tZW1ifX0vMi4gIFRoaXMKLWZ1 bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYgZWxlbWVudHMgb2Z0ZW4gZ2V0IGFkZGVk IHRvIG9yIGRlbGV0ZWQgZnJvbQorVGhlIG1lYW4gcnVudGltZSBvZiB0aGlzIGZ1bmN0aW9u IGlzIHByb3BvcnRpb25hbCB0byBAY29kZXsqQHZhcntubWVtYn0vMn0sCithc3N1bWluZyBy YW5kb20gZWxlbWVudHMgb2YgdGhlIGFycmF5IGFyZSBzZWFyY2hlZCBmb3IuICBUaGlzCitm dW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIGVsZW1lbnRzIG9mdGVuIGdldCBhZGRl ZCB0byBvciBkZWxldGVkIGZyb20KIHRoZSBhcnJheSBpbiB3aGljaCBjYXNlIGl0IG1pZ2h0 IG5vdCBiZSB1c2VmdWwgdG8gc29ydCB0aGUgYXJyYXkgYmVmb3JlCiBzZWFyY2hpbmcuCiBA ZW5kIGRlZnR5cGVmdW4KQEAgLTEyMiwyNiArMTIzLDM0IEBAIGJ5dGVzLiAgSWYgb25lIGlz IHN1cmUgdGhlIGVsZW1lbnQgaXMgaW4gdGhlIGFycmF5IGl0IGlzIGJldHRlciB0byB1c2UK IGNhbGxpbmcgQGNvZGV7bHNlYXJjaH0uCiBAZW5kIGRlZnR5cGVmdW4KIAotVG8gc2VhcmNo IGEgc29ydGVkIGFycmF5IGZvciBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBrZXksIHVzZSB0 aGUKLUBjb2Rle2JzZWFyY2h9IGZ1bmN0aW9uLiAgVGhlIHByb3RvdHlwZSBmb3IgdGhpcyBm dW5jdGlvbiBpcyBpbgorVG8gc2VhcmNoIGEgc29ydGVkIG9yIHBhcnRpYWxseSBzb3J0ZWQg YXJyYXkgZm9yIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIGtleSwKK3VzZSB0aGUgQGNvZGV7 YnNlYXJjaH0gZnVuY3Rpb24uICBUaGUgcHJvdG90eXBlIGZvciB0aGlzIGZ1bmN0aW9uIGlz IGluCiB0aGUgaGVhZGVyIGZpbGUgQGZpbGV7c3RkbGliLmh9LgogQHBpbmRleCBzdGRsaWIu aAogCiBAZGVmdHlwZWZ1biB7dm9pZCAqfSBic2VhcmNoIChjb25zdCB2b2lkICpAdmFye2tl eX0sIGNvbnN0IHZvaWQgKkB2YXJ7YXJyYXl9LCBzaXplX3QgQHZhcntjb3VudH0sIHNpemVf dCBAdmFye3NpemV9LCBjb21wYXJpc29uX2ZuX3QgQHZhcntjb21wYXJlfSkKIEBzdGFuZGFy ZHN7SVNPLCBzdGRsaWIuaH0KIEBzYWZldHl7QHByZWxpbXt9QG10c2FmZXt9QGFzc2FmZXt9 QGFjc2FmZXt9fQotVGhlIEBjb2Rle2JzZWFyY2h9IGZ1bmN0aW9uIHNlYXJjaGVzIHRoZSBz b3J0ZWQgYXJyYXkgQHZhcnthcnJheX0gZm9yIGFuIG9iamVjdAorVGhlIEBjb2Rle2JzZWFy Y2h9IGZ1bmN0aW9uIHNlYXJjaGVzIEB2YXJ7YXJyYXl9IGZvciBhbiBlbGVtZW50CiB0aGF0 IGlzIGVxdWl2YWxlbnQgdG8gQHZhcntrZXl9LiAgVGhlIGFycmF5IGNvbnRhaW5zIEB2YXJ7 Y291bnR9IGVsZW1lbnRzLAogZWFjaCBvZiB3aGljaCBpcyBvZiBzaXplIEB2YXJ7c2l6ZX0g Ynl0ZXMuCiAKIFRoZSBAdmFye2NvbXBhcmV9IGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGVyZm9y bSB0aGUgY29tcGFyaXNvbi4gIFRoaXMKLWZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHR3byBw b2ludGVyIGFyZ3VtZW50cyBhbmQgc2hvdWxkIHJldHVybiBhbgorZnVuY3Rpb24gaXMgY2Fs bGVkIHdpdGggYXJndW1lbnRzIHRoYXQgcG9pbnQgdG8gdGhlIGtleSBhbmQgdG8gYW4KK2Fy cmF5IGVsZW1lbnQsIGluIHRoYXQgb3JkZXIsIGFuZCBzaG91bGQgcmV0dXJuIGFuCiBpbnRl Z2VyIGxlc3MgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiB6ZXJvIGNvcnJlc3Bv bmRpbmcgdG8KLXdoZXRoZXIgaXRzIGZpcnN0IGFyZ3VtZW50IGlzIGNvbnNpZGVyZWQgbGVz cyB0aGFuLCBlcXVhbCB0bywgb3IgZ3JlYXRlcgotdGhhbiBpdHMgc2Vjb25kIGFyZ3VtZW50 LiAgVGhlIGVsZW1lbnRzIG9mIHRoZSBAdmFye2FycmF5fSBtdXN0IGFscmVhZHkKLWJlIHNv cnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIHRoaXMgY29tcGFyaXNvbiBm dW5jdGlvbi4KLQotVGhlIHJldHVybiB2YWx1ZSBpcyBhIHBvaW50ZXIgdG8gdGhlIG1hdGNo aW5nIGFycmF5IGVsZW1lbnQsIG9yIGEgbnVsbAord2hldGhlciB0aGUga2V5IGlzIGNvbnNp ZGVyZWQgbGVzcyB0aGFuLCBlcXVhbCB0bywgb3IgZ3JlYXRlciB0aGFuCit0aGUgYXJyYXkg ZWxlbWVudC4gIFRoZSBmdW5jdGlvbiBzaG91bGQgbm90IGFsdGVyIHRoZSBhcnJheSdzIGNv bnRlbnRzLAorYW5kIHRoZSBzYW1lIGFycmF5IGVsZW1lbnQgc2hvdWxkIGFsd2F5cyBjb21w YXJlIHRoZSBzYW1lIHdheSB3aXRoIHRoZSBrZXkuCisKK0FsdGhvdWdoIHRoZSBhcnJheSBu ZWVkIG5vdCBiZSBjb21wbGV0ZWx5IHNvcnRlZCwgaXQgc2hvdWxkIGJlCitwYXJ0aWFsbHkg c29ydGVkIHdpdGggcmVzcGVjdCB0byBAdmFye2tleX0uICBUaGF0IGlzLCB0aGUgYXJyYXkg c2hvdWxkCitiZWdpbiB3aXRoIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBsZXNzIHRoYW4gQHZh cntrZXl9LCBmb2xsb3dlZCBieQorZWxlbWVudHMgdGhhdCBjb21wYXJlIGVxdWFsIHRvIEB2 YXJ7a2V5fSwgYW5kIGVuZGluZyB3aXRoIGVsZW1lbnRzCit0aGF0IGNvbXBhcmUgZ3JlYXRl ciB0aGFuIEB2YXJ7a2V5fS4gIEFueSBvciBhbGwgb2YgdGhlc2UgZWxlbWVudAorc2VxdWVu Y2VzIGNhbiBiZSBlbXB0eS4KKworVGhlIHJldHVybiB2YWx1ZSBpcyBhIHBvaW50ZXIgdG8g YSBtYXRjaGluZyBhcnJheSBlbGVtZW50LCBvciBhIG51bGwKIHBvaW50ZXIgaWYgbm8gbWF0 Y2ggaXMgZm91bmQuICBJZiB0aGUgYXJyYXkgY29udGFpbnMgbW9yZSB0aGFuIG9uZSBlbGVt ZW50CiB0aGF0IG1hdGNoZXMsIHRoZSBvbmUgdGhhdCBpcyByZXR1cm5lZCBpcyB1bnNwZWNp ZmllZC4KIApAQCAtMTcxLDIwICsxODAsMjIgQEAgYXJyYXkgZWxlbWVudHMuICBUaGlzIGZ1 bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHR3byBwb2ludGVyIGFyZ3VtZW50cyBhbmQKIHNob3Vs ZCByZXR1cm4gYW4gaW50ZWdlciBsZXNzIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRo YW4gemVybwogY29ycmVzcG9uZGluZyB0byB3aGV0aGVyIGl0cyBmaXJzdCBhcmd1bWVudCBp cyBjb25zaWRlcmVkIGxlc3MgdGhhbiwKIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gaXRz IHNlY29uZCBhcmd1bWVudC4KK1RoZSBmdW5jdGlvbiBtdXN0IG5vdCBhbHRlciB0aGUgYXJy YXkncyBjb250ZW50cywgYW5kIG11c3QgZGVmaW5lIGEKK3RvdGFsIG9yZGVyaW5nIG9uIHRo ZSBhcnJheSBlbGVtZW50cywgaW5jbHVkaW5nIGFueSB1bnVzdWFsIHZhbHVlcworc3VjaCBh cyBmbG9hdGluZy1wb2ludCBOYU4gKEBweHJlZntJbmZpbml0eSBhbmQgTmFOfSkuCitCZWNh dXNlIHRoZSBzb3J0aW5nIHByb2Nlc3MgY2FuIG1vdmUgZWxlbWVudHMsCit0aGUgZnVuY3Rp b24ncyByZXR1cm4gdmFsdWUgbXVzdCBub3QgZGVwZW5kIG9uIHRoZSBlbGVtZW50IGFkZHJl c3Nlcworb3IgdGhlIHJlbGF0aXZlIHBvc2l0aW9ucyBvZiBlbGVtZW50cyB3aXRoaW4gdGhl IGFycmF5LAorYXMgdGhlc2UgYXJlIG1lYW5pbmdsZXNzIHdoaWxlIEBjb2Rle3Fzb3J0fSBp cyBydW5uaW5nLgogCiBAY2luZGV4IHN0YWJsZSBzb3J0aW5nCi1Ac3Ryb25ne1dhcm5pbmc6 fSBJZiB0d28gb2JqZWN0cyBjb21wYXJlIGFzIGVxdWFsLCB0aGVpciBvcmRlciBhZnRlcgor QHN0cm9uZ3tXYXJuaW5nOn0gSWYgdHdvIGVsZW1lbnRzIGNvbXBhcmUgZXF1YWwsIHRoZWly IG9yZGVyIGFmdGVyCiBzb3J0aW5nIGlzIHVucHJlZGljdGFibGUuICBUaGF0IGlzIHRvIHNh eSwgdGhlIHNvcnRpbmcgaXMgbm90IHN0YWJsZS4KIFRoaXMgY2FuIG1ha2UgYSBkaWZmZXJl bmNlIHdoZW4gdGhlIGNvbXBhcmlzb24gY29uc2lkZXJzIG9ubHkgcGFydCBvZgotdGhlIGVs ZW1lbnRzLiAgVHdvIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgc29ydCBrZXkgbWF5IGRpZmZl ciBpbiBvdGhlcgotcmVzcGVjdHMuCi0KLUFsdGhvdWdoIHRoZSBvYmplY3QgYWRkcmVzc2Vz IHBhc3NlZCB0byB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbiBsaWUKLXdpdGhpbiB0aGUgYXJy YXksIHRoZXkgbmVlZCBub3QgY29ycmVzcG9uZCB3aXRoIHRoZSBvcmlnaW5hbCBsb2NhdGlv bnMKLW9mIHRob3NlIG9iamVjdHMgYmVjYXVzZSB0aGUgc29ydGluZyBhbGdvcml0aG0gbWF5 IHN3YXAgYXJvdW5kIG9iamVjdHMKLWluIHRoZSBhcnJheSBiZWZvcmUgbWFraW5nIHNvbWUg Y29tcGFyaXNvbnMuICBUaGUgb25seSB3YXkgdG8gcGVyZm9ybQotYSBzdGFibGUgc29ydCB3 aXRoIEBjb2Rle3Fzb3J0fSBpcyB0byBmaXJzdCBhdWdtZW50IHRoZSBvYmplY3RzIHdpdGgg YQotbW9ub3RvbmljIGNvdW50ZXIgb2Ygc29tZSBraW5kLgordGhlIGVsZW1lbnRzIGFuZCB0 d28gZWxlbWVudHMgdGhhdCBjb21wYXJlIGVxdWFsIG1heSBkaWZmZXIgaW4gb3RoZXIKK3Jl c3BlY3RzLiAgVG8gZW5zdXJlIGEgc3RhYmxlIHNvcnQgaW4gdGhpcyBzaXR1YXRpb24sIHlv dSBjYW4gYXVnbWVudAorZWFjaCBlbGVtZW50IHdpdGggYW4gYXBwcm9wcmlhdGUgdGllLWJy ZWFraW5nIHZhbHVlLCBzdWNoIGFzIGl0cworb3JpZ2luYWwgYXJyYXkgaW5kZXguCiAKIEhl cmUgaXMgYSBzaW1wbGUgZXhhbXBsZSBvZiBzb3J0aW5nIGFuIGFycmF5IG9mIEBjb2Rle2xv bmcgaW50fSBpbiBudW1lcmljYWwKIG9yZGVyLCB1c2luZyB0aGUgY29tcGFyaXNvbiBmdW5j dGlvbiBkZWZpbmVkIGFib3ZlIChAcHhyZWZ7Q29tcGFyaXNvbgpAQCAtMjAyLDE4ICsyMTMs MTkgQEAgRnVuY3Rpb25zfSk6CiBUaGUgQGNvZGV7cXNvcnR9IGZ1bmN0aW9uIGRlcml2ZXMg aXRzIG5hbWUgZnJvbSB0aGUgZmFjdCB0aGF0IGl0IHdhcwogb3JpZ2luYWxseSBpbXBsZW1l bnRlZCB1c2luZyB0aGUgYGBxdWljayBzb3J0JycgYWxnb3JpdGhtLgogCi1UaGUgaW1wbGVt ZW50YXRpb24gb2YgQGNvZGV7cXNvcnR9IGF0dGVtcHRzIHRvIGFsbG9jYXRlIGF1eGlsaWFy eSBzdG9yYWdlCitUaGUgaW1wbGVtZW50YXRpb24gb2YgQGNvZGV7cXNvcnR9IGF0dGVtcHRz IHRvIGFsbG9jYXRlIGF1eGlsaWFyeSBtZW1vcnkKIGFuZCB1c2UgdGhlIG1lcmdlIHNvcnQg YWxnb3JpdGhtLCB3aXRob3V0IHZpb2xhdGluZyBDIHN0YW5kYXJkIHJlcXVpcmVtZW50CiB0 aGF0IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gcG9pbnQg d2l0aGluIHRoZSBhcnJheS4KK0lmIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlscywgQGNv ZGV7cXNvcnR9IHJlc29ydHMgdG8gYSBzbG93ZXIgYWxnb3JpdGhtLgogQGVuZCBkZWZ0eXBl ZnVuCiAKIEBub2RlIFNlYXJjaC9Tb3J0IEV4YW1wbGUKIEBzZWN0aW9uIFNlYXJjaGluZyBh bmQgU29ydGluZyBFeGFtcGxlCiAKIEhlcmUgaXMgYW4gZXhhbXBsZSBzaG93aW5nIHRoZSB1 c2Ugb2YgQGNvZGV7cXNvcnR9IGFuZCBAY29kZXtic2VhcmNofQotd2l0aCBhbiBhcnJheSBv ZiBzdHJ1Y3R1cmVzLiAgVGhlIG9iamVjdHMgaW4gdGhlIGFycmF5IGFyZSBzb3J0ZWQKK3dp dGggYW4gYXJyYXkgb2Ygc3RydWN0dXJlcy4gIFRoZSBlbGVtZW50cyBvZiB0aGUgYXJyYXkg YXJlIHNvcnRlZAogYnkgY29tcGFyaW5nIHRoZWlyIEBjb2Rle25hbWV9IGZpZWxkcyB3aXRo IHRoZSBAY29kZXtzdHJjbXB9IGZ1bmN0aW9uLgotVGhlbiwgd2UgY2FuIGxvb2sgdXAgaW5k aXZpZHVhbCBvYmplY3RzIGJhc2VkIG9uIHRoZWlyIG5hbWVzLgorVGhlbiwgd2UgY2FuIGxv b2sgdXAgaW5kaXZpZHVhbCBlbGVtZW50cyBiYXNlZCBvbiB0aGVpciBuYW1lcy4KIAogQGNv bW1lbnQgVGhpcyBleGFtcGxlIGlzIGRlZGljYXRlZCB0byB0aGUgbWVtb3J5IG9mIEppbSBI ZW5zb24uICBSSVAuCiBAc21hbGxleGFtcGxlCi0tIAoyLjQwLjEKCg== --------------vExHDaEz5bIcIyg0oLYUr0aH--