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 X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F32DDC43463 for ; Mon, 21 Sep 2020 02:58:37 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 85DF320795 for ; Mon, 21 Sep 2020 02:58:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="tnWAW1gd"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="UNYinvlQ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 85DF320795 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:Reply-To:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=PXGrwym2WXqUIK3g1O7fyyvDtu3KUcQbpr3X83kuBkE=; b=tnWAW1gdORQ1Pc r2GhCiiFVREBxIwMLvkTqUN07J8Z73wolk5m1zXppzrltc+KqI0O3NN5PGJevtreUSrwgaMjY0/0k IXUt0l7cp0T/swx9MSBEVVRFqxELX+1Zkwddi506YYCDSxo3ScAzt5sXj5LjjJ9QHiGEfnKE/jxZO GacFbOTM4V5gADZBYRU0dBllZuiNJKNFRKljA1FPEGPYN26E0oVxfbGEerXAsDtfPT7+DQahAcxMq yD6a9pRDR7qaGTzEprYoowdeCyTYZfq4ws8/voLiI0A2MY7NmpfRn5eqjZxzdSDEFpI7t5sC/24Cb wDJ/2mO6qvEXuzUwkL7A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKC0m-0002gl-MO; Mon, 21 Sep 2020 02:57:04 +0000 Received: from us-smtp-2.mimecast.com ([205.139.110.61] helo=us-smtp-delivery-1.mimecast.com) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKC0j-0002gK-Up for linux-arm-kernel@lists.infradead.org; Mon, 21 Sep 2020 02:57:03 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1600657020; h=from:from:reply-to: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=YeKw+/y7Dc2RU9VjLNTsXLBHSQ9qLyRYCz78WrOYT30=; b=UNYinvlQjwfskOy4F4KiP4Vd+1Qb8GuElSTNVc6l4W1NDoMdKqiYvsjp3MiAWt4bM+ha06 y/oxwrzlvP37LN6tb3rRfr2/j5GcK+atvQUG3sxkBQ0tPX8VE4z4SQEdp1bU3Lbbz3hh5F +pugu3odp+hInyWP85BqZLV4ENAaFXA= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-370-7Gw7oaaNPXi57DyeyO4ITw-1; Sun, 20 Sep 2020 22:56:55 -0400 X-MC-Unique: 7Gw7oaaNPXi57DyeyO4ITw-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 47D111005E5B; Mon, 21 Sep 2020 02:56:54 +0000 (UTC) Received: from [10.64.54.34] (vpn2-54-34.bne.redhat.com [10.64.54.34]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C6B495D9D5; Mon, 21 Sep 2020 02:56:51 +0000 (UTC) Subject: Re: [PATCH 2/2] arm64/mm: Enable color zero pages To: Robin Murphy , Will Deacon References: <20200916032523.13011-1-gshan@redhat.com> <20200916032523.13011-3-gshan@redhat.com> <20200916082819.GB27496@willie-the-truck> <33e9a04e-9f93-6a06-273d-284900bc1535@arm.com> From: Gavin Shan Message-ID: <968a5ae7-ebed-8191-15df-6c9860dc72fe@redhat.com> Date: Mon, 21 Sep 2020 12:56:47 +1000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.0 MIME-Version: 1.0 In-Reply-To: <33e9a04e-9f93-6a06-273d-284900bc1535@arm.com> Content-Language: en-US X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200920_225702_026630_BCA43B08 X-CRM114-Status: GOOD ( 36.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Gavin Shan Cc: mark.rutland@arm.com, anshuman.khandual@arm.com, catalin.marinas@arm.com, linux-kernel@vger.kernel.org, shan.gavin@gmail.com, linux-arm-kernel@lists.infradead.org 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 SGkgUm9iaW4sCgpPbiA5LzE3LzIwIDg6MjIgUE0sIFJvYmluIE11cnBoeSB3cm90ZToKPiBPbiAy MDIwLTA5LTE3IDA0OjM1LCBHYXZpbiBTaGFuIHdyb3RlOgo+PiBPbiA5LzE2LzIwIDY6MjggUE0s IFdpbGwgRGVhY29uIHdyb3RlOgo+Pj4gT24gV2VkLCBTZXAgMTYsIDIwMjAgYXQgMDE6MjU6MjNQ TSArMTAwMCwgR2F2aW4gU2hhbiB3cm90ZToKPj4+PiBUaGlzIGVuYWJsZXMgY29sb3IgemVybyBw YWdlcyBieSBhbGxvY2F0aW5nIGNvbnRpZ291cyBwYWdlIGZyYW1lcwo+Pj4+IGZvciBpdC4gVGhl IG51bWJlciBvZiBwYWdlcyBmb3IgdGhpcyBpcyBkZXRlcm1pbmVkIGJ5IEwxIGRDYWNoZQo+Pj4+ IChvciBpQ2FjaGUpIHNpemUsIHdoaWNoIGlzIHByb2JiZWQgZnJvbSB0aGUgaGFyZHdhcmUuCj4+ Pj4KPj4+PiDCoMKgwqAgKiBBZGQgY2FjaGVfdG90YWxfc2l6ZSgpIHRvIHJldHVybiBMMSBkQ2Fj aGUgKG9yIGlDYWNoZSkgc2l6ZQo+Pj4+Cj4+Pj4gwqDCoMKgICogSW1wbGVtZW50IHNldHVwX3pl cm9fcGFnZXMoKSwgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIHRoZSBwYWdlCj4+Pj4gwqDCoMKgwqDC oCBhbGxvY2F0b3IgYmVnaW5zIHRvIHdvcmssIHRvIGFsbG9jYXRlIHRoZSBjb250aWdvdXMgcGFn ZXMKPj4+PiDCoMKgwqDCoMKgIG5lZWRlZCBieSBjb2xvciB6ZXJvIHBhZ2UuCj4+Pj4KPj4+PiDC oMKgwqAgKiBSZXdvcmtlZCBaRVJPX1BBR0UoKSBhbmQgZGVmaW5lIF9fSEFWRV9DT0xPUl9aRVJP X1BBR0UuCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBHYXZpbiBTaGFuIDxnc2hhbkByZWRoYXQu Y29tPgo+Pj4+IC0tLQo+Pj4+IMKgIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vY2FjaGUuaMKgwqAg fCAyMiArKysrKysrKysrKysrKysrKysrKwo+Pj4+IMKgIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20v cGd0YWJsZS5oIHzCoCA5ICsrKysrKy0tCj4+Pj4gwqAgYXJjaC9hcm02NC9rZXJuZWwvY2FjaGVp bmZvLmPCoMKgwqAgfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4gwqAg YXJjaC9hcm02NC9tbS9pbml0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzNSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+IMKgIGFyY2gvYXJtNjQvbW0vbW11LmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNyAtLS0tLS0tCj4+Pj4gwqAgNSBmaWxlcyBjaGFu Z2VkLCA5OCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdp dCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vY2FjaGUuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9h c20vY2FjaGUuaAo+Pj4+IGluZGV4IGE0ZDFiNWY3NzFmNi4uNDIwZTlkZGUyYzUxIDEwMDY0NAo+ Pj4+IC0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vY2FjaGUuaAo+Pj4+ICsrKyBiL2FyY2gv YXJtNjQvaW5jbHVkZS9hc20vY2FjaGUuaAo+Pj4+IEBAIC0zOSw2ICszOSwyNyBAQAo+Pj4+IMKg ICNkZWZpbmUgQ0xJRFJfTE9DKGNsaWRyKcKgwqDCoCAoKChjbGlkcikgPj4gQ0xJRFJfTE9DX1NI SUZUKSAmIDB4NykKPj4+PiDCoCAjZGVmaW5lIENMSURSX0xPVUlTKGNsaWRyKcKgwqDCoCAoKChj bGlkcikgPj4gQ0xJRFJfTE9VSVNfU0hJRlQpICYgMHg3KQo+Pj4+ICsjZGVmaW5lIENTU0VMUl9U TkRfU0hJRlTCoMKgwqAgNAo+Pj4+ICsjZGVmaW5lIENTU0VMUl9UTkRfTUFTS8KgwqDCoMKgwqDC oMKgIChVTCgxKSA8PCBDU1NFTFJfVE5EX1NISUZUKQo+Pj4+ICsjZGVmaW5lIENTU0VMUl9MRVZF TF9TSElGVMKgwqDCoCAxCj4+Pj4gKyNkZWZpbmUgQ1NTRUxSX0xFVkVMX01BU0vCoMKgwqAgKFVM KDcpIDw8IENTU0VMUl9MRVZFTF9TSElGVCkKPj4+PiArI2RlZmluZSBDU1NFTFJfSU5EX1NISUZU wqDCoMKgIDAKPj4+PiArI2RlZmluZSBDU1NFUkxfSU5EX01BU0vCoMKgwqDCoMKgwqDCoCAoVUwo MSkgPDwgQ1NTRUxSX0lORF9TSElGVCkKPj4+PiArCj4+Pj4gKyNkZWZpbmUgQ0NTSURSXzY0X0xT X1NISUZUwqDCoMKgIDAKPj4+PiArI2RlZmluZSBDQ1NJRFJfNjRfTFNfTUFTS8KgwqDCoCAoVUwo NykgPDwgQ0NTSURSXzY0X0xTX1NISUZUKQo+Pj4+ICsjZGVmaW5lIENDU0lEUl82NF9BU1NPQ19T SElGVMKgwqDCoCAzCj4+Pj4gKyNkZWZpbmUgQ0NTSURSXzY0X0FTU09DX01BU0vCoMKgwqAgKFVM KDB4MUZGRkZGKSA8PCBDQ1NJRFJfNjRfQVNTT0NfU0hJRlQpCj4+Pj4gKyNkZWZpbmUgQ0NTSURS XzY0X1NFVF9TSElGVMKgwqDCoCAzMgo+Pj4+ICsjZGVmaW5lIENDU0lEUl82NF9TRVRfTUFTS8Kg wqDCoCAoVUwoMHhGRkZGRkYpIDw8IENDU0lEUl82NF9TRVRfU0hJRlQpCj4+Pj4gKwo+Pj4+ICsj ZGVmaW5lIENDU0lEUl8zMl9MU19TSElGVMKgwqDCoCAwCj4+Pj4gKyNkZWZpbmUgQ0NTSURSXzMy X0xTX01BU0vCoMKgwqAgKFVMKDcpIDw8IENDU0lEUl8zMl9MU19TSElGVCkKPj4+PiArI2RlZmlu ZSBDQ1NJRFJfMzJfQVNTT0NfU0hJRlTCoMKgwqAgMwo+Pj4+ICsjZGVmaW5lIENDU0lEUl8zMl9B U1NPQ19NQVNLwqDCoMKgIChVTCgweDNGRikgPDwgQ0NTSURSXzMyX0FTU09DX1NISUZUKQo+Pj4+ ICsjZGVmaW5lIENDU0lEUl8zMl9TRVRfU0hJRlTCoMKgwqAgMTMKPj4+PiArI2RlZmluZSBDQ1NJ RFJfMzJfU0VUX01BU0vCoMKgwqAgKFVMKDB4N0ZGRikgPDwgQ0NTSURSXzMyX1NFVF9TSElGVCkK Pj4+Cj4+PiBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBiZSBpbmZlcnJpbmcgY2FjaGUgc3RydWN0 dXJlIGZyb20gdGhlc2UgcmVnaXN0ZXIKPj4+IHZhbHVlcy4gVGhlIEFybSBBUk0gaGVscGZ1bGx5 IHNheXM6Cj4+Pgo+Pj4gwqDCoCB8IFlvdSBjYW5ub3QgbWFrZSBhbnkgaW5mZXJlbmNlIGFib3V0 IHRoZSBhY3R1YWwgc2l6ZXMgb2YgY2FjaGVzIGJhc2VkCj4+PiDCoMKgIHwgb24gdGhlc2UgcGFy YW1ldGVycy4KPj4+Cj4+PiBzbyB3ZSBuZWVkIHRvIHRha2UgdGhlIHRvcG9sb2d5IGluZm9ybWF0 aW9uIGZyb20gZWxzZXdoZXJlLgo+Pj4KPj4KPj4gWWVhaCwgSSBhbHNvIG5vdGljZWQgdGhlIHN0 YXRlbWVudCBpbiB0aGUgc3BlYy4gSG93ZXZlciwgdGhlIEwxIGNhY2hlIHNpemUKPj4gZmlndXJl ZCBvdXQgZnJvbSBhYm92ZSByZWdpc3RlcnMgYXJlIG1hdGNoaW5nIHdpdGggImxzY3B1IiBvbiB0 aGUgbWFjaGluZQo+PiB3aGVyZSBJIGRpZCBteSB0ZXN0cy4gTm90ZSAibHNjcHUiIGRlcGVuZHMg b24gc3lzZnMgZW50cmllcyB3aG9zZSBpbmZvcm1hdGlvbgo+PiBpcyByZXRyaWV2ZWQgZnJvbSBB Q1BJIChQUFRUKSB0YWJsZS4gVGhlIG51bWJlciBvZiBjYWNoZSBsZXZlbHMgYXJlIHBhcnRpYWxs eQo+PiByZXRyaWV2ZWQgZnJvbSBzeXN0ZW0gcmVnaXN0ZXIgKGNsaWRyX2VsMSkuCj4+Cj4+IEl0 J3MgZG9hYmxlIHRvIHJldHJpZXZlIHRoZSBMMSBjYWNoZSBzaXplIGZyb20gQUNQSSAoUFBUVCkg dGFibGUuIEknbGwKPj4gY2hhbmdlIGFjY29yZGluZ2x5IGluIHYyIGlmIHRoaXMgZW5hYmxlbWVu dCBpcyByZWFsbHkgbmVlZGVkLiBNb3JlIGNsYXJpZnkKPj4gaXMgcHJvdmlkZWQgYmVsb3cuCj4+ Cj4+PiBCdXQgYmVmb3JlIHdlIGdldCBpbnRvIHRoYXQsIGNhbiB5b3UganVzdGlmeSB3aHkgd2Ug bmVlZCB0byBkbyB0aGlzIGF0IGFsbCwKPj4+IHBsZWFzZT8gRG8geW91IGhhdmUgZGF0YSB0byBz aG93IHRoZSBiZW5lZml0IG9mIGFkZGluZyB0aGlzIGNvbXBsZXhpdHk/Cj4+Pgo+Pgo+PiBJbml0 aWFsbHksIEkgZm91bmQgaXQncyB0aGUgbWlzc2VkIGZlYXR1cmUgd2hpY2ggaGFzIGJlZW4gZW5h YmxlZCBvbgo+PiBtaXBzL3MzOTAuIEN1cnJlbnRseSwgYWxsIHJlYWQtb25seSBhbm9ueW1vdXMg Vk1BcyBhcmUgYmFja2VkIHVwIGJ5Cj4+IHNhbWUgemVybyBwYWdlLiBJdCBtZWFucyBhbGwgcmVh ZHMgdG8gdGhlc2UgVk1BcyBhcmUgY2FjaGVkIGJ5IHNhbWUKPj4gc2V0IG9mIGNhY2hlLCBidXQg c3RpbGwgbXVsdGlwbGUgd2F5cyBpZiBzdXBwb3J0ZWQuIFNvIGl0IHdvdWxkIGJlCj4+IG5pY2Ug dG8gaGF2ZSBtdWx0aXBsZSB6ZXJvIHBhZ2VzIHRvIGJhY2sgdXAgdGhlc2UgcmVhZC1vbmx5IGFu b255bW91cwo+PiBWTUFzLCBzbyB0aGF0IHRoZSByZWFkcyBvbiB0aGVtIGNhbiBiZSBjYWNoZWQg YnkgbXVsdGlwbGUgc2V0cyAobXVsdGlwbGUKPj4gd2F5cyBzdGlsbCBpZiBzdXBwb3J0ZWQpLiBJ dCdzIG92ZXJhbGwgYmVuZWZpY2lhbCB0byB0aGUgcGVyZm9ybWFuY2UuCj4gCj4gSXMgdGhpcyBh IGNvbmNlcm4gZm9yIHRydWUgUElQVCBjYWNoZXMsIG9yIGlzIGl0IHJlYWxseSBqdXN0IHdvcmtp bmcgYXJvdW5kIGEgcGF0aG9sb2dpY2FsIGNhc2UgZm9yIGFsaWFzLWRldGVjdGluZyBWSVBUIGNh Y2hlcz8KPiAKCkkgdGhpbmsgaXQncyBkZWZpbml0ZWx5IGEgY29uY2VybiBmb3IgUElQVCBjYWNo ZXMuIEhvd2V2ZXIsIEknbSBub3QKc3VyZSBhYm91dCBWSVBUIGNhY2hlcyBiZWNhdXNlIEkgZmFp bGVkIHRvIHVuZGVyc3RhbmQgaG93IGl0IHdvcmtzCmZyb20gQVJNOC1BIHNwZWMuIElmIEknbSBj b3JyZWN0LCB0aGUgaW5kZXggb2YgVklQVCBjYWNoZSBsaW5lIGlzCnN0aWxsIGRldGVybWluZWQg YnkgdGhlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHRoZSBudW1iZXIgb2Ygc2V0cyBpcwphbm90aGVy IGxpbWl0YXRpb24/IEZvciBleGFtcGxlLCB0d28gdmlydHVhbCBhZGRyZXNzZXMgKHYxKSBhbmQg KHYyKQphcmUgdHJhbnNsYXRlZCB0byBzYW1lIHBoeXNpY2FsIGFkZHJlc3MgKHAxKSwgdGhlcmUg aXMgc3RpbGwgb25lCmNhY2hlIGxpbmUgKGZyb20gcGFydGljdWxhciBzZXQpIGZvciB0aGVtLiBJ ZiBzbywgdGhpcyBzaG91bGQgaGVscHMKaW4gdGVybXMgb2YgcGVyZm9ybWFuY2UuCgpIb3dldmVy LCBJJ20gbm90IHN1cmUgSSB1bmRlcnN0b29kIFZJUFQgY2FjaGVzIGNvcnJlY3RseSBiZWNhdXNl IHRoZXJlCmlzIG9uZSBzdGF0ZW1lbnQgaW4gdGhlIEFSTTgtQSBzcGVjIGFzIGJlbG93LiBJdCBz ZWVtcyAodjEpIGFuZCAodjIpCmNhbiBiZSBiYWNrZWQgYnkgdHdvIGRpZmZlcmVudCBjYWNoZSBs aW5lIGZyb20gb25lIHBhcnRpY3VsYXIgc2V0LgoKLS0tLQoKVGhlIG9ubHkgYXJjaGl0ZWN0dXJh bGx5LWd1YXJhbnRlZWQgd2F5IHRvIGludmFsaWRhdGUgYWxsIGFsaWFzZXMgb2YKYSBQQSBmcm9t IGEgVklQVCBpbnN0cnVjdGlvbiBjYWNoZSBpcyB0byBpbnZhbGlkYXRlIHRoZSBlbnRpcmUgaW5z dHJ1Y3Rpb24KY2FjaGUuCgo+PiBVbmZvcnR1bmF0ZWx5LCBJIGRpZG4ndCBmaW5kIGEgbWFjaGlu ZSB3aGVyZSB0aGUgc2l6ZSBvZiBjYWNoZSBzZXQgaXMKPj4gbGFyZ2VyIHRoYW4gcGFnZSBzaXpl LiBTbyBJIGhhZCBvbmUgZXhwZXJpbWVudCBhcyBpbmRpY2F0aW9uIGhvdyBMMQo+PiBkYXRhIGNh Y2hlIG1pc3MgYWZmZWN0cyB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZToKPj4KPj4gwqDCoMKgwqAg TDEgZGF0YSBjYWNoZSBzaXplOsKgwqDCoMKgwqDCoMKgwqDCoMKgIDMyS0IKPj4gwqDCoMKgwqAg TDEgZGF0YSBjYWNoZSBsaW5lIHNpemU6wqDCoMKgwqDCoCA2NAo+PiDCoMKgwqDCoCBOdW1iZXIg b2YgTDEgZGF0YSBjYWNoZSBzZXQ6wqAgNjQKPj4gwqDCoMKgwqAgTnVtYmVyIG9mIEwxIGRhdGEg Y2FjaGUgd2F5czogOAo+PiDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplID0gKGNhY2hlX2xpbmVfc2l6ZSkgKiAobnVtX29m X3NldHMpICogKG51bV9vZl93YXlzKQo+Pgo+PiDCoMKgwqDCoCBLZXJuZWwgY29uZmlndXJhdGlv bjoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWQV9CSVRTOsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgNDgKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBQQUdFX1NJWkU6wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDRLQgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFBNRCBIdWdlVExC IFBhZ2UgU2l6ZTogMk1CCj4+Cj4+IMKgwqDCoMKgIEV4cGVyaW1lbnQ6Cj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgSSBoYXZlIGEgcHJvZ3JhbSB0byBkbyB0aGUgZm9sbG93aW5nIHRoaW5ncyBh bmQgY2hlY2sgdGhlCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3VtZWQgdGltZSBhbmQg TDEtZGF0YS1jYWNoZS1taXNzZXMgYnkgcGVyZi4KPj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAoMSkgQWxsb2NhdGUgKG1tYXApIGEgUE1EIEh1Z2VUTEIgUGFnZSwgd2hpY2ggaXMgMk1CLgo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgyKSBSZWFkIG9uIHRoZSBtbWFwJ2QgcmVnaW9uIGlu IHN0ZXAgb2YgcGFnZSBzaXplICg0S0IpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBmb3IgOCBvciA5IHRpbWVzLiBOb3RlIDggaXMgdGhlIG51bWJlciBvZiBkYXRhIGNhY2hlCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3YXlzLgo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICgzKSBSZXBlYXQgKDIpIGZvciAxMDAwMDAwIHRpbWVzLgo+PiDCoMKgwqDCoCBSZXN1 bHQ6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGEpIHdoZW4gd2UgaGF2ZSA4IGZvciB0aGUg c3RlcHMgaW4gKDIpOgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMzcsMTAzwqDC oMKgwqDCoCBMMS1kY2FjaGUtbG9hZC1taXNzZXMKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDAuMjE3NTIyNTE1IHNlY29uZHMgdGltZSBlbGFwc2VkCj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAwLjIxNzU2NDAwMCBzZWNvbmRzIHVzZXIKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDAuMDAwMDAwMDAwIHNlY29uZHMgc3lzCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKGIpIHdoZW4gd2UgaGF2ZSA5IGZvciB0aGUgc3RlcHMgaW4gKDIpOgo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgNCw2ODcsOTMywqDCoCBMMS1kY2FjaGUtbG9h ZC1taXNzZXPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgxMjYgdGltZXMpCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAwLjI0ODEzMjEwNSBzZWNvbmRzIHRpbWUgZWxhcHNlZMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAoKzE0LjIlKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMC4yNDgyNjcwMDAgc2Vjb25kcyB1c2VyCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAwLjAwMDAwMDAwMCBzZWNvbmRzIHN5cwo+IAo+IEkgaGF2ZSBhIHZhZ3VlIGZlZWxp bmcgdGhpcyBtYXkgaGF2ZSBjb21lIHVwIGJlZm9yZSwgYnV0IGFyZSB0aGVyZSByZWFsLXdvcmxk IGFwcGxpY2F0aW9ucyB0aGF0IGhhdmUgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIG9uIHJlYWRp bmcgZnJvbSB1bmluaXRpYWxpc2VkIG1lbW9yeT8gQXMgZmFyIGFzIHN5bnRoZXRpYyBiZW5jaG1h cmtzIGdvLCBJJ20gc3VyZSB3ZSBjb3VsZCBlcXVhbGx5IGNvbWUgdXAgd2l0aCBvbmUgdGhhdCBz aG93cyBhIHJlZ3Jlc3Npb24gZHVlIHRvIHJlYWwgZGF0YSBiZWluZyBwdXNoZWQgb3V0IG9mIHRo ZSBjYWNoZSBieSBhbGwgdGhvc2UgZXh0cmEgemVyb3MgOykKClsuLi5dCgpPay4gSWYgdGhpcyB3 YXMgcHJvcG9zZWQgYmVmb3JlLCBJJ20gbm90IHN1cmUgaWYgdGhlIGxpbmsgdG8gdGhhdApwYXRj aHNldCBpcyBzdGlsbCBhdmFpbGFibGU/IDopCgpXaGVuIEkgd2FzIHNlYXJjaGluZyAibXlfemVy b19wZm4iIGluIHVwc3RyZWFtIGtlcm5lbCwgREFYIHVzZXMgdGhlCnplcm8gcGFnZXMgdG8gZmls bCB0aGUgaG9sZXMgaW4gb25lIHBhcnRpY3VsYXIgZmlsZSBpbiBkYXhfbG9hZF9ob2xlKCkuCm1t YXAoKSBvbiAvcHJvYy9rY29yZSBjb3VsZCB1c2UgemVybyBwYWdlIGVpdGhlci4KClllcywgaXQn cyBjb3JyZWN0IHRoYXQgdGhlIGRhdGEgY2FjaGUgaGFzIG1vcmUgY2hhbmNlIHRvIGJlIGZsdXNo ZWQgYnkKdGhlc2UgZXh0cmEgemVyb2VzLiBIb3dldmVyLCBpdCdzIG5vdCB3aHkgd2UgY29tcHJv bWlzZSB0aGUgcGVyZm9ybWFuY2UKb24gcmVhZGluZyB6ZXJvIHBhZ2UgYW5kIGRlcHJlc3MgaXQg aW50ZW50aW9uYWxseS4gVGhlIGNhY2hlIGxpbmVzIHdvbid0CmJlIHVzZWQgaWYgdGhlcmUgaXMg bm8gcmVhZGluZyBhY3Rpdml0aWVzIG9uIHplcm8gcGFnZSA6KQoKQ2hlZXJzLApHYXZpbgoKICAK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==