From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 40sdDChcEGS+GQ8AWB0awg (envelope-from ) for ; Tue, 14 Mar 2023 07:36:08 -0400 Received: by simark.ca (Postfix, from userid 112) id 230731E223; Tue, 14 Mar 2023 07:36:08 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=lists.lttng.org header.i=@lists.lttng.org header.a=rsa-sha256 header.s=default header.b=jOgQJ3j2; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.lttng.org (lists.lttng.org [167.114.26.123]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id AC0271E0D3 for ; Tue, 14 Mar 2023 07:36:03 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lists.lttng.org; s=default; t=1678793763; bh=FO4PSNdKrMO93qPisJHpVQsLSlF/TBmJD5cTNsfSC2c=; h=In-Reply-To:Date:Cc:References:To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=jOgQJ3j2kmupaJ4bNI3jjS+Ccf3P9NMehRHNLm1UyE1yVnp9DJzVhJ7bMTTTNcclT S6F3Av/MdmeUqQS5z/eO2PXCSg5w5VxEhVMRLioCGJjGhC/K6uphuvvnv9B13tkxyP DHXJ2VAenNxJlRC7i7M7Yab6+G4IdFUXIUV0X7+VB88NLhoTqfarxv8grw1jtBc63q uxsFiPCJKOdPTXVsv+romO5P5f/y0ZPmnIqED1UhLatSJCbxwlG2lbDeh+lsJTirZy EFc28mE02TR/H+dWKowKKTUSwVkBUnaz44vYXZ6viwMJ2mnvtMPASdHDLjSEpFm61G 3ASLF2DD3SjoA== Received: from lists-lttng01.efficios.com (localhost [IPv6:::1]) by lists.lttng.org (Postfix) with ESMTP id 4PbWgR0Kwmz2BkS; Tue, 14 Mar 2023 07:36:02 -0400 (EDT) Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by lists.lttng.org (Postfix) with ESMTPS id 4PbWgP4jzcz2BkR for ; Tue, 14 Mar 2023 07:36:01 -0400 (EDT) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id A73175C02BE; Tue, 14 Mar 2023 07:28:21 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Tue, 14 Mar 2023 07:28:21 -0400 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrvddviedgfedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptggguffhjgffvefgkfhfvffosehtqhhmtdhhtdejnecuhfhrohhmpefqnhgu rhgvjhcuufhurhpuuceoohhnughrvghjsehsuhhrhidrohhrgheqnecuggftrfgrthhtvg hrnhepvdekjeeiieejleeljedvkeeitedvgefhteeiudeutefftdekgfektedvffdtvedu necuffhomhgrihhnpeguohhtrghtrdgrthdpghhithhhuhgsrdgtohhmnecuvehluhhsth gvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepohhnughrvghjsehsuhhr hidrohhrgh X-ME-Proxy: Feedback-ID: ida81469e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 14 Mar 2023 07:28:20 -0400 (EDT) Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.400.51.1.1\)) In-Reply-To: <0aab344e-d1fe-09d4-a709-ccc2837e920a@efficios.com> Date: Tue, 14 Mar 2023 12:28:08 +0100 Cc: lttng-dev@lists.lttng.org, paulmck Message-Id: <8FFE9FFF-ECF4-4BA2-99B6-AAD9F35ED45D@sury.org> References: <09AA2241-0226-44B8-8363-32AEC813CBB4@sury.org> <3F64E9FA-5E54-4613-9D4B-E49053847CB3@sury.org> <0aab344e-d1fe-09d4-a709-ccc2837e920a@efficios.com> To: Mathieu Desnoyers X-Mailer: Apple Mail (2.3731.400.51.1.1) Subject: Re: [lttng-dev] urcu/rculist.h clarifications - for implementing LRU X-BeenThere: lttng-dev@lists.lttng.org X-Mailman-Version: 2.1.39 Precedence: list List-Id: LTTng development list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: =?utf-8?q?Ond=C5=99ej_Sur=C3=BD_via_lttng-dev?= Reply-To: =?utf-8?B?T25kxZllaiBTdXLDvQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: lttng-dev-bounces@lists.lttng.org Sender: "lttng-dev" SGkgTWF0aGlldSwKCgo+IE9uIDEzLiAzLiAyMDIzLCBhdCAyMTowMiwgTWF0aGlldSBEZXNub3ll cnMgPG1hdGhpZXUuZGVzbm95ZXJzQGVmZmljaW9zLmNvbT4gd3JvdGU6Cj4gCj4gT24gMjAyMy0w My0xMyAxMTozMCwgT25kxZllaiBTdXLDvSB3cm90ZToKPj4gSGkgTWF0dGhpZXUsCj4+IEkgc3Bl bnQgc29tZSBtb3JlIHRpbWUgd2l0aCB0aGUgdXNlcnNwYWNlLXJjdSBvbiBGcmlkYXkgYW5kIG92 ZXIgd2Vla2VuZCBhbmQKPj4gbm93IEkgYW0gaW4gbXVjaCBiZXR0ZXIgcGxhY2UuCj4+PiBPbiAx My4gMy4gMjAyMywgYXQgMTU6MjksIE1hdGhpZXUgRGVzbm95ZXJzIDxtYXRoaWV1LmRlc25veWVy c0BlZmZpY2lvcy5jb20+IHdyb3RlOgo+Pj4gCj4+PiBPbiAyMDIzLTAzLTExIDAxOjA0LCBPbmTF mWVqIFN1csO9IHZpYSBsdHRuZy1kZXYgd3JvdGU6Cj4+Pj4gSGV5LAo+Pj4+IHNvLCB3ZSBhcmUg aW50ZWdyYXRpbmcgdXNlcnNwYWNlLXJjdSB0byBCSU5EIDkgKHlheSEpIGFuZCBhcyBleHBlcmlt ZW50LAo+Pj4+IEkgYW0gcmV3cml0aW5nIHRoZSBpbnRlcm5hbCBhZGRyZXNzIGRhdGFiYXNlIChr ZWVwcyB0aGUgaW5mcmFzdHJ1Y3R1cmUKPj4+PiBpbmZvcm1hdGlvbiBhYm91dCBuYW1lcyBhbmQg YWRkcmVzc2VzKS4KPj4+IAo+Pj4gVGhhdCdzIGluZGVlZCB2ZXJ5IGludGVyZXN0aW5nICEKPj4g VGhhbmtzIGZvciB0aGUgdXNlcnNwYWNlLXJjdSEgSXQgc2F2ZXMgYSBsb3Qgb2YgdGltZSAtIHdo aWxlIG15IGNvbGxlYWd1ZSBUb255IEZpbmNoCj4+IGFscmVhZHkgd3JvdGUgb3VyIGludGVybmFs IFFTQlIgaW1wbGVtZW50YXRpb24gZnJvbSBzY3JhdGNoLCBpdCB3b3VsZCBiZSB3YXN0ZSBvZgo+ PiB0aW1lIHRvIHRyeSB0byByZWltcGxlbWVudCB0aGUgQ0RTIHBhcnQgb2YgdGhlIGxpYnJhcnku Cj4+IFRoaXMgaXMgcGFydCBvZiBsYXJnZXIgd29yayB0byByZXBsYWNlIHRoZSBpbnRlcm5hbCBC SU5EIDkgZGF0YWJhc2UgdGhhdCdzIGN1cnJlbnRseQo+PiBpbXBsZW1lbnRlZCBhcyByd2xvY2tl ZCBSQlQgd2l0aCBxcHRyaWUsIGlmIHlvdSBhcmUgaW50ZXJlc3RlZCBUb255IGhhcyBnb29kCj4+ IHN1bW1hcnkgaGVyZTogaHR0cHM6Ly9kb3RhdC5hdC9ALzIwMjMtMDItMjgtcXAtYmluZC5odG1s Cj4gCj4gU3BlYWtpbmcgb2YgdHJpZXMsIEkgaGF2ZSBpbXBsZW1lbnRlZCBSQ1UgSnVkeSBhcnJh eXMgaW4gbGlidXJjdSBmZWF0dXJlIGJyYW5jaGVzIGEKPiB3aGlsZSBiYWNrLiBUaG9zZSBuZXZl ciBtYWRlIGl0IHRvIHRoZSBsaWJ1cmN1IG1hc3RlciBicmFuY2ggYmVjYXVzZSBJIGhhZCBubyBy ZWFsLWxpZmUKPiB1c2UgZm9yIHRob3NlIHNvIGZhciwgYW5kIEkgZGlkIG5vdCB3YW50IHRvIGV4 cG9zZSBhIHB1YmxpYyBBUEkgdGhhdCB3b3VsZCBiaXRyb3Qgd2l0aG91dAo+IHJlYWwtbGlmZSB1 c2VyIGZlZWRiYWNrLgo+IAo+IFRoZSBsb29rdXBzIGFuZCBvcmRlcmVkIHRyYXZlcnNhbHMgKG5l eHQvcHJldikgYXJlIGVudGlyZWx5IFJDVSwgYW5kIHVwZGF0ZXMgYXJlCj4gZWl0aGVyIHNpbmds ZS10aHJlYWRlZCwgb3IgdXNlIGEgc3RyYXRlZ3kgd2hlcmUgbG9ja2luZyBpcyBkaXN0cmlidXRl ZCB3aXRoaW4KPiB0aGUgdHJpZSBzbyB1cGRhdGVzIHRvIGRhdGEgc3BhdGlhbGx5IGRpc2NvbnRp bnVvdXMgd291bGQgbm90IGNvbnRlbmQgd2l0aCBlYWNoIG90aGVyLgo+IAo+IE15IG9yaWdpbmFs IGltcGxlbWVudGF0aW9uIHN1cHBvcnRlZCBpbnRlZ2VyIGtleXMgYXMgd2VsbCBhcyB2YXJpYWJs ZS1sZW5ndGggc3RyaW5nIGtleXMuCj4gCj4gVGhlIGFkdmFudGFnZSBvZiBKdWR5IGFycmF5cyBp cyB0aGF0IGl0IG1pbmltaXplcyB0aGUgbnVtYmVyIG9mIGNhY2hlLWxpbmVzIHRvdWNoZWQKPiBv biBsb29rdXAgdHJhdmVyc2FsLiBMZXQgbWUga25vdyBpZiB0aGlzIHdvdWxkIGJlIHVzZWZ1bCBm b3IgeW91ciB1c2UtY2FzZXMsIGFuZCBpZgo+IHNvIEkgY2FuIHByb3ZpZGUgbGlua3MgdG8gcHJv dG90eXBlIGJyYW5jaGVzLgoKSSBkb24ndCB0aGluayB3ZSBhcmUgZ29pbmcgdG8gdXNlIHRoaXMg cmlnaHQgYXdheSwgYnV0IEkgd291bGQgYmUgaGFwcHkgdG8gbG9vayBhdCB0aGUgYnJhbmNoLgoK SSd2ZSBsb29rZWQgYXQgdGhlIEp1ZHkgYXJyYXlzIGJlZm9yZSwgYnV0IHRoZSBub3JtYWwgaW1w bGVtZW50YXRpb24gYWxvbmUgbWFkZSBteSBicmFpbgpodXJ0LCBzbyBSQ1UgSnVkeSBhcnJheXMg c2VlbXMgbGlrZSBzb21ldGhpbmcgSSB3b3VsZCBsaWtlIHRvIGxvb2sgYXQgZXZlbiBpZiB3ZSBh cmUgbm90CmdvaW5nIHRvIHVzZSB0aGUgSnVkeSBhcnJheXMgcmlnaHQgbm93IG9yIGV2ZXIuCgo+ Pj4gSSBzdXNwZWN0IHlvdSB1c2UgYSBzY2hlbWUgd2hlcmUgeW91IGhvbGQgdGhlIFJDVSByZWFk LXNpZGUgdG8gcGVyZm9ybSB0aGUgbG9va3VwLCBhbmQKPj4+IHRoZW4geW91IHVzZSB0aGUgb2Jq ZWN0IHdpdGggYW4gaW50ZXJuYWwgbG9jayBoZWxkLiBCdXQgZXhwZWN0aW5nIHRoZSBvYmplY3Qg dG8gc3RpbGwKPj4+IGV4aXN0IGFmdGVyIHJjdSByZWFkIHVubG9jayBpcyBpbmNvcnJlY3QsIHVu bGVzcyBzb21lIG90aGVyIHJlZmVyZW5jZSBjb3VudGluZyBzY2hlbWUKPj4+IGlzIHVzZWQuCj4+ IFllYWgsIEkgd2FzIHRyeWluZyB0byBtaW5pbWl6ZSB0aGUgc2VjdGlvbnMgd2hlcmUgd2UgaG9s ZCB0aGUgcmN1X3JlYWQgbG9ja3MsIGJ1dCBJIGdhdmUKPj4gdXAgYW5kIG5vdyB0aGVyZSdzIHJj dV9yZWFkIGxvY2sgaGVsZCBmb3IgbG9uZ2VyIHBlcmlvZHMgb2YgdGltZS4KPiAKPiBXZSd2ZSB1 c2VkIHRoYXQga2luZCBvZiBzY2hlbWUgaW4gTFRUbmcgbHR0bmctcmVsYXlkLCB3aGVyZSB3ZSB1 c2UgUkNVIGZvciBzaG9ydC10ZXJtCj4gZXhpc3RlbmNlIGd1YXJhbnRlZSwgYW5kIHJlZmVyZW5j ZSBjb3VudGluZyBmb3IgbG9uZ2VyLXRlcm0gZXhpc3RlbmNlIGd1YXJhbnRlZS4gQW4KPiBleGFt cGxlIGNhbiBiZSBmb3VuZCBoZXJlOgo+IAo+IGh0dHBzOi8vZ2l0aHViLmNvbS9sdHRuZy9sdHRu Zy10b29scy9ibG9iL21hc3Rlci9zcmMvYmluL2x0dG5nLXJlbGF5ZC92aWV3ZXItc3RyZWFtLmNw cAo+IAo+IHZpZXdlcl9zdHJlYW1fZ2V0X2J5X2lkKCkgYXR0ZW1wdHMgbG9va3VwIGZyb20gdGhl IGhhc2ggdGFibGUsIGFuZCByZS12YWxpZGF0ZXMgdGhhdCB0aGUKPiBvYmplY3QgZXhpc3RzIHdp dGggdmlld2VyX3N0cmVhbV9nZXQoKSwgd2hpY2ggY2hlY2tzIGlmIHRoZSByZWZjb3VudCBpcyBh bHJlYWR5IDAgYXMgaXQKPiB0cmllcyB0byBpbmNyZW1lbnQgaXQgd2l0aCB1cmN1X3JlZl9nZXRf dW5sZXNzX3plcm8oKS4gSWYgemVybywgaXQgZG9lcyBhcyBpZiB0aGUgb2JqZWN0Cj4gd2FzIG5v dCBmb3VuZC4gSSByZWNvbW1lbmQgdGhpcyBraW5kIG9mIHNjaGVtZSBpZiB5b3UgaW50ZW5kIHRv IHVzZSBib3RoIFJDVSBhbmQgcmVmZXJlbmNlCj4gY291bnRpbmcuCj4gCj4gVGhlbiB5b3UgY2Fu IHBsYWNlIGEgbXV0ZXggd2l0aGluIHRoZSBvYmplY3QsIGFuZCB1c2UgdGhhdCBtdXRleCB0byBw cm92aWRlIG11dHVhbAo+IGV4Y2x1c2lvbiBiZXR3ZWVuIGNvbmN1cnJlbnQgYWNjZXNzZXMgdG8g dGhlIG9iamVjdCB0aGF0IG5lZWQgdG8gYmUgc2VyaWFsaXplZC4KPiAKPiBJbiB0aGUgZGVzdHJv eSBoYW5kbGVyIChjYWxsZWQgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgMCksIHlv dSB3aWxsIHR5cGljYWxseQo+IHdhbnQgdG8gdW5saW5rIHlvdXIgb2JqZWN0IGZyb20gdGhlIHZh cmlvdXMgZGF0YSBzdHJ1Y3R1cmVzIGhvbGRpbmcgcmVmZXJlbmNlcyB0byBpdAo+IChoYXNoIHRh YmxlcywgbGlzdHMpLCBhbmQgdGhlbiB1c2UgY2FsbF9yY3UoKSB0byBpbnZva2UgcmVjbGFpbSBv ZiB0aGUgb2JqZWN0IGFmdGVyIGEKPiBncmFjZSBwZXJpb2QuCgpUaGFua3MsIHRoZSBkZXNjcmlw dGlvbiBsb29rcyB2ZXJ5IHNpbWlsYXIgdG8gd2hhdCB3ZSBkby4gT25seSBhIHNwZWNpYWwgZmxh ZyBpcyB1c2VkCnRvIG1hcmsgdGhlIG5hbWUvZW50cnkgYXMgREVBRCAtIGl0J3MgcG9zc2libGUg dG8gZm9yY2UtZXhwaXJlIGFuIGVudHJ5IGZyb20gdGhlIGNhY2hlLApzbyByZWZlcmVuY2UgY291 bnRpbmcgYWxvbmUgd291bGQgbm90IGJlIHN1ZmZpY2llbnQuCgpJJ2xsIHRha2UgYSBsb29rIGF0 IHRoZSBsbHRuZy10b29scyBjb2RlLiBUaGFuayB5b3UuCgo+Pj4+ICAgICAgICAgaWYgKE5BTUVf REVBRChhZGJuYW1lKSkgewo+Pj4+ICAgICAgICAgICAgICAgICBVTkxPQ0soJmFkYm5hbWUtPmxv Y2spOwo+Pj4+ICAgICAgICAgICAgICAgICBkbnNfYWRibmFtZV9kZXRhY2goJmFkYm5hbWUpOwo+ Pj4+ICAgICAgICAgICAgICAgICBnb3RvIGFnYWluOwo+Pj4+ICAgICAgICAgfQo+Pj4+ICAgICAg ICAgaWYgKGFkYm5hbWUtPmxhc3RfdXNlZCArIEFEQl9DQUNIRV9NSU5JTVVNIDw9IGxhc3RfdXBk YXRlKSB7Cj4+Pj4gICAgICAgICAgICAgICAgIGFkYm5hbWUtPmxhc3RfdXNlZCA9IG5vdzsKPj4+ PiAgICAgICAgICAgICAgICAgTE9DSygmYWRiLT5uYW1lc19scnVfbG9jayk7Cj4+Pj4gICAgICAg ICAgICAgICAgIGlmICh1bmxpbmspIHsKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICBjZHNf bGlzdF9kZWxfcmN1KCZhZGJuYW1lLT5saXN0X25vZGUpOwo+Pj4+ICAgICAgICAgICAgICAgICB9 Cj4+PiAKPj4+IFRoaXMgbG9va3Mgb2RkLiBJIGRvbid0IHNlZSB0aGUgY29kZSBpbXBsZW1lbnRp bmcgdHJhdmVyc2FsIG9mIHRoaXMgbGlzdCwgYnV0Cj4+PiBJIHdvdWxkIGV4cGVjdCBhIGdyYWNl IHBlcmlvZCBiZXR3ZWVuIHVubGluayBvZiB0aGUgbm9kZSBmcm9tIGEgbGlzdCBhbmQgaW5zZXJ0 aW9uCj4+PiBpbnRvIGFub3RoZXIgbGlzdCwgb3RoZXJ3aXNlIGlmIHRoZXJlIGFyZSBSQ1UgcmVh ZGVycyB0cmF2ZXJzaW5nIHRoZSBsaXN0Cj4+PiBjb25jdXJyZW50bHksIHRoZXkgY2FuIG9ic2Vy dmUgYW4gaW5jb25zaXN0ZW50IHN0YXRlLgo+PiBUaGF0J3MgcHJvYmFibHkgdGhlIHBhcnQgSSBh bSBnZXR0aW5nIHdyb25nLiBUaGlzIGFsbCBpcyBmYWlybHkgbmV3IHRvIG1lIGFuZCBteSBicmFp bgo+PiBpcyBzdGlsbCBhZGp1c3RpbmcgdG8gdGhlIG5ldyBwYXJhZGlnbXMuCj4gCj4gT25lIHdh eSB3b3VsZCBiZSB0byBpbnZva2Ugc3luY2hyb25pemVfcmN1KCkgYmV0d2VlbiBkZWxfcmN1IGFu ZCBhZGRfdGFpbF9yY3UsCj4gYnV0IGl0IHdvdWxkIHByb2JhYmx5IGJlIHRvbyBjb3N0bHkgcGVy Zm9ybWFuY2Utd2lzZS4KCkFoYSEgU28sIHRoaXMgd2FzIHRoaXMgcGllY2UgSSB3YXMgbWlzc2lu Zy4KCj4gQW5vdGhlciB3YXkgdGhhdCB3b3VsZCBiZSBhIGJldHRlciBmaXQgdG8gdGhlIFJDVSBt aW5kc2V0IHdvdWxkIGJlIHRvIGNyZWF0ZSBhCj4gY29weSBvZiB0aGUgYWRibmFtZSBvYmplY3Qs IGFkZCBfdGhhdF8gb2JqZWN0IHRvIHRoZSB0YWlsLCBhbmQgdXNlIGNhbGxfcmN1Cj4gdG8gZnJl ZSB0aGUgb2xkIG9iamVjdCB0aGF0IGhhcyBiZWVuIHJlbW92ZWQuIFRoZXJlIGlzIG9mIGNvdXJz ZSBleHRyYSBvdmVyaGVhZAo+IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvcHkuCgpJIHdhcyB0aGlu a2luZyBhYm91dCBhZGRpbmcgb25lIGxheWVyIG9mIGluZGlyZWN0aW9uOgoKc3RydWN0IHsKICBh ZGJuYW1lX3QgKmFkYm5hbWU7CiAgc3RydWN0IGNkc19saXN0IGhlYWQgbm9kZTsKfTsKCkFuZCB0 aGVuIHdoZW4gcmUtZW5xdWV1ZWluZyBvbmx5IHRoaXMgYml0IHdvdWxkIGhhdmUgdG8gYmUgcmVt b3ZlZCBhbmQgYWRkZWQsIG5vdCB0aGUgd2hvbGUKYWRibmFtZSB3aGljaCBob2xkcyBxdWl0ZSBh IGxvdCBvZiBkYXRhLgoKPj4+IEl0IGdldHMgbWUgdG8gd29uZGVyIHdoZXRoZXIgeW91IHJlYWxs eSBuZWVkIFJDVSBmb3IgdGhlIExSVSBsaXN0ID8gQXJlIHRob3NlIGxvb2t1cHMKPj4+IHZlcnkg ZnJlcXVlbnQgPyBBbmQgZG8gdGhleSB0eXBpY2FsbHkgZW5kIHVwIG5lZWRpbmcgdG8gZ3JhYiBh IGxvY2sgdG8gcHJvdGVjdCBhZ2FpbnN0Cj4+PiBjb25jdXJyZW50IGxpc3QgbW9kaWZpY2F0aW9u cyA/Cj4+IFRoZXNlIGFyZSBsb29rdXBzIHRoYXQgaGFwcGVuIGZyZXF1ZW50bHkgd2hlbiB0aGUg Y2FjaGUgaXMgY29sZCAtIGl0IGtlZXBzIHRoZSBkZWxlZ2F0aW9uCj4+IG1hcHBpbmcgKGUuZy4g KipuYW1lKiogaXMgc2VydmVyIGJ5ICoqbmFtZXNlcnZlcioqIChhZGJuYW1lKSB0aGF0IGhhcyB0 aGVzZSAqKklQIGFkZHJlc3NlcyoqCj4+IChhZGJlbnRyaWVzKSkuCj4gCj4gT0suCj4gCj4gU28g dGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGlzIExSVSwgQUZBSVUsIGFyZToKPiAKPiAtIGZyZXF1 ZW50IGVucXVldWUgKG1vc3QgcmVjZW50KSwKPiAtIGZyZXF1ZW50ICJwaWNrIiBpdGVtIHdpdGhp biB0aGUgbGlzdCB0byByZS1lbnF1ZXVlIGl0IGFzIG1vc3QgcmVjZW50LAoKVGhpcyBoYXBwZW5z IGluIGdldF9hdHRhY2hlZF9hbmRfbG9ja2VkX3tuYW1lLGVudHJ5fToKCjEuIGxvb2t1cCB0aGUg bmFtZQoyLiBpZiBub3QgZm91bmQgYWRkIHRoZSBuYW1lICh3aXRoIGZhaWxvdmVyIGlmIGl0IHdh cyBhZGRlZCBlbHNld2hlcmUpIGFuZCBlbnF1ZXVlCjMuIGlmIGZvdW5kIGNoZWNrIGlmIGl0J3Mg c3RpbGwgYWxpdmUgYW5kIHJlLWVucXVldWUgb24gdGhlIExSVQoKPiAtIGZyZXF1ZW50IGRlcXVl dWUgb2YgdGhlIGxhc3QgTiBvbGRlc3QgaXRlbXMuCgpUaGlzIHdvdWxkIGJlIHB1cmdlX3N0YWxl X25hbWVzKCkgYW5kIHB1cmdlX3N0YWxlX2VudHJpZXMoKQoKPiAKPiBIb3dldmVyIEkgZG9uJ3Qg c2VlIHRoYXQgaXRlcmF0aW9uIG9uIHRoZSBsaXN0IGlzIGluaGVyZW50bHkgbmVlZGVkLCBhdCBs ZWFzdAo+IG5vdCBmcmVxdWVudGx5LCBleGNlcHQgYXMgbWVhbnMgdG8gaW1wbGVtZW50IHRoZSBv cGVyYXRpb25zIGFib3ZlLCBhbSBJIGNvcnJlY3QgPwoKVGhhdCdzIGNvcnJlY3QgLSB0aGVyZSBh cmUgY291cGxlIGluZnJlcXVlbnQgb3BlcmF0aW9uczoKLSBkdW1waW5nIHRoZSBjYWNoZSB0byBm aWxlIGRlc2NyaXB0b3IgKHRoYXQgbmVlZHMgaXRlcmF0aW9uLCBidXQgSSBjb3VsZCBpdGVyYXRl IHRoZSBoYXNodGFibGUsIG5vdCB0aGUgbGlzdCkKLSByZW1vdmluZyBhbGwgdGhlIGVsZW1lbnRz IGZyb20gdGhlIGNhY2hlIChpdCB1c2VzIGl0ZXJhdG9yIHJpZ2h0IG5vdywgYnV0IEkgZ3Vlc3Mg SSBjb3VsZCBzd2FwIHRoZSBjYWNoZSBhbmQgY2FsbF9yY3UoKSBvbiB0aGUgb2xkIG9uZSkKLSBy ZW1vdmluZyBhIHNwZWNpZmljIGVudHJ5IGZyb20gdGhlIGNhY2hlICh0aGlzIHVzZXMgaGFzaCBs b29rdXApCi0gcmVtb3ZpbmcgYSBzdWJ0cmVlIChpbiBhIEROUyBzZW5zZSkgLSB0aGlzIHVzZXMg dGhlIGl0ZXJhdG9yIHRvIHdhbGsgdGhyb3VnaCBhbGwgdGhlIGVudHJpZXMgaW4gdGhlIGNhY2hl IGFuZCBpZiBuYW1lIGlzIHN1YmRvbWFpbiwgaXQgZm9yY2UgZXhwaXJlcyBpdAotIGFuZCB0aGVu IG9mIGNvdXJzZSB0aGUgY2xlYW51cCBhdCB0aGUgc2h1dGRvd24KCk9uZHJlagotLQpPbmTFmWVq IFN1csO9IChIZS9IaW0pCm9uZHJlakBzdXJ5Lm9yZwoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmx0dG5nLWRldiBtYWlsaW5nIGxpc3QKbHR0bmctZGV2 QGxpc3RzLmx0dG5nLm9yZwpodHRwczovL2xpc3RzLmx0dG5nLm9yZy9jZ2ktYmluL21haWxtYW4v bGlzdGluZm8vbHR0bmctZGV2Cg==