From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5EE0ACD6101 for ; Mon, 9 Oct 2023 16:23:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:Subject:From:References:Cc:To: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=yWjyxzpuvVgz/r9U1HRWQh/LZg9QcR1MDEPmPhiS5mc=; b=cjJBi1WTujEXGj qUFeZZn9bO2XEe6XlcFUoJbU+6/Tr7ht4tssWnldWX7X4kU1Z9MGBxLFh5VOFGtsCwt31CMeSNOXK GlwtKAvwSq7hGVhnCVfDrn5TKrjsVgwpDbWLtaPzMwNOc9U4rX2behxgMAEAHNCSBfT6reXMQ3LBY /2lAlbAKOLbjAN5JSwbYblAbD1c5yWZLKNHpltnMpZ9oj8+CWZmoxX1+q43g2agkyc7qHpl0421jt dRUOnJSUNWgVGA0zb2gQIfJecuTts2SdryEU+myANMaz7bivrYcRtCRNrz4+o+bKoE+Vmqvo3ATxq pIrxKpIh7PfF8NXgVbjg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qpt1q-00BAmo-2J; Mon, 09 Oct 2023 16:22:46 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qpt1m-00BAkX-0c for linux-arm-kernel@lists.infradead.org; Mon, 09 Oct 2023 16:22:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1696868561; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bfjxPyIXkmZyWmZc7NQGTkctoh6PhbOjmYT09ImQTAs=; b=GE78EbtTzTaZETcAkgM21vFVPIM156kSmNY5I4BEE2gg2HpEIN5iB+OINmODNaTUktRX4G CDw8oY00AtG6uIosB1l9zWWaDNjkvjIs6A1V1K7Xi1Dp/VqNblyaWdoNhKnmNM6UOTbu2+ fGm7H+eOevRdSvi8xWsVBSgVwd+kYKI= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-262-HiKb438POWK6GYiWDiBzIw-1; Mon, 09 Oct 2023 12:22:37 -0400 X-MC-Unique: HiKb438POWK6GYiWDiBzIw-1 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-402cd372b8bso34281175e9.2 for ; Mon, 09 Oct 2023 09:22:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696868556; x=1697473356; h=content-transfer-encoding:in-reply-to:subject:organization:from :references:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=bfjxPyIXkmZyWmZc7NQGTkctoh6PhbOjmYT09ImQTAs=; b=Bup3gZDMKZEq7IPX+Zmt31p5OGK6zojWWn1ddKx1OCB8ezVpHeTjRzfSFPQ107ELfG xZVI28fDxQtnP1TlpnSrLX3ep54ol3DoUxGi2L+msJWQGZUGC5BhpFtUfrGuEML6aQBx /Q9zS6J/3xgPuWR6qdHrwIlkS50N5mbzWE3sPxlZVhbA3n1z74tdTduuXSHCu8dT+Sf9 DwitaQbspGxdgg/lnZr8mirm5vKCBcGxAP0GWoVY5q3CAOwakEMk5ZQDIa3yetIvuhRa Gzs9uCzMXX6lEj6Qr10gyxjwOK0AwYX9zLULMxEg2b2ayIIJ0dm2/S28H2jJuytczJNO xEig== X-Gm-Message-State: AOJu0YytIG603w2P6iEl3DblN88uLipzK0NoTyFqn0q7itDLtBYdvNye dxKRhFR3V9IyzlpudJ/3XlMvlSFYFci84FJ9w3nsnObsNJLqV/y3nmBiqMZiFFaXiwH6L++ezsY v9wRtZUi4Wv/W+G4Ev8GWMyAzDbn3mV99oFg= X-Received: by 2002:a1c:740d:0:b0:405:1ba2:4fd1 with SMTP id p13-20020a1c740d000000b004051ba24fd1mr14826941wmc.24.1696868555677; Mon, 09 Oct 2023 09:22:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEWcdc/4NcK1uvV9GpPhHZwiLeLec5wJ1xip3TeHqDmILMhDwoKl7wTye6bxkkLZqyGdHQP/A== X-Received: by 2002:a1c:740d:0:b0:405:1ba2:4fd1 with SMTP id p13-20020a1c740d000000b004051ba24fd1mr14826917wmc.24.1696868555058; Mon, 09 Oct 2023 09:22:35 -0700 (PDT) Received: from ?IPV6:2003:cb:c733:6400:ae10:4bb7:9712:8548? (p200300cbc7336400ae104bb797128548.dip0.t-ipconnect.de. [2003:cb:c733:6400:ae10:4bb7:9712:8548]) by smtp.gmail.com with ESMTPSA id 4-20020a05600c248400b004060f0a0fd5sm11589167wms.13.2023.10.09.09.22.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 09 Oct 2023 09:22:34 -0700 (PDT) Message-ID: <99f8294b-b4e5-424f-d761-24a70a82cc1a@redhat.com> Date: Mon, 9 Oct 2023 18:22:33 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 To: Ryan Roberts , Andrew Morton , Matthew Wilcox , Yin Fengwei , Yu Zhao , Catalin Marinas , Anshuman Khandual , Yang Shi , "Huang, Ying" , Zi Yan , Luis Chamberlain , Itaru Kitayama , "Kirill A. Shutemov" , John Hubbard , David Rientjes , Vlastimil Babka , Hugh Dickins Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20230929114421.3761121-1-ryan.roberts@arm.com> <6d89fdc9-ef55-d44e-bf12-fafff318aef8@redhat.com> From: David Hildenbrand Organization: Red Hat Subject: Re: [PATCH v6 0/9] variable-order, large folios for anonymous memory In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231009_092242_391145_39C00355 X-CRM114-Status: GOOD ( 67.44 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Wy4uLl0KCj4+Cj4+IEkgZGlzbGlrZSBleHBvc2luZyAib3JkZXJzIiB0byB0aGUgdXNlcnMsIEkn bSBoYXBweSB0byBiZSBjb252aW5jZWQgd2h5IEkgYW0KPj4gd3JvbmcgYW5kIGl0IGlzIGEgZ29v ZCBpZGVhLgo+Pgo+PiBTbyBtYXliZSAiU21hbGwgVEhQIi8iU21hbGwtc2l6ZWQgVEhQIiBpcyBi ZXR0ZXIuIE9yICJNZWRpdW0tc2l6ZWQgVEhQIiAtLSBhcwo+PiBzYWlkLCBJIHRoaW5rIEZyZWVC U0QgdGVuZHMgdG8gY2FsbCBpdCAiTWVkaXVtLXNpemVkIHN1cGVycGFnZXMiLiBCdXQgd2hhdCdz Cj4+IHNtYWxsL21lZGl1bS9sYXJnZSBpcyBkZWJhdGFibGUuICJTbWFsbCIgaW1wbGllcyBhdCBs ZWFzdCB0aGF0IGl0J3Mgc21hbGxlciB0aGFuCj4+IHdoYXQgd2UgdXNlZCB0byBrbm93LCB3aGlj aCBpcyBhIGZhY3QuCj4+Cj4+IENhbiB3ZSBhbHNvIG5vdyB1c2UgdGhlIHRlcm1pbm9sb2d5IGNv bnNpc3RlbnRseT8gKGUuZy4sICJ2YXJpYWJsZS1vcmRlciwgbGFyZ2UKPj4gZm9saW9zIGZvciBh bm9ueW1vdXMgbWVtb3J5IiAtPiAiU21hbGwtc2l6ZWQgYW5vbnltb3VzIFRIUCIsIHlvdSBjYW4g anVzdCBwb2ludAo+PiBhdCB0aGUgcHJldmlvdXMgcGF0Y2ggc2V0IG5hbWUgaW4gdGhlIGNvdmVy IGxldHRlcikKPiAKPiBZZXMgYWJzb2x1dGVseS4gRldJVywgSSB3YXMgZGVsaWJlcmF0ZWx5IG5v dCBjaGFuZ2luZyB0aGUgdGl0bGUgb2YgdGhlIHBhdGNoc2V0Cj4gc28gcGVvcGxlIGNvdWxkIGVh c2lseSBzZWUgaXQgd2FzIGFuIGV2b2x1dGlvbiBvZiBzb21ldGhpbmcgcG9zdGVkIGJlZm9yZS4g QnV0Cj4gaWYgaXQncyB0aGUgbm9ybSB0byBjaGFuZ2UgdGhlIHRpdGxlIGFzIHRoZSBwYXRjaHNl dCBldm9sdmVzLCBJJ20gdmVyeSBoYXBweSB0bwo+IGRvIHRoYXQuIEFuZCB0aGVyZSBhcmUgb3Ro ZXIgcGxhY2VzIHRvbywgaW4gY29tbWl0IGxvZ3MgdGhhdCBJIGNhbiB0aWR5IHVwLiBJCj4gd2ls bCBhc3N1bWUgIlBNRC1zaXplZCBUSFAiLCAic21hbGwtc2l6ZWQgVEhQIiBhbmQgImFub255bW91 cyBzbWFsbC1zaXplZCBUSFAiCj4gKHRoYXQgbGFzdCBvbmUgc2xpZ2h0bHkgZGlmZmVyZW50IGZy b20gd2hhdCBEYXZpZCBzdWdnZXN0ZWQgYWJvdmUgLSBpdCBtZWFucwo+ICJzbWFsbC1zaXplZCBU SFAiIGNhbiBzdGlsbCBiZSBncmVwcGVkKSB1bmxlc3Mgb3RoZXJzIG9iamVjdC4KCkFic29sdXRl bHkgZmluZSB3aXRoIG1lLiBIb3Bpbmcgb3RoZXIgcGVvcGxlIHdpbGwgb2JqZWN0IHdoZW4gSSB0 YWxrIApub25zZW5zZSBvciBteSBzdWdnZXN0aW9ucyBkb24ndCBtYWtlIGFueSBzZW5zZS4KCk9y IGV2ZW4gYmV0dGVyLCBwcm9wb3NlIHNvbWV0aGluZyBiZXR0ZXIgOikKCj4gCj4+Cj4+Pgo+Pj4g MSkgU2luY2UgU1cgKHRoZSBrZXJuZWwpIGlzIGRlYWxpbmcgd2l0aCBsYXJnZXIgY2h1bmtzIG9m IG1lbW9yeSB0aGFuIGJhc2UKPj4+ICDCoMKgwqAgcGFnZXMsIHRoZXJlIGFyZSBlZmZpY2llbmN5 IHNhdmluZ3MgdG8gYmUgaGFkOyBmZXdlciBwYWdlIGZhdWx0cywgYmF0Y2hlZCBQVEUKPj4+ICDC oMKgwqAgYW5kIFJNQVAgbWFuaXB1bGF0aW9uLCByZWR1Y2VkIGxydSBsaXN0LCBldGMuIEluIHNo b3J0LCB3ZSByZWR1Y2Uga2VybmVsCj4+PiAgwqDCoMKgIG92ZXJoZWFkLiBUaGlzIHNob3VsZCBi ZW5lZml0IGFsbCBhcmNoaXRlY3R1cmVzLgo+Pj4gMikgU2luY2Ugd2UgYXJlIG5vdyBtYXBwaW5n IHBoeXNpY2FsbHkgY29udGlndW91cyBjaHVua3Mgb2YgbWVtb3J5LCB3ZSBjYW4gdGFrZQo+Pj4g IMKgwqDCoCBhZHZhbnRhZ2Ugb2YgSFcgVExCIGNvbXByZXNzaW9uIHRlY2huaXF1ZXMuIEEgcmVk dWN0aW9uIGluIFRMQiBwcmVzc3VyZQo+Pj4gIMKgwqDCoCBzcGVlZHMgdXAga2VybmVsIGFuZCB1 c2VyIHNwYWNlLiBhcm02NCBzeXN0ZW1zIGhhdmUgMiBtZWNoYW5pc21zIHRvIGNvYWxlc2NlCj4+ PiAgwqDCoMKgIFRMQiBlbnRyaWVzOyAidGhlIGNvbnRpZ3VvdXMgYml0IiAoYXJjaGl0ZWN0dXJh bCkgYW5kIEhQQSAodWFyY2gpLgo+Pj4KPj4+IFRoZSBtYWpvciBjaGFuZ2UgaW4gdGhpcyByZXZp c2lvbiBpcyB0aGUgYWRkaXRpb24gb2Ygc3lzZnMgY29udHJvbHMgdG8gYWxsb3cKPj4+IHRoaXMg InNtYWxsLW9yZGVyIFRIUCIgdG8gYmUgZW5hYmxlZC9kaXNhYmxlZC9jb25maWd1cmVkIGluZGVw ZW5kZW50bHkgb2YKPj4+IFBNRC1vcmRlciBUSFAuIFRoZSBhcHByb2FjaCBJJ3ZlIHRha2VuIGRp ZmZlcnMgYSBiaXQgZnJvbSBwcmV2aW91cyBkaXNjdXNzaW9uczsKPj4+IGluc3RlYWQgb2YgY3Jl YXRpbmcgYSB3aG9sZSBuZXcgaW50ZXJmYWNlICgibGFyZ2VfZm9saW8iKSwgSSdtIGV4dGVuZGlu ZyBUSFAuIEkKPj4+IHBlcnNvbmFsbHkgdGhpbmsgdGhpcyBtYWtlcyB0aGluZ3MgY2xlYXJlciBh bmQgbW9yZSBleHRlbnNpYmxlLiBTZWUgWzZdIGZvcgo+Pj4gZGV0YWlsZWQgcmF0aW9uYWxlLgo+ Pgo+PiBDaGFuZ2UgMjogc3lzZnMgaW50ZXJmYWNlLgo+Pgo+PiBJZiB3ZSBjYWxsIGl0IFRIUCwg aXQgc2hhbGwgZ28gdW5kZXIgIi9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlLyIs IEkKPj4gYWdyZWUuCj4+Cj4+IFdoYXQgd2UgZXhwb3NlIHRoZXJlIGFuZCBob3csIGlzIFRCRC4g QWdhaW4sIG5vdCBhIGZyaWVuZCBvZiAib3JkZXJzIiBhbmQKPj4gYml0bWFwcyBhdCBhbGwuIFdl IGNhbiBkbyBiZXR0ZXIgaWYgd2Ugd2FudCB0byBnbyBkb3duIHRoYXQgcGF0aC4KPj4KPj4gTWF5 YmUgd2Ugc2hvdWxkIHRha2UgYSBsb29rIGF0IGh1Z2V0bGIsIGFuZCBob3cgdGhleSBhZGRlZCBz dXBwb3J0IGZvciBtdWx0aXBsZQo+PiBzaXplcy4gV2hhdCAqbWlnaHQqIG1ha2Ugc2Vuc2UgY291 bGQgYmUgKGRlcGVuZGluZyBvbiB3aGljaCB2YWx1ZXMgd2UgYWN0dWFsbHkKPj4gc3VwcG9ydCEp Cj4+Cj4+Cj4+IC9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2h1Z2VwYWdlcy02 NGtCLwo+PiAvc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9odWdlcGFnZXMtMTI4 a0IvCj4+IC9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2h1Z2VwYWdlcy0yNTZr Qi8KPj4gL3N5cy9rZXJuZWwvbW0vdHJhbnNwYXJlbnRfaHVnZXBhZ2UvaHVnZXBhZ2VzLTUxMmtC Lwo+PiAvc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9odWdlcGFnZXMtMTAyNGtC Lwo+PiAvc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9odWdlcGFnZXMtMjA0OGtC Lwo+Pgo+PiBFYWNoIG9uZSB3b3VsZCBjb250YWluIGFuICJlbmFibGVkIiBhbmQgImRlZnJhZyIg ZmlsZS4gV2Ugd2FudCBzb21ldGhpbmcgbWluaW1hbAo+PiBmaXJzdD8gU3RhcnQgd2l0aCB0aGUg ImVuYWJsZWQiIG9wdGlvbi4KPj4KPj4KPj4gZW5hYmxlZDogYWx3YXlzIFtnbG9iYWxdIG1hZHZp c2UgbmV2ZXIKPj4KPj4gSW5pdGlhbGx5LCB3ZSB3b3VsZCBzZXQgaXQgZm9yIFBNRC1zaXplZCBU SFAgdG8gImdsb2JhbCIgYW5kIGZvciBldmVyeXRoaW5nIGVsc2UKPj4gdG8gIm5ldmVyIi4KPiAK PiBNeSBvbmx5IHJlc2VydmF0aW9uIGFib3V0IHRoaXMgYXBwcm9hY2ggaXMgdGhlIHBvdGVudGlh bCBmb3IgYSBmdXR1cmUgbmVlZCBmb3IgYQo+ICJvbmUgc2V0dGluZyBhcHBsaWVkIGFjcm9zcyBh bGwgc2l6ZXMiIGNsYXNzIG9mIGNvbnRyb2wgKGUuZy4gImF1dG8iKS4gSSB0aGluawo+IHdlIGFn cmVlZCBpbiB0aGUgcHJldmlvdXMgbWVldGluZ3MgdGhhdCBjaGFzaW5nIGEgc29sdXRpb24gZm9y ICJhdXRvIiB3YXMgYSBnb29kCj4gYXNwaXJhdGlvbiB0byBoYXZlLCBzbyBpdCB3b3VsZCBiZSBn b29kIHRvIGhhdmUgYSBwbGFjZSB3ZSB3ZSBjYW4gaW5zZXJ0IHRoYXQgaW4KPiBmdXR1cmUuIFRo ZSBtYWluIHJlYXNvbiB3aHkgSSBjaG9zZSB0byBleHBvc2UgdGhlICJhbm9uX29yZGVycyIgY29u dHJvbCBpcwo+IGJlY2F1c2UgaXQgaXMgcG9zc2libGUgdG8gYm90aCBlbmFibGUvZGlzYWJsZSB0 aGUgdmFyaW91cyBzaXplcyBhcyB3ZWxsIGFzCj4gc3BlY2lmaWN5IChlLmcuKSAiYXV0byIsIHdp dGhvdXQgY3JlYXRpbmcgcmVkdW5kYW5jeS4gQnV0IEkgYWdyZWUgdGhhdCBpZGVhbGx5Cj4gd2Ug d291bGRuJ3QgZXhwb3NlIG9yZGVycyB0byB0aGUgdXNlcjsgSSB3YXMgYXR0ZW1wdGluZyBhIGNv bXByb21pc2UgdG8gc2ltcGxpZnkKPiB0aGUgImF1dG8iIGNhc2UuCj4gCj4gQSBwb3RlbnRpYWwg KHRob3VnaCBmZWVscyBxdWl0ZSBjb21wbGV4KSBzb2x1dGlvbiB0byBtYWtlIGF1dG8gd29yayB3 aXRoIHlvdXIKPiBwcm9wb3NhbDogQWRkICJhdXRvIiBhcyBhbiBvcHRpb24gdG8gdGhlIGV4aXN0 aW5nIGdsb2JhbCBlbmFibGVkIGZpbGUsIGFuZCB0bwo+IGFsbCBvZiB5b3VyIHByb3Bvc2VkIG5l dyBlbmFibGVkIGZpbGVzLiBCdXQgaXRzIG9ubHkgcG9zc2libGUgdG8gKnNldCogYXV0bwo+IHRo cm91Z2ggdGhlIGdsb2JhbCBmaWxlLiBBbmQgd2hlbiBpdCBpcyBzZXQsIGFsbCBvZiB0aGUgc2l6 ZS1zcGVjaWZpYyBlbmFibGVkCj4gZmlsZXMgcmVhZC1iYWNrICJhdXRvIiB0b28uIEFueSBhbnkg d3JpdGVzIHRvIHRoZSBzaXplLXNwZWNpZmljIGVuYWJsZWQgZmlsZXMKPiBhcmUgaWdub3JlZCAo b3IgcmVtZW1iZXJlZCBidXQgbm90IGVuYWN0ZWQpIHVudGlsIHRoZSBnbG9iYWwgZW5hYmxlZCBm aWxlIGlzCj4gY2hhbmdlZCBhd2F5IGZyb20gYXV0by4KClllcywgSSB0aGluayB0aGVyZSBhcmUg dmFyaW91cyB3YXlzIGZvcndhcmQgcmVnYXJkaW5nIHRoYXQuIE9yIHRvIGVuYWJsZSAKImF1dG8i IG1vZGUgb25seSBvbmNlIGFsbCBhcmUgImF1dG8iLCBhbmQgYXMgc29vbiBhcyBvbmUgaXMgbm90 ICJhdXRvIiwgCmp1c3QgZGlzYWJsZSBpdC4gQSBzaW1wbGUKCmVjaG8gImF1dG8iID4gL3N5cy9r ZXJuZWwvbW0vdHJhbnNwYXJlbnRfaHVnZXBhZ2UvaHVnZXBhZ2VzLSovZW5hYmxlZAoKV291bGQg ZG8gdG8gZW5hYmxlIGl0LiBPciwgaGF2ZSB0aGVtIGFsbCBiZSAiZ2xvYmFsIiBhbmQgaGF2ZSBh IGdsb2JhbCAKImF1dG8iIG1vZGUgYXMgeW91IHJhaXNlZC4KCmVjaG8gImdsb2JhbCIgPiAvc3lz L2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9odWdlcGFnZXMtKi9lbmFibGVkCmVjaG8g ImF1dG8iID4gL3N5cy9rZXJuZWwvbW0vdHJhbnNwYXJlbnRfaHVnZXBhZ2UvZW5hYmxlZAoKPiAK PiBCdXQgSSdtIG5vdCBzdXJlIGlmIGFkZGluZyBhIG5ldyBvcHRpb24gdG8gdGhlIGdsb2JhbCBl bmFibGVkIGZpbGUgbWlnaHQgYnJlYWsKPiBjb21wYXQ/CgpJIHRoaW5rIHdlIHVzZWQgdG8gZXh0 ZW5kIHRoZSAiZGVmcmFnIiBvcHRpb24sIHNlZQoKY29tbWl0IDIxNDQwZDdlYjkwNDQwMDFiN2Zk YjcxZDAxNjM2ODlmNjBhMGYyYTEKQXV0aG9yOiBEYXZpZCBSaWVudGplcyA8cmllbnRqZXNAZ29v Z2xlLmNvbT4KRGF0ZTogICBXZWQgRmViIDIyIDE1OjQ1OjQ5IDIwMTcgLTA4MDAKCiAgICAgbW0s IHRocDogYWRkIG5ldyBkZWZlcittYWR2aXNlIGRlZnJhZyBvcHRpb24KCgpTbyBJIHN1c3BlY3Qg d2UgY291bGQgZXh0ZW5kIHRoYXQgb25lIGluIGEgc2ltaWxhciB3YXkuCgpCdXQgYWdhaW4sIHRo aXMgaXMganVzdCB0aGUgdGhpbmcgdGhhdCBjYW1lIHRvIG1pbmQgd2hlbiB0aGlua2luZyBhYm91 dCAKaG93IHRvOgphKSBhdm9pZCBvcmRlcnMKYikgbWFrZSBpdCBjb25maWd1cmFibGUgYW5kIGZ1 dHVyZS1wcm9vZgpjKSBtYWtlIGl0IGxvb2sgYSBiaXQgY29uc2lzdGVudCB3aXRoIG90aGVyIGlu dGVyZmFjZXMgKGh1Z2V0bGIgYW5kCiAgICBleGlzdGluZyB0aHApCmQpIHN0aWxsIHByZXBhcmUg Zm9yIGFuIGF1dG8gbW9kZSB0aGF0IHdlIHdhbnQgaW4gdGhlIGZ1dHVyZQoKSSdtIGhhcHB5IHRv IGhlYXIgb3RoZXIgaWRlYXMuCgo+IAo+Pgo+Pgo+Pgo+PiBUaGF0IHNvdW5kcyByZWFzb25hYmxl IGF0IGxlYXN0IHRvIG1lLCBhbmQgd2Ugd291bGQgYmUgdXNpbmcgd2hhdCB3ZSBsZWFybmVkCj4+ IGZyb20gVEhQIChhcyBKb2huIHN1Z2dlc3RlZCkuwqAgVGhhdCBzdGlsbCBnaXZlcyByZWFzb25h YmxlIGZsZXhpYmlsaXR5IHdpdGhvdXQKPj4gZ29pbmcgdG9vIHdpbGQsIGFuZCBhIGJldHRlciBJ TUhPIGludGVyZmFjZS4KPj4KPj4gSSB1bmRlcnN0YW5kIFl1J3MgcG9pbnQgYWJvdXQgQUJJIGRp c2N1c3Npb25zIGFuZCAiMCBrbm9icyIuIEknbSBoYXBweSBhcyBsb25nCj4+IGFzIHdlIGNhbiBo YXZlIHNvbWV0aGluZyB0aGF0IHdvbid0IGh1cnQgdXMgbGF0ZXIgYW5kIHN0aWxsIGJlIGFibGUg dG8gdXNlIHRoaXMKPj4gaW4gZGlzdHJpYnV0aW9ucyB3aXRoaW4gYSByZWFzb25hYmxlIHRpbWVm cmFtZS4gRW5hYmxpbmcvZGlzYWJsaW5nIGluZGl2aWR1YWwKPj4gc2l6ZXMgZG9lcyBub3Qgc291 bmQgdG9vIHJlc3RyaWN0aXZlIHRvIG1lLiBBbmQgd2UgY291bGQgYWx3YXlzIGFkZCBhbiAiYXV0 byIKPj4gc2V0dGluZyBsYXRlciBhbmQgZGVmYXVsdCB0byB0aGF0IHdpdGggYSBuZXcga2NvbmZp ZyBrbm9iLgo+Pgo+PiBJZiBzb21lb25lIHdhbnRzIHRvIGNvbmZpZ3VyZSBpdCwgd2h5IG5vdC4g TGV0J3MganVzdCBwcmVwYXJlIGEgd2F5IHRvIHRvIGhhbmRsZQo+PiB0aGlzICJiZXR0ZXIiIGF1 dG9tYXRpY2FsbHkgaW4gdGhlIGZ1dHVyZSAoaWYgZXZlciAuLi4pLgo+Pgo+Pgo+PiBDaGFuZ2Ug MzogU3RhdHMKPj4KPj4+IC9wcm9jL21lbWluZm86Cj4+PiAgwqDCoCBJbnRyb2R1Y2UgbmV3ICJB bm9uSHVnZVB0ZU1hcCIgZmllbGQsIHdoaWNoIHJlcG9ydHMgdGhlIGFtb3VudCBvZgo+Pj4gIMKg wqAgbWVtb3J5IChpbiBLaUIpIG1hcHBlZCBmcm9tIGxhcmdlIGZvbGlvcyBnbG9iYWxseSAoc2lt aWxhciB0bwo+Pj4gIMKgwqAgQW5vbkh1Z2VQYWdlcyBmaWVsZCkuCj4+Cj4+IEFub25IdWdlUGFn ZXMgaXMgYW5kIHJlbWFpbnMgIlBNRC1zaXplZCBUSFAgdGhhdCBpcyBtYXBwZWQgdXNpbmcgYSBQ TUQiLCBJIHRoaW5rCj4+IHdlIGFsbCBhZ3JlZSBvbiB0aGF0LiBJdCBzaG91bGQgaGF2ZSBiZWVu IG5hbWVkICJBbm9uUG1kTWFwcGVkIiBvcgo+PiAiQW5vbkh1Z2VQbWRNYXBwZWQiLCB0b28gYmFk LCB3ZSBjYW4ndCBjaGFuZ2UgdGhhdC4KPiAKPiBZZXMgYWdyZWVkLiBJIGRpZCBjb25zaWRlciBy ZWRlZmluaW5nICJBbm9uSHVnZVBhZ2VzIiB0byBjb3ZlciBQTUQtIGFuZAo+IFBURS1tYXBwZWQg bWVtb3J5LCB0aGVuIGludHJvZHVjZSBib3RoIGFuICJBbm9uSHVnZVBtZE1hcHBlZCIgYW5kCj4g IkFub25IdWdlUHRlTWFwcGVkIiwgYnV0IEkgdGhpbmsgdGhhdCB3b3VsZCBsaWtlbHkgYnJlYWsg dGhpbmdzLiBJdHMgZnVydGhlcgo+IGNvbXBsaWNhdGVkIGJlY2F1c2Ugdm1zdGF0cyBwcmludHMg aXQgaW4gUE1ELXNpemUgdW5pdHMsIHNvIGNhbid0IHJlcHJlc2VudAo+IFBURS1tYXBwZWQgbWVt b3J5IGluIHRoYXQgY291bnRlci4KCjovCgo+IAo+Pgo+PiAiQW5vbkh1Z2VQdGVNYXAiIGJldHRl ciBiZSAiQW5vbkh1Z2VQdGVNYXBwZWQiLgo+IAo+IEkgYWdyZWUsIGJ1dCBJIHdlbnQgd2l0aCB0 aGUgc2hvcnRlciBvbmUgYmVjYXVzZSBhbnkgbG9uZ2VyIGFuZCBpdCB3b3VsZCB1bmFsaWduCj4g dGhlIHZhbHVlIGUuZzoKPiAKPiAgICAgIEFub25IdWdlUGFnZXM6ICAgICAgICAgMCBrQgo+ICAg ICAgQW5vbkh1Z2VQdGVNYXBwZWQ6ICAgICAgICAwIGtCCj4gICAgICBTaG1lbVBtZE1hcHBlZDog ICAgICAgIDAga0IKPiAgICAgIFNoYXJlZF9IdWdldGxiOiAgICAgICAgMCBrQgo+IAoKQ2FuJ3Qg dGhhdCBiZSBoYW5kbGVkPyBXZSBzdXJlbHkgaGF2ZSBsb25nIHN0dWZmIGluIHRoZXJlOgoKSGFy ZHdhcmVDb3JydXB0ZWQ6ICAgICAwIGtCCkFub25IdWdlUGFnZXM6ICAgICAgICAgMCBrQgpTaG1l bUh1Z2VQYWdlczogIDEwODEzNDQga0IKU2htZW1QbWRNYXBwZWQ6ICAgICAgICAwIGtCCgpIYXJk d2FyZUNvcnJ1cHRlZCBoYXMgc2FtZSBsZW5ndGggYXMgQW5vbkh1Z2VQdGVNYXBwZWQKCkJ1dCBJ J20gbm90IGNvbnZpbmNlZCBhYm91dCAiQW5vbkh1Z2VQdGVNYXBwZWQiIHlldCA6KQoKPiBTbyB3 b3VsZCBuZWVkIHRvIGRlY2lkZSB3aGljaCBpcyBwcmVmZXJhYmxlLCBvciBjb21lIHVwIHdpdGgg YSBzaG9ydGVyIG5hbWUuCj4gCj4+Cj4+IEJ1dCwgSSB3b25kZXIgaWYgd2Ugd2FudCB0byBleHBv c2UgdGhpcyAiUHRlTWFwcGVkIiB0byB1c2VyIHNwYWNlICphdCBhbGwqLiBXaHkKPj4gc2hvdWxk IHRoZXkgY2FyZSBpZiBpdCdzIFBURSBtYXBwZWQ/IEZvciBQTUQtc2l6ZWQgVEhQIGl0IG1ha2Vz IGEgYml0IG9mIHNlbnNlLAo+PiBiZWNhdXNlICFQTUQgaW1wbGllZCAhcGVyZm9ybWFuY2UsIGFu ZCBvbmUgbWlnaHQgaGF2ZSBiZWVuIGFibGUgdG8gdHJvdWJsZXNob290Cj4+IHRoYXQgc29tZWhv dy4gRm9yIFBURS1tYXBwZWQsIGl0IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHJlYWxseSwgdGhl eSBhcmUgYWx3YXlzCj4+IFBURS1tYXBwZWQuCj4gCj4gSSBkaXNhZ3JlZTsgSSd2ZSBiZWVuIHVz aW5nIGl0IGEgbG90IHRvIGRlYnVnIHBlcmZvcm1hbmNlIGlzc3Vlcy4gSXQgdGVsbHMgeW91Cj4g aG93IG11Y2ggb2YgeW91ciBhbm9uIG1lbW9yeSBpcyBhbGxvY2F0ZWQgd2l0aCBsYXJnZSBmb2xp b3MuIEFuZCBtYWtpbmcgdGhhdAo+IHBlcmNlbnRhZ2UgYmlnZ2VyIGltcHJvdmVzIHBlcmZvcm1h bmNlOyBmZXdlciBwYWdlIGZhdWx0cywgYW5kIHdpdGggYSBzZXBhcmF0ZQo+IGNvbnRwdGUgc2Vy aWVzIG9uIGFybTY0LCBiZXR0ZXIgdXNlIG9mIHRoZSBUTEIuIFJlYXNvbnMgbWlnaHQgaW5jbHVk ZTsgcG9vcmx5Cj4gYWxpZ25lZC90b28gc21hbGwgVk1BcywgbWVtb3J5IGZyYWdtZW50YXRpb24g cHJldmVudGluZyBhbGxvY2F0aW9uLCBDb1csIGV0Yy4KCkp1c3QgYmVjYXVzZSBhIHNtYWxsLXNp emVkIFRIUCBpcyBQVEUtbWFwcGVkIGRvZXNuJ3QgdGVsbCB5b3UgYW55dGhpbmcsIApyZWFsbHku IFdoYXQgeW91IHdhbnQgdG8ga25vdyBpcyBpZiBpdCBpcyAiY29tcGxldGVseSIgYW5kIAoiY29u c2VjdXRpdmVseSIgbWFwcGVkIHN1Y2ggdGhhdCB0aGUgSFcgY2FuIGFjdHVhbGx5IGJlbmVmaXQg ZnJvbSBpdCAtLSAKaWYgSFcgZXZlbiBzdXBwb3J0cyBpdC4gU28gIlBURS1tYXBwZWQgVEhQIiBp cyBqdXN0IHBhcnQgb2YgdGhlIHN0b3J5LiAKQW5kIHRoYXQncyB3aGVyZSBpdCBnZXRzIHRyaWNr eSBJIHRoaW5rLgoKSSBhZ3JlZSB0aGF0IGl0J3MgZ29vZCBmb3IgZGVidWdnaW5nLCBidXQgdGhl biBtYXliZSBpdCBzaG91bGQgYSkgbGl2ZSAKc29tZXdoZXJlIGVsc2UgKGRlYnVnZnMsIGJ1Y2tl dGluZyBiZWxvdykgYW5kIGIpIGJlIGNvbnNpc3RlbnQgd2l0aCAKb3RoZXIgVEhQcywgbWVhbmlu ZyB3ZSBhbHNvIHdhbnQgc2ltaWxhciBzdGF0cyBzb21ld2hlcmUuCgpPbmUgaWRlYSB3b3VsZCBi ZSB0byBleHBvc2Ugc3VjaCBzdGF0cyBpbiBhIFIvTyBmYXNoaW9uIGxpa2UgCiJucl9hbGxvY2F0 ZWQiIG9yICJucl9odWdlcGFnZXMiIGluIAovc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdl cGFnZS9odWdlcGFnZXMtNjRrQi8gYW5kIGZyaWVuZHMuIE9mIApjb3Vyc2UsIG1heWJlIHRhZ2dp bmcgdGhlbSB3aXRoICJhbm9uIiBwcmVmaXguCgo+IAo+IEkgd291bGQgYWN0dWFsbHkgYXJndWUg Zm9yIGFkZGluZyBzaW1pbGFyIGNvdW50ZXJzIGZvciBmaWxlLWJhY2tlZCBtZW1vcnkgdG9vCj4g Zm9yIHRoZSBzYW1lIHJlYXNvbnMuIChJIGFjdHVhbGx5IHBvc3RlZCBhbiBpbmRlcGVuZGVudCBw YXRjaCBhIHdoaWxlIGJhY2sgdGhhdAo+IGRpZCB0aGlzIGZvciBmaWxlLSBhbmQgYW5vbi0gbWVt b3J5LCBidWNrZXR0ZWQgYnkgc2l6ZS4gQnV0IEkgdGhpbmsgdGhlIGlkZWEgb2YKPiB0aGUgYnVj a2V0dGluZyB3YXMgTkFLZWQuCkZvciBkZWJ1Z2dpbmcsIEkgKnRoaW5rKiBpdCBtaWdodCBiZSB2 YWx1YWJsZSB0byBzZWUgaG93IG1hbnkgVEhQIG9mIAplYWNoIHNpemUgYXJlIGFsbG9jYXRlZC4g VHJhY2tpbmcgZXhhY3RseSAiaG93IGlzIGl0IG1hcHBlZCIgaXMgbm90IGVhc3kgCnRvIGFjaGll dmUgYXMgd2UgbGVhcm5lZC4gUE1ELW1hcHBlZCB3YXMgZWFzeSwgYnV0IGFsc28gcmVxdWlyZXMg dXMgdG8gCmtlZXAgZG9pbmcgdGhhdCB0cmFja2luZyBmb3IgYWxsIGV0ZXJuaXR5IC4uLgoKRG8g eW91IGhhdmUgYSBwb2ludGVyIHRvIHRoZSBwYXRjaCBzZXQ/IERpZCBpdCB0cnkgdG8gc3F1ZWV6 ZSBpdCBpbnRvIAovcHJvYy9tZW1pbmZvPwoKPiAKPj4KPj4gVGhhdCBhbHNvIHJhaXNlcyB0aGUg cXVlc3Rpb24gaG93IHlvdSB3b3VsZCBhY2NvdW50IGEgUFRFLW1hcHBlZCBUSFAuIFRoZSBob2xl Cj4+IHRoaW5nPyBPbmx5IHRoZSBwYXJ0cyB0aGF0IGFyZSBtYXBwZWQ/IExldCdzIGJldHRlciBu b3QgZ28gZG93biB0aGF0IHBhdGguCj4gCj4gVGhlIGFwcHJvYWNoIEkndmUgdGFrZW4gaW4gdGhp cyBzZXJpZXMgaXMgdGhlIHNpbXBsZSBvbmUgLSBhY2NvdW50IGV2ZXJ5IHBhZ2UKPiB0aGF0IGJl bG9uZ3MgdG8gYSBsYXJnZSBmb2xpbyBmcm9tIHdoZW4gaXQgaXMgZmlyc3QgbWFwcGVkIHRvIGxh c3QgdW5tYXBwZWQuCj4gWWVzLCBpbiB0aGlzIGNhc2UsIHlvdSBtaWdodCBub3QgYWN0dWFsbHkg YmUgbWFwcGluZyB0aGUgZnVsbCB0aGluZwo+IGNvbnRpZ2lvdXNseS4gQnV0IGl0IGdpdmVzIGEg Z29vZCBpbmRpY2F0aW9uLgo+IAo+IEkgYWxzbyBjb25zaWRlcmVkIGFjY291bnRpbmcgdGhlIHdo b2xlIGZvbGlvIG9ubHkgd2hlbiBhbGwgb2YgaXRzIHBhZ2VzIGJlY29tZQo+IG1hcHBlZCAoYWx0 aG91Z2ggbm90IHdvcnJ5aW5nIGFib3V0IHRoZW0gYWxsIGJlaW5nIGNvbnRpZ3VvdXMpLiBUaGF0 J3Mgc3RpbGwKPiBzaW1wbGUgdG8gaW1wbGVtZW50IGZvciBhbGwgY291bnRlcnMgZXhjZXB0IHNt YXBzLiBTbyB3ZW50IHdpdGggdGhlIHNpbXBsZXN0Cj4gYXBwcm9hY2ggd2l0aCB0aGUgdmlldyB0 aGF0IGl0cyAiZ29vZCBlbm91Z2giLgoKSWYgeW91IHRha2UgYSBsb29rIGF0ICJTaG1lbUh1Z2VQ YWdlcyIgYW5kICJGaWxlSHVnZVBhZ2VzIiwgdGhlcmUgd2UgCmFjdHVhbGx5IHRyYWNrIHRoZW0g d2hlbiB0aGV5IGdldCBhbGxvY2F0ZWQrZnJlZWQsIHdoaWNoIGlzIG11Y2ggZWFzaWVyIAp0aGFu IHRyYWNraW5nIHdoZW4vaG93IHRoZXkgYXJlICh1biltYXBwZWQuIEJ1dCBpdCdzIG9ubHkgZG9u ZSBmb3IgClBNRC1zaXplZCBUSFAgZm9yIG5vdy4KCj4gCj4+Cj4+IFRoYXQgbGVhdmVzIHRoZSBx dWVzdGlvbiB3aHkgd2Ugd291bGQgd2FudCB0byBpbmNsdWRlIHRoZW0gaGVyZSBhdCBhbGwgaW4g YQo+PiBzcGVjaWFsIFBURS1tYXBwZWQgd2F5Pwo+Pgo+Pgo+PiBBZ2FpbiwgbGV0J3MgbG9vayBh dCBodWdldGxiOiBJIHByZXBhcmVkIDEgR2lCIGFuZCBvbmUgMiBNaUIgcGFnZS4KPj4KPj4gSHVn ZVBhZ2VzX1RvdGFsOsKgwqDCoMKgwqDCoCAxCj4+IEh1Z2VQYWdlc19GcmVlOsKgwqDCoMKgwqDC oMKgIDEKPj4gSHVnZVBhZ2VzX1JzdmQ6wqDCoMKgwqDCoMKgwqAgMAo+PiBIdWdlUGFnZXNfU3Vy cDrCoMKgwqDCoMKgwqDCoCAwCj4+IEh1Z2VwYWdlc2l6ZTrCoMKgwqDCoMKgwqAgMjA0OCBrQgo+ PiBIdWdldGxiOsKgwqDCoMKgwqDCoMKgwqAgMTA1MDYyNCBrQgo+Pgo+PiAtPiBPbmx5IHRoZSBs YXN0IG9uZSBnaXZlcyB0aGUgc3VtLCB0aGUgb3RoZXIgc3RhdHMgZG9uJ3QgZXZlbiBtZW50aW9u IHRoZSBvdGhlcgo+PiBvbmVzLiBbaG93IGRvIHdlIGdldCB0aGVpciBzdGF0cywgaWYgYXQgYWxs P10KPiAKPiBUaGVyZSBhcmUgc29tZSBmaWxlcyBpbiAvc3lzL2tlcm5lbC9tbS9odWdlcGFnZXMv aHVnZXBhZ2VzLVhYa0IgYW5kCj4gL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGUqL2h1Z2Vw YWdlcy87IG5yX2h1Z2VwYWdlcywgZnJlZV9odWdlcGFnZXMsCj4gc3VycGx1c19odWdlcGFnZXMu IEJ1dCB0aGlzIGludGVyZmFjZSBhbHNvIGNvbnN0aXR1dGVzIHRoZSBhbGxvY2F0b3IsIG5vdCBq dXN0Cj4gc3RhdHMsIEkgdGhpbmsuCgpBaCwgSSBtaXNzZWQgdGhhdCB3ZSBleHBvc2UgZnJlZSB2 cy4gcmVzZXJ2ZWQgdnMuIHN1cnBsdXNlIC4uLiB0aGVyZSBhcyAKd2VsbDsgSSB0aG91Z2h0IHdl IHdvdWxkIG9ubHkgaGF2ZSAibnJfaHVnZXBhZ2VzIi4KCj4gCj4+Cj4+IFNvIG1heWJlLCB3ZSBv bmx5IHdhbnQgYSBzdW1tYXJ5IG9mIGhvdyBtYW55IGFub24gaHVnZSBwYWdlcyBvZiBhbnkgc2l6 ZSBhcmUKPj4gYWxsb2NhdGVkIChpbmRlcGVuZGVudCBvZiB0aGUgUFRFIHZzLiBQTUQgbWFwcGlu ZyksCj4gCj4gQXJlIHlvdSBwcm9wb3NpbmcgKEFub25IdWdlUGFnZXMgKyBBbm9uSHVnZVB0ZU1h cHBlZCkgaGVyZSBvciBzb21ldGhpbmcgZWxzZT8gSWYKPiB0aGUgZm9ybWVyLCB0aGVuIEkgZG9u J3QgcmVhbGx5IHNlZSB0aGUgZGlmZmVyZW5jZS4gV2UgaGF2ZSB0byBjb250aW51ZSB0bwo+IGV4 cG9zZSBQTUQtc2l6ZSAoQW5vbkh1Z2VQYWdlcykuIFNvIGVpdGhlciBhZGQgUFRFLW9ubHkgY291 bnRlciwgYW5kIGRlcml2ZSB0aGUKPiB0b3RhbCwgb3IgYWRkIGEgdG90YWwgY291bnRlciBhbmQg ZGVyaXZlIFBURS1vbmx5LiBJIHN1c3BlY3QgSSd2ZSBtaXN1bmRlcnN0b29kCj4geW91ciBwb2lu dC4KCkkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIGdvIGRvd24gdGhlICJQdGVNYXBwZWQiIHBhdGgu IFByb2JhYmx5IHdlIHdhbnQgCiJidWNrZXRpbmciIHN0YXRzIGFzIHlvdSBzYWlkLCBhbmQgbWF5 YmUgYSBnbG9iYWwgb25lIHRoYXQganVzdCBjb21iaW5lcyAKZXZlcnl0aGluZyAoYW55IFRIUCku IEJ1dCBuYW1pbmcgd2lsbCBiZSBkaWZmaWN1bHQuCgo+IAo+PiBhbmQgc29tZSBvdGhlciBzb3Vy Y2UgdG8KPj4gZXZlbnR1YWxseSBpbnNwZWN0IGhvdyB0aGUgZGlmZmVyZW50IHNpemVzIGJlaGF2 ZS4KPj4KPj4gQnV0IG5vdGUgdGhhdCBmb3Igbm9uLVBNRC1zaXplZCBmaWxlIFRIUCB3ZSBkb24n dCBldmVuIGhhdmUgc3BlY2lhbCBjb3VudGVycyEKPj4gLi4uIHNvIG1heWJlIHdlIHNob3VsZCBh bHNvIGRlZmVyIGFueSBzdWNoIHN0YXRzIGFuZCBjb21lIHVwIHdpdGggc29tZXRoaW5nCj4+IHVu aWZvcm0gZm9yIGFsbCB0eXBlcyBvZiBub24tUE1ELXNpemVkIFRIUC4KPiAKPiBJbmRlZWQsIEkg Y2FuIHNlZSBiZW5lZml0IGluIGFkZGluZyB0aGVzZSBmb3IgZmlsZSBUSFAgLSBpbiBmYWN0IEkg aGF2ZSBhIHBhdGNoCj4gdGhhdCBkb2VzIGV4YWN0bHkgdGhhdCB0byBoZWxwIG15IGRldmVsb3Bt ZW50IHdvcmsuIEkgaGFkIGVudmlzYWdlZCB0aGF0IHdlCj4gY291bGQgYWRkIHNvbWV0aGluZyBs aWtlIEZpbGVIdWdlUHRlTWFwcGVkLCBTaG1lbUh1Z2VQdGVNYXBwZWQgdGhhdCB3b3VsZCBmb2xs b3cKPiB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgQW5vbkh1Z2VQdGVNYXBwZWQuCgpBZ2FpbiwgbWF5 YmUgd2UgY2FuIGZpbmQgc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgaW52b2x2ZSB0aGUgIlB0ZU1h cHBlZCIgCnRlcm1pbm9sb2d5IGFuZCBqdXN0IGdpdmVzIHVzIGEgYmlnIHRvdGFsIG9mICJhbGxv Y2F0ZWQiIFRIUC4gRm9yIApkZXRhaWxlZCBzdGF0cyBmb3IgZGVidWdnaW5nLCBtYXliZSB3ZSBj YW4ganVzdCB1c2UgYSBkaWZmZXJlbnQgCmludGVyZmFjZSB0aGVuLgoKPiAKPj4KPj4KPj4gU2Fu ZSBkaXNjdXNzaW9uIGFwcGxpZXMgdG8gYWxsIG90aGVyIHN0YXRzLgo+Pgo+Pgo+Pj4KPj4+IEJl Y2F1c2Ugd2Ugbm93IGhhdmUgcnVudGltZSBlbmFibGUvZGlzYWJsZSBjb250cm9sLCBJJ3ZlIHJl bW92ZWQgdGhlIGNvbXBpbGUKPj4+IHRpbWUgS2NvbmZpZyBzd2l0Y2guIEl0IHN0aWxsIGRlZmF1 bHRzIHRvIHJ1bnRpbWUtZGlzYWJsZWQuCj4+Pgo+Pj4gTk9URTogVGhlc2UgY2hhbmdlcyBzaG91 bGQgbm90IGJlIG1lcmdlZCB1bnRpbCB0aGUgcHJlcmVxdWlzaXRlcyBhcmUgY29tcGxldGUuCj4+ PiBUaGVzZSBhcmUgaW4gcHJvZ3Jlc3MgYW5kIHRyYWNrZWQgYXQgWzddLgo+Pgo+PiBXZSBzaG91 bGQgcHJvYmFibHkgbGlzdCB0aGVtIGhlcmUsIGFuZCBjbGFzc2lmeSB3aGljaCBvbmUgd2Ugc2Vl IGFzIHN0cmljdCBhCj4+IHJlcXVpcmVtZW50LCB3aGljaCBvbmVzIG1pZ2h0IGJlIGFuIG9wdGlt aXphdGlvbi4KPiAKPiAKPiBJJ2xsIG5lZWQgc29tZSBoZWxwIHdpdGggY2xhc2lmeWluZyB0aGVt LCBzbyBzaG93aW5nIG15IHdvcmtpbmcuIEZpbmFsIGxpc3QgdGhhdAo+IEkgd291bGQgcHJvcG9z ZSBhcyBzdHJpY3QgcmVxdWlyZW1lbnRzIGF0IGJvdHRvbS4KPiAKPiBUaGlzIGlzIG15IGxpc3Qg d2l0aCBzdGF0dXMsIGFzIHBlciByZXNwb25zZSB0byBZdSBpbiBvdGhlciB0aHJlYWQ6Cj4gCj4g ICAgLSBEYXZpZCBpcyB3b3JraW5nIG9uICJzaGFyZWQgdnMgZXhjbHVzaXZlIG1hcHBpbmdzIgoK UHJvYmFibHkgIkNPVyByZXVzZSBzdXBwb3J0IiBpcyBhIHNlcGFyYXRlIGl0ZW0sIGFsdGhvdWdo IG15IGFwcHJvYWNoIAp3b3VsZCBjb3ZlciB0aGF0LgoKVGhlIHF1ZXN0aW9uIGlzLCBpZiB0aGUg ZXN0aW1hdGUgd2UncmUgdXNpbmcgaW4gbW9zdCBjb2RlIGZvciBub3cgd291bGQgCmF0IGxlYXN0 IGJlIHN1ZmZpY2llbnQgdG8gbWVyZ2UgaXQuIFRoZSBlc3RpbWF0ZSBpcyBlYXNpbHkgd3Jvbmcs IGJ1dCB3ZSAKZG8gaGF2ZSB0aGF0IGlzc3VlIHdpdGggUFRFLW1hcHBlZCBUSFAgYWxyZWFkeS4K CkJ1dCB0aGF0IGFyZ3VtZW50IHByb2JhYmx5IGFwcGxpZXMgdG8gbW9zdCB0aGluZ3MgaGVyZTog dGhlIGRpZmZlcmVuY2UgCmlzIHRoYXQgUFRFLW1hcHBlZCBUSFAgYXJlIG5vdCB0aGUgZGVmYXVs dCwgdGhhdCdzIHdoeSBub2JvZHkgcmVhbGx5IGNhcmVkLgoKW0knbSBwbGF5aW5nIHdpdGggYW4g YWxtb3N0LWxvY2tsZXNzIHNjaGVtZSByaWdodCBub3cgYW5kIGhvcGUgSSBoYXZlIApzb21ldGhp bmcgcnVubmluZyBzb29uaXNoIC0tIGFzIHlvdSBrbm93LCBJIGdvdCBkaXN0cmFjdGVkXQoKPiAg ICAtIFppIFlhbiBoYXMgcG9zdGVkIGFuIFJGQyBmb3IgY29tcGFjdGlvbgo+ICAgIC0gWWluIEZl bmd3ZWkncyBtbG9jayBzZXJpZXMgaXMgbm93IGluIG1tLXN0YWJsZQo+ICAgIC0gWWluIEZlbmd3 ZWkncyBtYWR2aXNlIHNlcmllcyBpcyBpbiA2LjYKPiAgICAtIEkndmUgcmV3b3JrZWQgYW5kIHBv c3RlZCBhIHNlcmllcyBmb3IgZGVmZXJyZWRfc3BsaXRfZm9saW87IGFsdGhvdWdoIEkndmUKPiAg ICAgIGRlcHJpb3JpdGllZCBpdCBiZWNhdXNlIFl1IHNhaWQgaXQgd2Fzbid0IHJlYWxseSBhIHBy ZS1yZXF1aXNpdGUuCj4gICAgLSBudW1hIGJhbGFuY2luZyBkZXBlbmRzIG9uIERhdmlkJ3MgInNo YXJlZCB2cyBleGNsdXNpdmUgbWFwcGluZ3MiIHdvcmsKPiAgICAtIEkndmUgc3RhcnRlZCBsb29r aW5nIGF0ICJsYXJnZSBmb2xpb3MgaW4gc3dhcCBjYWNoZSIgaW4gdGhlIGJhY2tncm91bmQsCj4g ICAgICBiZWNhdXNlIEknbSBzZWVpbmcgc29tZSBzbG93IGRvd24gd2l0aCBsYXJnZSBmb2xpb3Ms IGJ1dCB3ZSBhbHNvIGFncmVlZCB0aGF0Cj4gICAgICB3YXNuJ3QgYSBwcmVyZXF1aXNpdGUKPiAK ClByb2JhYmx5IGl0IHdvdWxkIGJlIGdvb2QgdG8gdGFsayBhYm91dCB0aGUgaXRlbXMgYW5kIGhv dyB3ZSB3b3VsZCAKY2xhc3NpZnkgdGhlbSBpbiBhIG1lZXRpbmcuCgoKPiBBbHRob3VnaCwgc2lu Y2Ugc2VuZGluZyB0aGF0LCBJJ3ZlIGRldGVybWluZWQgdGhhdCB3aGVuIHJ1bm5pbmcga2VybmVs Cj4gY29tcGlsYXRpb24gYWNyb3NzIGhpZ2ggbnVtYmVyIG9mIGNvcmVzIG9uIGFybTY0LCB0aGUg Y29zdCBvZiBzcGxpdHRpbmcgdGhlCj4gZm9saW9zIGdldHMgbGFyZ2UgZHVlIHRvIG5lZWRpbmcg dG8gYnJvYWRjYXN0IHRoZSBleHRyYSBUTEJJcy4gU28gSSB0aGluayB0aGUKPiBsYXN0IHBvaW50 IG9uIHRoYXQgbGlzdCBtYXkgYmUgYSBwcmVyZXF1aXNpdGUgYWZ0ZXIgYWxsLiAoSSd2ZSBiZWVu IGFibGUgdG8gZml4Cj4gdGhpcyBieSBhZGRpbmcgc3VwcG9ydCBmb3IgYWxsb2NhdGluZyBsYXJn ZSBmb2xpb3MgaW4gdGhlIHN3YXAgZmlsZSwgYW5kCj4gYXZvaWRpbmcgdGhlIHNwbGl0IC0gcGxh bm5pbmcgdG8gc2VuZCBSRkMgdGhpcyB3ZWVrKS4KPiAKPiBUaGVyZSBpcyBhbHNvIHRoaXMgc2V0 IG9mIHRoaW5ncyB0aGF0IHlvdSBtZW50aW9uZWQgYWdhaW5zdCAic2hhcmVkIHZzIGV4Y2x1c2l2 ZQo+IG1hcHBpbmdzIiwgd2hpY2ggSSdtIG5vdCBzdXJlIGlmIHlvdSBhcmUgcGxhbm5pbmcgdG8g Y292ZXIgYXMgcGFydCBvZiB5b3VyIHdvcmsKPiBvciBpZiB0aGV5IGFyZSBmb2xsb3cgb24gdGhp bmdzIHRoYXQgd2lsbCBuZWVkIHRvIGJlIGRvbmU6Cj4gCj4gKDEpIERldGVjdGluZyBzaGFyZWQg Zm9saW9zLCB0byBub3QgbWVzcyB3aXRoIHRoZW0gd2hpbGUgdGhleSBhcmUgc2hhcmVkLgo+ICAg ICAgTUFEVl9QQUdFT1VULCB1c2VyLXRyaWdnZXJlZCBwYWdlIG1pZ3JhdGlvbiwgTlVNQSBoaW50 aW5nLCBraHVnZXBhZ2VkIC4uLgo+ICAgICAgcmVwbGFjZSBjYXNlcyB3aGVyZSBmb2xpb19lc3Rp bWF0ZWRfc2hhcmVycygpID09IDEgd291bGQgY3VycmVudGx5IGJlIHRoZQo+ICAgICAgYmVzdCB3 ZSBjYW4gZG8gKGFuZCBpbiBzb21lIGNhc2VzLCBwYWdlX21hcGNvdW50KCkgPT0gMSkuCj4gCj4g QW5kIEkgcmVjZW50bHkgZGlzY292ZXJlZCB0aGF0IGtodWdlcGFnZWQgZG9lc24ndCBjb2xsYXBz ZSBmaWxlLWJhY2tlZCBwYWdlcyB0bwo+IGEgUE1ELXNpemUgVEhQIGlmIHRoZXkgYmVsb25nIHRv IGEgbGFyZ2UgZm9saW8sIHNvIEknbSBndWVzc2luZyBpdCBtYXkgYWxzbwo+IHN1ZmZlciB0aGUg c2FtZSBiZWhhdmlvdXIgZm9yIGFub24gbWVtb3J5LiBJJ20gbm90IHN1cmUgaWYgdGhhdCdzIHdo YXQgeW91cgo+ICJraHVnZXBhZ2VkIC4uLiIgY29tbWVudCByZWZlcnMgdG8/CgpZZXMuIEJ1dCBJ IGRpZCBub3QgbG9vayBpbnRvIGFsbCB0aGUgZGV0YWlscyB5ZXQuCgoia3VoZXBhZ2VkIiBjb2xs YXBzZSBzdXBwb3J0IHRvIHNtYWxsLXNpemVkIFRIUCBpcyBwcm9iYWJseSBhbHNvIGEgdmVyeSAK aW1wb3JhbnQgaXRlbSwgYWx0aG91Z2ggaXQgbWlnaHQgYmUgbGVzcyByZWxldmFudCB0aGFuIGZv ciBQTUQgLS0gYW5kIEkgCmNvbnNpZGVyIGl0IGZ1dHVyZSB3b3JrLiBTZWUgYmVsb3cuCgo+IAo+ IFNvIHRha2luZyBhbGwgdGhhdCBhbmQgdHJ5aW5nIHRvIHB1dCB0b2dldGhlciBhIGNvbXBsZXRl IG91dHN0YW5kaW5nIGxpc3QgZm9yCj4gc3RyaWN0IHJlcXVpcmVtZW50czoKPiAKPiAgICAtIFNo YXJlZCB2cyBFeGNsdXNpdmUgTWFwcGluZ3MgKERhdmlkSCkKPiAgICAgICAgLSB1c2VyLXRyaWdn ZXJlZCBwYWdlIG1pZ3JhdGlvbgo+ICAgICAgICAtIE5VTUEgaGludGluZy9iYWxhbmNpbmcKPiAg ICAgICAgLSBFbmhhbmNlIGtodWdlcGFnZWQgdG8gY29sbGFwc2UgdG8gUE1ELXNpemUgZnJvbSBQ VEUtbWFwcGVkIGxhcmdlIGZvbGlvcwo+ICAgIC0gQ29tcGFjdGlvbiBvZiBMYXJnZSBGb2xpb3Mg KFppIFlhbikKPiAgICAtIFN3YXAgb3V0IHNtYWxsLXNpemUgVEhQIHdpdGhvdXQgU3BsaXQgKFJ5 YW4gUm9iZXJ0cykKCl4gdGhhdCdzIGdvaW5nIHRvIGJlIHRvdWdoLCBJIGNhbiBwcm9taXNlLiBB bmQgdGhlIG9ubHkgd2F5IHRvIGxpdmUgCndpdGhvdXQgdGhhdCB3b3VsZCBiZSBraHVnZXBhZ2Vk IHN1cHBvcnQuIChiZWNhdXNlIHRoYXQncyBob3cgaXQncyBhbGwgCndvcmtpbmcgZm9yIFBNRC1z aXplZCBUSFAgYWZ0ZXIgYWxsISkKCk9uY2UgYSBQTUQtc2l6ZWQgVEhQIHdhcyBzd2FwcGVkIG91 dCBhbmQgZXZpY3RlZCwgaXQgd2lsbCBhbHdheXMgY29tZSAKYmFjayBpbiBvcmRlci0wIGZvbGlv cy4ga2h1Z2VnZWQgd2lsbCByZS1jb2xsYXBzZSBpbnRvIFBNRC1zaXplZCBjaHVua3MuIApJZiB3 ZSBjb3VsZCBkbyB0aGF0IGZvciBQVEUtc2l6ZWQgVEhQIGFzIHdlbGwgLi4uCgo+IAo+IAo+Pgo+ Pgo+PiBOb3csIHRoZXNlIGFyZSBqdXN0IG15IHRob3VnaHRzLCBhbmQgSSdtIGhhcHB5IGFib3V0 IG90aGVyIHRob3VnaHRzLgo+IAo+IEFzIGFsd2F5cywgdGhhbmtzIGZvciB0YWtpbmcgdGhlIHRp bWUgLSBJIHJlYWxseSBhcHByZWNpYXRlIGl0LgoKU3VyZS4gSG9waW5nIG90aGVycyBjYW4gY29t bWVudC4KCk15IGd1dCBmZWVsaW5nIGlzIHRoYXQgaXQncyBiZXN0IHRvIGZvY3VzIG9uIGdldHRp bmcgdGhlIHN5c2ZzIGludGVyZmFjZSAKcmlnaHQrZnV0dXJlIHByb29mIGFuZCBoYW5kbGluZyB0 aGUgc3RhdHMgaW5kZXBlbmRlbnRseS4gV2hpbGUgYmVpbmcgYSAKZ29vZCBkZWJ1ZyBtZWNoYW5p c20sIEkgd291bGRuJ3QgY29uc2lkZXIgdGhlc2Ugc3RhdHMgYSByZXF1aXJlbWVudDogd2UgCmRv bid0IGhhdmUgdGhlbSBmb3IgZmlsZS9zaG1lbSBzbWFsbC1zaXplZCB0aHAgc28gZmFyIGFzIHdl bGwuCgpTbyBtYXliZSByZWFsbHkgYmV0dGVyIHRvIGhhbmRsZSB0aGUgc3RhdHMgaW4gbWVtaW5m byBhbmQgZnJpZW5kcyAKc2VwYXJhdGVseS4KCi0tIApDaGVlcnMsCgpEYXZpZCAvIGRoaWxkZW5i CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt YXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJt LWtlcm5lbAo=