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 D49D6C433EF for ; Mon, 14 Mar 2022 23:40:25 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jkrGFYgCJXWmRgVmfy+z8OYbdH8jLkRH02NwYlLiBlQ=; b=SOC4WNsScUXYpn EVg0+JLvFxudXYF5TN5qSnWlWfndPXsMGDgeNl78IpCFNvulAlU+KpAt3svIDzbdzCNZp8PyX1vpL iLO318KJ/gvMP+05/0OrKZCEwm+/PBDSt6F4QNVZIPSvf03jgkBs49STj8UCm4ycbmRHjz4MqTWET 4Daqx4pLN1jrbzPdFQgikhWXwYsX7HwhHI3Y1/HDaVY8mUpUKDkYKNlANZ1CN3inROiQtHc9QW7Gu WkCeg7+ejMJg3aBKTHnzhlkjgLjbpwXq19L9jJAf0saJDuIs2KgmJOi0d6vlSbvfDZ76RJuHVi48Q 8TF6IoRhj6uXaNKmnEvQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nTuH7-007CfG-8J; Mon, 14 Mar 2022 23:38:53 +0000 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nTuH3-007CcX-Is for linux-arm-kernel@lists.infradead.org; Mon, 14 Mar 2022 23:38:51 +0000 Received: by mail-pj1-x1034.google.com with SMTP id gj15-20020a17090b108f00b001bef86c67c1so855287pjb.3 for ; Mon, 14 Mar 2022 16:38:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=N4obkUD8+Xm15wKaQvsDfW38K//v1SvAKl3Zz6bdAF8=; b=CX0UxRl7yteSgeLkynLXlv/zDjZEe0djx5kWxYBmDLeLdB6pkgl/LH3Rqp+2e7E+ZB oDrEhVr82GizbOvFz6pRQl5HczpIMDAxcCZJsLjAowxkvvAteGe50tTBuZuj7fGmgNyW Q6jyc5nRJkTCkHHUgYobnEtL85JD8gKf2jjLXzAT+3feDX4QxgKRN9NdpqRa+0v4xfLj cWMWDw4M8JyI26GYVxHF14mzq/i2nWjorpSCOfqY+ViN2lFH1073nNxifCCW83lurE4g pMP/VSb5E0Qy5yymmk4J6Q0RHZ3RzC4UQX1cPKpB4zBl7uEv/rghiBCVaTVPEE4Sxsun ZN2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=N4obkUD8+Xm15wKaQvsDfW38K//v1SvAKl3Zz6bdAF8=; b=cBtN0t5TOMwDh10bj/wW5C6+R+ef6QSrImHr/Vd7SNZh7Cx+QD516bllU/2mZgiiu+ xx8ugmI4TOqV2/kohFpqPsL1migHlEQKQR7RDlMcJU/L5XXbu7FuC/qa7QEtWSxbBM6R uhCme7i+BOI1en2erdqcpAePPja7CqvwLMEXU5wTgqrsvKU3pdJKq1KCpzxBDWReGk5v YyECr8DP/h+cDUA18BWdiIDr4mo7YDYhVNcK6Sa0EqDz64CxDVy6pTOyY7JgrXYrZD8E zG8YACpqvJTELbveWc5hvwsYmgOr6hAsAHqN8rQzS3RplNOTJFZjfBMNIGqyXNSjX9DU ahVQ== X-Gm-Message-State: AOAM533qFRO+92lVlHzGei0OQZfK8xdLw4MSlYGx9zadeyMPbv2RNqEs ahrs2pKJsZ8mXlvg+7yXyGg= X-Google-Smtp-Source: ABdhPJw8yRb7sdUwWB/JBXh4wMyTG4fG1xh0oPeDmrnBqnraMyyeVBHrVOHl/tNSRyifDNvg/Pj6Cw== X-Received: by 2002:a17:902:dacc:b0:152:268:27d9 with SMTP id q12-20020a170902dacc00b00152026827d9mr25586273plx.76.1647301119933; Mon, 14 Mar 2022 16:38:39 -0700 (PDT) Received: from barry-desktop.hub ([2407:7000:8942:5500:8d71:31d1:e9fc:88f3]) by smtp.gmail.com with ESMTPSA id b10-20020a056a00114a00b004f784ba5e6asm15128066pfm.17.2022.03.14.16.38.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Mar 2022 16:38:39 -0700 (PDT) From: Barry Song <21cnbao@gmail.com> To: yuzhao@google.com Cc: 21cnbao@gmail.com, Hi-Angel@yandex.ru, Michael@michaellarabel.com, ak@linux.intel.com, akpm@linux-foundation.org, aneesh.kumar@linux.ibm.com, axboe@kernel.dk, bgeffon@google.com, catalin.marinas@arm.com, corbet@lwn.net, d@chaos-reins.com, dave.hansen@linux.intel.com, djbyrne@mtu.edu, hannes@cmpxchg.org, hdanton@sina.com, heftig@archlinux.org, holger@applied-asynchrony.com, jsbarnes@google.com, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mgorman@suse.de, mhocko@kernel.org, oleksandr@natalenko.name, page-reclaim@google.com, riel@surriel.com, rppt@kernel.org, sofia.trinh@edi.works, steven@liquorix.net, suleiman@google.com, szhai2@cs.rochester.edu, torvalds@linux-foundation.org, vbabka@suse.cz, will@kernel.org, willy@infradead.org, x86@kernel.org, ying.huang@intel.com Subject: Re: [PATCH v7 04/12] mm: multigenerational LRU: groundwork Date: Tue, 15 Mar 2022 12:38:12 +1300 Message-Id: <20220314233812.9011-1-21cnbao@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220314_163849_638565_1D38EDF2 X-CRM114-Status: GOOD ( 60.41 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCBNYXIgMTUsIDIwMjIgYXQgNTo0NSBBTSBZdSBaaGFvIDx5dXpoYW9AZ29vZ2xlLmNv bT4gd3JvdGU6Cj4KPiBPbiBNb24sIE1hciAxNCwgMjAyMiBhdCA1OjEyIEFNIEJhcnJ5IFNvbmcg PDIxY25iYW9AZ21haWwuY29tPiB3cm90ZToKPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g V2UgdXNlZCB0byBwdXQgYSBmYXVsdGVkIGZpbGUgcGFnZSBpbiBpbmFjdGl2ZSwgaWYgd2UgYWNj ZXNzIGl0IGEKPiA+ID4gPiA+ID4gPiBzZWNvbmQgdGltZSwgaXQgY2FuIGJlIHByb21vdGVkCj4g PiA+ID4gPiA+ID4gdG8gYWN0aXZlLiB0aGVuIGluIHJlY2VudCB5ZWFycywgd2UgaGF2ZSBhbHNv IGFwcGxpZWQgdGhpcyB0byBhbm9uCj4gPiA+ID4gPiA+ID4gcGFnZXMgd2hpbGUga2VybmVsIGFk ZHMKPiA+ID4gPiA+ID4gPiB3b3JraW5nc2V0IHByb3RlY3Rpb24gZm9yIGFub24gcGFnZXMuIHNv IGJhc2ljYWxseSBib3RoIGFub24gYW5kIGZpbGUKPiA+ID4gPiA+ID4gPiBwYWdlcyBnbyBpbnRv IHRoZSBpbmFjdGl2ZQo+ID4gPiA+ID4gPiA+IGxpc3QgZm9yIHRoZSAxc3QgdGltZSwgaWYgd2Ug YWNjZXNzIGl0IGZvciB0aGUgc2Vjb25kIHRpbWUsIHRoZXkgZ28gdG8KPiA+ID4gPiA+ID4gPiB0 aGUgYWN0aXZlIGxpc3QuIGlmIHdlIGRvbid0IGFjY2Vzcwo+ID4gPiA+ID4gPiA+IGl0IGFueSBt b3JlLCB0aGV5IGFyZSBsaWtlbHkgdG8gYmUgcmVjbGFpbWVkIGFzIHRoZXkgYXJlIGluYWN0aXZl Lgo+ID4gPiA+ID4gPiA+IHdlIGRvIGhhdmUgc29tZSBzcGVjaWFsIGZhc3RwYXRoIGZvciBjb2Rl IHNlY3Rpb24sIGV4ZWN1dGFibGUgZmlsZQo+ID4gPiA+ID4gPiA+IHBhZ2VzIGFyZSBrZXB0IG9u IGFjdGl2ZSBsaXN0Cj4gPiA+ID4gPiA+ID4gYXMgbG9uZyBhcyB0aGV5IGFyZSBhY2Nlc3NlZC4K PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gWWVzLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IHNv IGFsbCBvZiB0aGUgYWJvdmUgY29uY2VybnMgYXJlIGFjdHVhbGx5IG5vdCB0aGF0IGNvcnJlY3Q/ Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFRoZXkgYXJlIHZhbGlkIGNvbmNlcm5zIGJ1dCBJIGRv bid0IGtub3cgYW55IHBvcHVsYXIgd29ya2xvYWRzIHRoYXQKPiA+ID4gPiA+ID4gY2FyZSBhYm91 dCB0aGVtLgo+ID4gPiA+ID4KPiA+ID4gPiA+IEhpIFl1LAo+ID4gPiA+ID4gaGVyZSB3ZSBjYW4g Z2V0IGEgd29ya2xvYWQgaW4gS2ltJ3MgcGF0Y2hzZXQgd2hpbGUgaGUgYWRkZWQgd29ya2luZ3Nl dAo+ID4gPiA+ID4gcHJvdGVjdGlvbgo+ID4gPiA+ID4gZm9yIGFub24gcGFnZXM6Cj4gPiA+ID4g PiBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtbW0vY292ZXIvMTU4 MTQwMTk5My0yMDA0MS0xLWdpdC1zZW5kLWVtYWlsLWlhbWpvb25zb28ua2ltQGxnZS5jb20vCj4g PiA+ID4KPiA+ID4gPiBUaGFua3MuIEkgd291bGRuJ3QgY2FsbCB0aGF0IGEgd29ya2xvYWQgYmVj YXVzZSBpdCdzIG5vdCBhIHJlYWwKPiA+ID4gPiBhcHBsaWNhdGlvbi4gQnkgcG9wdWxhciB3b3Jr bG9hZHMsIEkgbWVhbiBhcHBsaWNhdGlvbnMgdGhhdCB0aGUKPiA+ID4gPiBtYWpvcml0eSBvZiBw ZW9wbGUgYWN0dWFsbHkgcnVuIG9uIHBob25lcywgaW4gY2xvdWQsIGV0Yy4KPiA+ID4gPgo+ID4g PiA+ID4gYW5vbiBwYWdlcyB1c2VkIHRvIGdvIHRvIGFjdGl2ZSByYXRoZXIgdGhhbiBpbmFjdGl2 ZSwgYnV0IGtpbSdzIHBhdGNoc2V0Cj4gPiA+ID4gPiBtb3ZlZCB0byB1c2UgaW5hY3RpdmUgZmly c3QuIHRoZW4gb25seSBhZnRlciB0aGUgYW5vbiBwYWdlIGlzIGFjY2Vzc2VkCj4gPiA+ID4gPiBz ZWNvbmQgdGltZSwgaXQgY2FuIG1vdmUgdG8gYWN0aXZlLgo+ID4gPiA+Cj4gPiA+ID4gWWVzLiBU byBjbGFyaWZ5LCB0aGUgQS1iaXQgZG9lc24ndCByZWFsbHkgbWVhbiB0aGUgZmlyc3Qgb3Igc2Vj b25kCj4gPiA+ID4gYWNjZXNzLiBJdCBjYW4gYmUgbWFueSBhY2Nlc3NlcyBlYWNoIHRpbWUgaXQn cyBzZXQuCj4gPiA+ID4KPiA+ID4gPiA+ICJJbiBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBuZXds eSBjcmVhdGVkIG9yIHN3YXAtaW4gYW5vbnltb3VzIHBhZ2UgaXMKPiA+ID4gPiA+Cj4gPiA+ID4g PiBzdGFydGVkIG9uIHRoZSBhY3RpdmUgbGlzdC4gR3Jvd2luZyB0aGUgYWN0aXZlIGxpc3QgcmVz dWx0cyBpbiByZWJhbGFuY2luZwo+ID4gPiA+ID4gYWN0aXZlL2luYWN0aXZlIGxpc3Qgc28gb2xk IHBhZ2VzIG9uIHRoZSBhY3RpdmUgbGlzdCBhcmUgZGVtb3RlZCB0byB0aGUKPiA+ID4gPiA+IGlu YWN0aXZlIGxpc3QuIEhlbmNlLCBob3QgcGFnZSBvbiB0aGUgYWN0aXZlIGxpc3QgaXNuJ3QgcHJv dGVjdGVkIGF0IGFsbC4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBGb2xsb3dpbmcgaXMgYW4gZXhhbXBs ZSBvZiB0aGlzIHNpdHVhdGlvbi4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBBc3N1bWUgdGhhdCA1MCBo b3QgcGFnZXMgb24gYWN0aXZlIGxpc3QgYW5kIHN5c3RlbSBjYW4gY29udGFpbiB0b3RhbAo+ID4g PiA+ID4gMTAwIHBhZ2VzLiBOdW1iZXJzIGRlbm90ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIG9uIGFj dGl2ZS9pbmFjdGl2ZQo+ID4gPiA+ID4gbGlzdCAoYWN0aXZlIHwgaW5hY3RpdmUpLiAoaCkgc3Rh bmRzIGZvciBob3QgcGFnZXMgYW5kICh1bykgc3RhbmRzIGZvcgo+ID4gPiA+ID4gdXNlZC1vbmNl IHBhZ2VzLgo+ID4gPiA+ID4KPiA+ID4gPiA+IDEuIDUwIGhvdCBwYWdlcyBvbiBhY3RpdmUgbGlz dAo+ID4gPiA+ID4gNTAoaCkgfCAwCj4gPiA+ID4gPgo+ID4gPiA+ID4gMi4gd29ya2xvYWQ6IDUw IG5ld2x5IGNyZWF0ZWQgKHVzZWQtb25jZSkgcGFnZXMKPiA+ID4gPiA+IDUwKHVvKSB8IDUwKGgp Cj4gPiA+ID4gPgo+ID4gPiA+ID4gMy4gd29ya2xvYWQ6IGFub3RoZXIgNTAgbmV3bHkgY3JlYXRl ZCAodXNlZC1vbmNlKSBwYWdlcwo+ID4gPiA+ID4gNTAodW8pIHwgNTAodW8pLCBzd2FwLW91dCA1 MChoKQo+ID4gPiA+ID4KPiA+ID4gPiA+IEFzIHdlIGNhbiBzZWUsIGhvdCBwYWdlcyBhcmUgc3dh cHBlZC1vdXQgYW5kIGl0IHdvdWxkIGNhdXNlIHN3YXAtaW4gbGF0ZXIuIgo+ID4gPiA+ID4KPiA+ ID4gPiA+IElzIE1HTFJVIGFibGUgdG8gYXZvaWQgdGhlIHN3YXAtb3V0IG9mIHRoZSA1MCBob3Qg cGFnZXM/Cj4gPiA+ID4KPiA+ID4gPiBJIHRoaW5rIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoeSB0 aGUgNTAgaG90IHBhZ2VzIGNhbiBiZSBtb3ZlZCB0byB0aGUKPiA+ID4gPiBpbmFjdGl2ZSBsaXN0 LiBJZiB0aGV5IGFyZSByZWFsbHkgaG90LCB0aGUgQS1iaXQgc2hvdWxkIHByb3RlY3QgdGhlbS4K PiA+ID4KPiA+ID4gVGhpcyBpcyBhIGdvb2QgcXVlc3Rpb24uCj4gPiA+Cj4gPiA+IEkgZ3Vlc3Mg aXQgwqBpcyBwcm9iYWJseSBiZWNhdXNlIHRoZSBjdXJyZW50IGxydSBpcyB0cnlpbmcgdG8gbWFp bnRhaW4gYSBiYWxhbmNlCj4gPiA+IGJldHdlZW4gdGhlIHNpemVzIG9mIGFjdGl2ZSBhbmQgaW5h Y3RpdmUgbGlzdHMuIFRodXMsIGl0IGNhbiBzaHJpbmsgYWN0aXZlIGxpc3QKPiA+ID4gZXZlbiB0 aG91Z2ggcGFnZXMgbWlnaHQgYmUgc3RpbGwgImhvdCIgYnV0IG5vdCB0aGUgcmVjZW50bHkgYWNj ZXNzZWQgb25lcy4KPiA+ID4KPiA+ID4gMS4gNTAgaG90IHBhZ2VzIG9uIGFjdGl2ZSBsaXN0Cj4g PiA+IDUwKGgpIHwgMAo+ID4gPgo+ID4gPiAyLiB3b3JrbG9hZDogNTAgbmV3bHkgY3JlYXRlZCAo dXNlZC1vbmNlKSBwYWdlcwo+ID4gPiA1MCh1bykgfCA1MChoKQo+ID4gPgo+ID4gPiAzLiB3b3Jr bG9hZDogYW5vdGhlciA1MCBuZXdseSBjcmVhdGVkICh1c2VkLW9uY2UpIHBhZ2VzCj4gPiA+IDUw KHVvKSB8IDUwKHVvKSwgc3dhcC1vdXQgNTAoaCkKPiA+ID4KPiA+ID4gdGhlIG9sZCBrZXJuZWwg d2l0aG91dCBhbm9uIHdvcmtpbmdzZXQgcHJvdGVjdGlvbiBwdXQgd29ya2xvYWQgMiBvbiBhY3Rp dmUsIHNvCj4gPiA+IHB1c2hlZCA1MCBob3QgcGFnZXMgZnJvbSBhY3RpdmUgdG8gaW5hY3RpdmUu IHdvcmtsb2FkIDMgd291bGQgZnVydGhlciBjb250cmlidXRlCj4gPiA+IHRvIGV2aWN0IHRoZSA1 MCBob3QgcGFnZXMuCj4gPiA+Cj4gPiA+IGl0IHNlZW1zIG1nbHJ1IGRvZXNuJ3QgZGVtb3RlIHBh Z2VzIGZyb20gdGhlIHlvdW5nZXN0IGdlbmVyYXRpb24gdG8gb2xkZXIKPiA+ID4gZ2VuZXJhdGlv biBvbmx5IGluIG9yZGVyIHRvIGJhbGFuY2UgdGhlIGxpc3Qgc2l6ZT8gc28gbWdscnUgaXMgcHJv YmFibHkgc2FmZQo+ID4gPiBpbiB0aGVzZSBjYXNlcy4KPiA+ID4KPiA+ID4gSSB3aWxsIHJ1biBz b21lIHRlc3RzIG1lbnRpb25lZCBpbiBLaW0ncyBwYXRjaHNldCBhbmQgcmVwb3J0IHRoZSByZXN1 bHQgdG8geW91Cj4gPiA+IGFmdGVyd2FyZHMuCj4gPiA+Cj4gPgo+ID4gSGkgWXUsCj4gPiBJIGRp ZCBmaW5kIHB1dHRpbmcgZmF1bHRlZCBwYWdlcyB0byB0aGUgeW91bmdlc3QgZ2VuZXJhdGlvbiBs ZWFkIHRvIHNvbWUKPiA+IHJlZ3Jlc3Npb24gaW4gdGhlIGNhc2UgZWJpenp5IEtpbSdzIHBhdGNo c2V0IG1lbnRpb25lZCB3aGlsZSBoZSB0cmllZAo+ID4gdG8gc3VwcG9ydCB3b3JraW5nc2V0IHBy b3RlY3Rpb24gZm9yIGFub24gcGFnZXMuCj4gPiBpIGRpZCBhIGxpdHRsZSBiaXQgbW9kaWZpY2F0 aW9uIGZvciByYW5kX2NodW5rKCkgd2hpY2ggaXMgcHJvYmFibHkgc2ltaWxhcgo+ID4gd2l0aCB0 aGUgbW9kaWZjYXRpb24oKSBLaW0gbWVudGlvbmVkIGluIGhpcyBwYXRjaHNldC4gVGhlIG1vZGlm aWNhdGlvbgo+ID4gY2FuIGJlIGZvdW5kIGhlcmU6Cj4gPiBodHRwczovL2dpdGh1Yi5jb20vMjFj bmJhby9sdHAvY29tbWl0LzcxMzQ0MTNkNzQ3YmZhOWVmCj4gPgo+ID4gVGhlIHRlc3QgZW52IGlz IGEgeDg2IG1hY2hpbmUgaW4gd2hpY2ggSSBoYXZlIHNldCBtZW1vcnkgc2l6ZSB0byAyLjVHQiBh bmQKPiA+IHNldCB6UkFNIHRvIDJHQiBhbmQgZGlzYWJsZWQgZXh0ZXJuYWwgZGlzayBzd2FwLgo+ ID4KPiA+IHdpdGggdGhlIHZhbmlsbGEga2VybmVsOgo+ID4gXHRpbWUgLXYgLi9hLm91dCAtdnYg LXQgNCAtcyAyMDk3MTUyMDAgLVMgMjAwMDAwCj4gPgo+ID4gc28gd2UgaGF2ZSAxMCBjaHVua3Mg YW5kIDQgdGhyZWFkcywgZWFjaCB0cnVuayBpcyAyMDk3MTUyMDAoMjAwTUIpCj4gPgo+ID4gdHlw aWNhbCByZXN1bHQ6Cj4gPiDCoCDCoCDCoCDCoCBDb21tYW5kIGJlaW5nIHRpbWVkOiAiLi9hLm91 dCAtdnYgLXQgNCAtcyAyMDk3MTUyMDAgLVMgMjAwMDAwIgo+ID4gwqAgwqAgwqAgwqAgVXNlciB0 aW1lIChzZWNvbmRzKTogMzYuMTkKPiA+IMKgIMKgIMKgIMKgIFN5c3RlbSB0aW1lIChzZWNvbmRz KTogMjI5LjcyCj4gPiDCoCDCoCDCoCDCoCBQZXJjZW50IG9mIENQVSB0aGlzIGpvYiBnb3Q6IDM3 MSUKPiA+IMKgIMKgIMKgIMKgIEVsYXBzZWQgKHdhbGwgY2xvY2spIHRpbWUgKGg6bW06c3Mgb3Ig bTpzcyk6IDE6MTEuNTkKPiA+IMKgIMKgIMKgIMKgIEF2ZXJhZ2Ugc2hhcmVkIHRleHQgc2l6ZSAo a2J5dGVzKTogMAo+ID4gwqAgwqAgwqAgwqAgQXZlcmFnZSB1bnNoYXJlZCBkYXRhIHNpemUgKGti eXRlcyk6IDAKPiA+IMKgIMKgIMKgIMKgIEF2ZXJhZ2Ugc3RhY2sgc2l6ZSAoa2J5dGVzKTogMAo+ ID4gwqAgwqAgwqAgwqAgQXZlcmFnZSB0b3RhbCBzaXplIChrYnl0ZXMpOiAwCj4gPiDCoCDCoCDC oCDCoCBNYXhpbXVtIHJlc2lkZW50IHNldCBzaXplIChrYnl0ZXMpOiAyMTY2MTk2Cj4gPiDCoCDC oCDCoCDCoCBBdmVyYWdlIHJlc2lkZW50IHNldCBzaXplIChrYnl0ZXMpOiAwCj4gPiDCoCDCoCDC oCDCoCBNYWpvciAocmVxdWlyaW5nIEkvTykgcGFnZSBmYXVsdHM6IDk5OTAxMjgKPiA+IMKgIMKg IMKgIMKgIE1pbm9yIChyZWNsYWltaW5nIGEgZnJhbWUpIHBhZ2UgZmF1bHRzOiAzMzMxNTk0NQo+ ID4gwqAgwqAgwqAgwqAgVm9sdW50YXJ5IGNvbnRleHQgc3dpdGNoZXM6IDU5MTQ0Cj4gPiDCoCDC oCDCoCDCoCBJbnZvbHVudGFyeSBjb250ZXh0IHN3aXRjaGVzOiAxNjc3NTQKPiA+IMKgIMKgIMKg IMKgIFN3YXBzOiAwCj4gPiDCoCDCoCDCoCDCoCBGaWxlIHN5c3RlbSBpbnB1dHM6IDI3NjAKPiA+ IMKgIMKgIMKgIMKgIEZpbGUgc3lzdGVtIG91dHB1dHM6IDgKPiA+IMKgIMKgIMKgIMKgIFNvY2tl dCBtZXNzYWdlcyBzZW50OiAwCj4gPiDCoCDCoCDCoCDCoCBTb2NrZXQgbWVzc2FnZXMgcmVjZWl2 ZWQ6IDAKPiA+IMKgIMKgIMKgIMKgIFNpZ25hbHMgZGVsaXZlcmVkOiAwCj4gPiDCoCDCoCDCoCDC oCBQYWdlIHNpemUgKGJ5dGVzKTogNDA5Ngo+ID4gwqAgwqAgwqAgwqAgRXhpdCBzdGF0dXM6IDAK PiA+Cj4gPiB3aXRoIGdlbl9scnUgYW5kIGxydV9nZW4vZW5hYmxlZD0weDM6Cj4gPiB0eXBpY2Fs IHJlc3VsdDoKPiA+IENvbW1hbmQgYmVpbmcgdGltZWQ6ICIuL2Eub3V0IC12diAtdCA0IC1zIDIw OTcxNTIwMCAtUyAyMDAwMDAiCj4gPiBVc2VyIHRpbWUgKHNlY29uZHMpOiAzNi4zNAo+ID4gU3lz dGVtIHRpbWUgKHNlY29uZHMpOiAyNzYuMDcKPiA+IFBlcmNlbnQgb2YgQ1BVIHRoaXMgam9iIGdv dDogMzc4JQo+ID4gRWxhcHNlZCAod2FsbCBjbG9jaykgdGltZSAoaDptbTpzcyBvciBtOnNzKTog MToyMi40Ngo+ID4gwqAgwqAgwqAgwqAgwqAgwqAqKioqIDE1JSB0aW1lICsKPiA+IEF2ZXJhZ2Ug c2hhcmVkIHRleHQgc2l6ZSAoa2J5dGVzKTogMAo+ID4gQXZlcmFnZSB1bnNoYXJlZCBkYXRhIHNp emUgKGtieXRlcyk6IDAKPiA+IEF2ZXJhZ2Ugc3RhY2sgc2l6ZSAoa2J5dGVzKTogMAo+ID4gQXZl cmFnZSB0b3RhbCBzaXplIChrYnl0ZXMpOiAwCj4gPiBNYXhpbXVtIHJlc2lkZW50IHNldCBzaXpl IChrYnl0ZXMpOiAyMTY4MTIwCj4gPiBBdmVyYWdlIHJlc2lkZW50IHNldCBzaXplIChrYnl0ZXMp OiAwCj4gPiBNYWpvciAocmVxdWlyaW5nIEkvTykgcGFnZSBmYXVsdHM6IDEzMzYyODEwCj4gPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCoqKioqIDMwJSBwYWdlIGZhdWx0ICsKPiA+IE1pbm9yIChyZWNs YWltaW5nIGEgZnJhbWUpIHBhZ2UgZmF1bHRzOiAzMzM5NDYxNwo+ID4gVm9sdW50YXJ5IGNvbnRl eHQgc3dpdGNoZXM6IDU1MjE2Cj4gPiBJbnZvbHVudGFyeSBjb250ZXh0IHN3aXRjaGVzOiAxMzcy MjAKPiA+IFN3YXBzOiAwCj4gPiBGaWxlIHN5c3RlbSBpbnB1dHM6IDQwODgKPiA+IEZpbGUgc3lz dGVtIG91dHB1dHM6IDgKPiA+IFNvY2tldCBtZXNzYWdlcyBzZW50OiAwCj4gPiBTb2NrZXQgbWVz c2FnZXMgcmVjZWl2ZWQ6IDAKPiA+IFNpZ25hbHMgZGVsaXZlcmVkOiAwCj4gPiBQYWdlIHNpemUg KGJ5dGVzKTogNDA5Ngo+ID4gRXhpdCBzdGF0dXM6IDAKPiA+Cj4gPiB3aXRoIGdlbl9scnUgYW5k IGxydV9nZW4vZW5hYmxlZD0weDc6Cj4gPiB0eXBpY2FsIHJlc3VsdDoKPiA+IENvbW1hbmQgYmVp bmcgdGltZWQ6ICIuL2Eub3V0IC12diAtdCA0IC1zIDIwOTcxNTIwMCAtUyAyMDAwMDAiCj4gPiBV c2VyIHRpbWUgKHNlY29uZHMpOiAzNi4xMwo+ID4gU3lzdGVtIHRpbWUgKHNlY29uZHMpOiAyNTEu NzEKPiA+IFBlcmNlbnQgb2YgQ1BVIHRoaXMgam9iIGdvdDogMzc4JQo+ID4gRWxhcHNlZCAod2Fs bCBjbG9jaykgdGltZSAoaDptbTpzcyBvciBtOnNzKTogMToxNi4wMAo+ID4gwqAgwqAgwqAgwqAg wqAqKioqKmJldHRlciB0aGFuIGVuYWJsZWQ9MHgzLCB3b3JzZSB0aGFuIHZhbmlsbGEKPiA+IEF2 ZXJhZ2Ugc2hhcmVkIHRleHQgc2l6ZSAoa2J5dGVzKTogMAo+ID4gQXZlcmFnZSB1bnNoYXJlZCBk YXRhIHNpemUgKGtieXRlcyk6IDAKPiA+IEF2ZXJhZ2Ugc3RhY2sgc2l6ZSAoa2J5dGVzKTogMAo+ ID4gQXZlcmFnZSB0b3RhbCBzaXplIChrYnl0ZXMpOiAwCj4gPiBNYXhpbXVtIHJlc2lkZW50IHNl dCBzaXplIChrYnl0ZXMpOiAyMTIwOTg4Cj4gPiBBdmVyYWdlIHJlc2lkZW50IHNldCBzaXplIChr Ynl0ZXMpOiAwCj4gPiBNYWpvciAocmVxdWlyaW5nIEkvTykgcGFnZSBmYXVsdHM6IDEyNzA2NTEy Cj4gPiBNaW5vciAocmVjbGFpbWluZyBhIGZyYW1lKSBwYWdlIGZhdWx0czogMzM0MjIyNDMKPiA+ IFZvbHVudGFyeSBjb250ZXh0IHN3aXRjaGVzOiA0OTQ4NQo+ID4gSW52b2x1bnRhcnkgY29udGV4 dCBzd2l0Y2hlczogMTI2NzY1Cj4gPiBTd2FwczogMAo+ID4gRmlsZSBzeXN0ZW0gaW5wdXRzOiAy OTc2Cj4gPiBGaWxlIHN5c3RlbSBvdXRwdXRzOiA4Cj4gPiBTb2NrZXQgbWVzc2FnZXMgc2VudDog MAo+ID4gU29ja2V0IG1lc3NhZ2VzIHJlY2VpdmVkOiAwCj4gPiBTaWduYWxzIGRlbGl2ZXJlZDog MAo+ID4gUGFnZSBzaXplIChieXRlcyk6IDQwOTYKPiA+IEV4aXQgc3RhdHVzOiAwCj4gPgo+ID4g SSBjYW4gYWxzbyByZXByb2R1Y2UgdGhlIHByb2JsZW0gb24gYXJtNjQuCj4gPgo+ID4gSSBhbSBu b3Qgc2F5aW5nIHRoaXMgaXMgZ29pbmcgdG8gYmxvY2sgbWdscnUgZnJvbSBiZWluZyBtYWlubGlu ZWQuIEJ1dCDCoEkgYW0KPiA+IHN0aWxsIGN1cmlvdXMgaWYgdGhpcyBpcyBhbiBpc3N1ZSB3b3J0 aCBiZWluZyBhZGRyZXNzZWQgc29tZWhvdyBpbiBtZ2xydS4KPgo+IFlvdSd2ZSBtaXNzZWQgc29t ZXRoaW5nIHZlcnkgaW1wb3J0YW50OiAqdGhvdWdocHV0KiA6KQo+Cgpub29wIDotKQppbiB0aGUg dGVzdCBjYXNlLCB0aGVyZSBhcmUgNCB0aHJlYWRzLiB0aGV5IGFyZSBzZWFyY2hpbmcgYSBrZXkg aW4gMTAgY2h1bmtzCm9mIG1lbW9yeS4gZm9yIGVhY2ggY2h1bmssIHRoZSBzaXplIGlzIDIwME1C LgphICJyYW5kb20iIGNodW5rIGluZGV4IGlzIHJldHVybmVkIGZvciB0aG9zZSB0aHJlYWRzIHRv IHNlYXJjaC4gYnV0IGNodW5rMgppcyB0aGUgaG90dGVzdCwgYW5kIGNodW5rMywgNywgNCBhcmUg cmVsYXRpdmVseSBob3R0ZXIgdGhhbiBvdGhlcnMuCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50 IHJhbmRfY2h1bmsodm9pZCkKewoJLyogc2ltdWxhdGUgaG90IGFuZCBjb2xkIGNodW5rICovCgl1 bnNpZ25lZCBpbnQgcmFuZFsxNl0gPSB7MiwgMiwgMywgNCwgNSwgMiwgNiwgNywgOSwgMiwgOCwg MywgNywgMiwgMiwgNH07CglzdGF0aWMgaW50IG5yID0gMDsKCXJldHVybiByYW5kW25yKyslMTZd Owp9CgplYWNoIHRocmVhZCBkb2VzIHNlYXJjaF9tZW0oKToKc3RhdGljIHVuc2lnbmVkIGludCBz ZWFyY2hfbWVtKHZvaWQpCnsKCXJlY29yZF90IGtleSwgKmZvdW5kOwoJcmVjb3JkX3QgKnNyYywg KmNvcHk7Cgl1bnNpZ25lZCBpbnQgY2h1bms7CglzaXplX3QgY29weV9zaXplID0gY2h1bmtfc2l6 ZTsKCXVuc2lnbmVkIGludCBpOwoJdW5zaWduZWQgaW50IHN0YXRlID0gMDsKCgkvKiBydW4gMTYw IGxvb3BzIG9yIHRpbGwgdGltZW91dCAqLwoJZm9yIChpID0gMDsgdGhyZWFkc19nbyA9PSAxICYm IGkgPCAxNjA7IGkrKykgewoJCWNodW5rID0gcmFuZF9jaHVuaygpOwoJCXNyYyA9IG1lbVtjaHVu a107CgkJLi4uCgkJY29weSA9IGFsbG9jX21lbShjb3B5X3NpemUpOwoJCS4uLgoJCW1lbWNweShj b3B5LCBzcmMsIGNvcHlfc2l6ZSk7CgoJCWtleSA9IHJhbmRfbnVtKGNvcHlfc2l6ZSAvIHJlY29y ZF9zaXplLCAmc3RhdGUpOwoKCQlic2VhcmNoKCZrZXksIGNvcHksIGNvcHlfc2l6ZSAvIHJlY29y ZF9zaXplLAoJCQlyZWNvcmRfc2l6ZSwgY29tcGFyZSk7CgoJCQkvKiBCZWxvdyBjaGVjayBpcyBt YWlubHkgZm9yIG1lbW9yeSBjb3JydXB0aW9uIG9yIG90aGVyIGJ1ZyAqLwoJCQlpZiAoZm91bmQg PT0gTlVMTCkgewoJCQkJZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBmaW5kIGtleSAlemRcbiIs IGtleSk7CgkJCQlleGl0KDEpOwoJCQl9CgkJfQkJLyogZW5kIGlmICEgdG91Y2hfcGFnZXMgKi8K CgkJZnJlZV9tZW0oY29weSwgY29weV9zaXplKTsKCX0KCglyZXR1cm4gKGkpOwp9CgplYWNoIHRo cmVhZCBwaWNrcyB1cCBhIGNodW5rLCB0aGVuIGFsbG9jYXRlcyBhIG5ldyBtZW1vcnkgYW5kIGNv cGllcyB0aGUgY2h1bmsgdG8gdGhlCm5ldyBhbGxvY2F0ZWQgbWVtb3J5LCBhbmQgc2VhcmNoZXMg YSBrZXkgaW4gdGhlIGFsbG9jYXRlZCBtZW1vcnkuCgphcyBpIGhhdmUgc2V0IHRpbWUgdG8gcmF0 aGVyIGJpZyBieSAtUywgc28gZWFjaCB0aHJlYWQgYWN0dWFsbHkgZXhpdHMgd2hpbGUgaXQKY29t cGxldGVzIDE2MCBsb29wcy4KJCBcdGltZSAtdiAuL2ViaXp6eSAtdCA0IC1zICQoKDIwMCoxMDI0 KjEwMjQpKSAtUyA2MDAwMDAwCgpzbyB0aGUgb25lIHdobyBmaW5pc2hlcyB0aGUgd2hvbGUgam9i cyBlYXJsaWVyIHdpbnMgaW4gdGhyb3VnaHB1dCBhcwp3ZWxsLgoKPiBEb2xsYXJzIHRvIGRvdWdo bnV0cyB0aGVyZSB3YXMgYSBsYXJnZSBpbmNyZWFzZSBpbiB0aHJvdWdocHV0IC0tIEkKPiBoYXZl bid0IHRyaWVkIHRoaXMgYmVuY2htYXJrIGJ1dCBJJ3ZlIHNlZW4gbWFueSByZXBvcnRzIHNpbWls YXIgdG8KPiB0aGlzIG9uZS4KCkkgaGF2ZSBubyBkb3VidCBhYm91dCB0aGlzLiBJIGFtIGp1c3Qg dHJ5aW5nIHRvIGZpZ3VyZSBvdXQgc29tZSBwb3RlbnRpYWwgd2UgY2FuCmZ1cnRoZXIgYWNoaWV2 ZSBpbiBtZ2xydS4KClRoYW5rcywKQmFycnkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK