From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 86D7F606A31B for ; Thu, 5 Nov 2026 11:31:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=tpzmVTqw; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=d02zMs42 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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=zFF01FETxebHJVIirQBEAYQeP7amKYdEytMSQV93veI=; b=tpzmVTqwQYZmE2wteIbZoHW2OL PoOlomnPU50/yo4S/mc6aa0Es//FPVBQaQwxQLJA57SBYhAveNMLvpevSWWkybEYKPTyMkAG/e1nK bt1LvbfnbA477oZMseof6H0EW4dNleQS9I+woYpicBT2WlurmhV/ZYAt/RfxHj//a4A5djJjGmMx1 mLqGwbAq6KVHfNBJ9b6Pnhb4Sb6dPhd7Cpwb2mHtbZaBMVvzvspE7nQ6egzpTh3sEMV2kC/MV9WEL SfO28HGuHaUxuwXjO9lt8Ubua3sdwkOEaqUvDfCkzhNFXcgY8f3NNj55aZBg99nw/kQKrv/bI0Uor DjDZY2AQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xOvgn-00000008es7-29oI; Thu, 05 Nov 2026 11:31:29 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xOvgc-00000008er6-0l1U for linux-mtd@lists.infradead.org; Thu, 05 Nov 2026 11:31:21 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id E9FE1438CD; Thu, 5 Nov 2026 11:31:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 085B61F00919; Thu, 5 Nov 2026 11:31:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793878277; bh=Madmrg/Uo0DX2tmp+oGazWf0+/gvovwqd3iWeTOJMDE=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=d02zMs42ob4rDW1+Ts6OKAHUxyjDIfl6nK51TVtG5Ao5pn8JpDyObXh4VpPIocqA6 G63thMqu0ECKypiSoMNo1K33pPrkFtwheQ1KODLSmD71VpakkiAS5D/61pFRZyzl/6 38f5p7dXh4tjsZYabmGqWcO+hMVrdTHcSquUbInIlbk9XbEoeS/YCayFFZBiAurpvB VBl78FPbtmhsQhF2WLKf1B8zU4r0e2DJQYugqA7hZag+aNJLE3Q51UHKYBX64K0c5E zRJeiJXfyeEXTKe4buhbEa3N2BCrhINY1MKYkqOkZExfyaL2KE02mYkH0ojC0dZtDJ QxA7NShwpvFUA== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v11 16/19] mtd: spinand: negotiate optimal controller operating point before dirmap creation To: "Santhosh Kumar K" , broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, pratyush@kernel.org, mwalle@kernel.org, takahiro.kuwano@infineon.com Cc: devicetree@vger.kernel.org, linux-mtd@lists.infradead.org, praneeth@ti.com, sebin.francis@ti.com, u-kumar1@ti.com, srikanth.boyapally@amd.com, m-shah@ti.com In-Reply-To: <20261105105832.2134313-17-s-k6@ti.com> References: <20261105105832.2134313-1-s-k6@ti.com> <20261105105832.2134313-17-s-k6@ti.com> Date: Thu, 05 Nov 2026 11:31:16 +0000 X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NSBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIG10ZDogc3BpbmFuZDog c3BpbmFuZF9jcmVhdGVfZGlybWFwKCkgb3ZlcndyaXRlcyBwZXItb3AgbWF4X2ZyZXEgbGltaXRz Ci0gW0hpZ2hdIG10ZDogc3BpbmFuZDogbWlzc2luZyBjb25maWd1cmVfY2hpcCgpIGNhbGwgaW4g c3BpbmFuZF90cnlfcmFua2VkX3ZhcmlhbnQoKQotIFtIaWdoXSBtdGQ6IHNwaW5hbmQ6IHNwaW5h bmRfb3BfZmluZF9iZXN0X3ZhcmlhbnQoKSByYW5rcyBhbmQgb3ZlcmNsb2NrcyBsb3ctZnJlcSBv cHMKLSBbTWVkaXVtXSBtdGQ6IHNwaW5hbmQ6IGJyb2tlbiBjb250X3JlYWRfY2FjaGUgbWF0Y2hp bmcgaW4gc3BpbmFuZF9vcF9zaGFwZV9tYXRjaGVzKCkKLSBbTWVkaXVtXSBtdGQ6IHNwaW5hbmQ6 IG1pc3NpbmcgY29udF9yZWFkX2NhY2hlIHNoYXBlIGNoZWNrIG9uIGluaXRpYWwgdHVuaW5nIHN1 Y2Nlc3MKLS0KCmNvbW1pdCA4NzMzYjkyZThkNjdhMzA0ZDkwMWM4ZWNlMzM5ZDJmZTRjNTRmN2Fk CkF1dGhvcjogU2FudGhvc2ggS3VtYXIgSyA8cy1rNkB0aS5jb20+CgptdGQ6IHNwaW5hbmQ6IG5l Z290aWF0ZSBvcHRpbWFsIGNvbnRyb2xsZXIgb3BlcmF0aW5nIHBvaW50IGJlZm9yZSBkaXJtYXAg Y3JlYXRpb24KClRoaXMgY29tbWl0IGludHJvZHVjZXMgc3BpbmFuZF9vcHRpbWl6ZV9jb250cm9s bGVyKCkgdG8gcGVyZm9ybSBQSFkKY2FsaWJyYXRpb24gYW5kIHJhbmtlZCB2YXJpYW50IGZhbGxi YWNrIGJlZm9yZSBjcmVhdGluZyBkaXJlY3QgbWFwcGluZ3MgaW4Kc3BpbmFuZF9wcm9iZSgpLiBJ dCBhbHNvIHJlLXBhaXJzIGNvbnRpbnVvdXMtcmVhZCB0ZW1wbGF0ZXMgYnkgcHJvdG9jb2wgc2hh cGUKd2hlbiBmYWxsaW5nIGJhY2sgdG8gYW5vdGhlciByZWFkIHZhcmlhbnQgYW5kIGVtYmVkcyB0 aGUgY2FsaWJyYXRlZCBtYXhfZnJlcQppbnRvIHRoZSBkaXJtYXAgb3BlcmF0aW9uIHRlbXBsYXRl cy4KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvc3BpL2NvcmUuYyBiL2RyaXZlcnMv bXRkL25hbmQvc3BpL2NvcmUuYwo+IGluZGV4IDlkYzQzYzhjNDE2MmQuLjY0NTUyOGI2YzJkNzcg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9zcGkvY29yZS5jCj4gKysrIGIvZHJpdmVy cy9tdGQvbmFuZC9zcGkvY29yZS5jCj4gQEAgLTEzMDAsNiArMTMwMCw3IEBAIHN0YXRpYyBpbnQg c3BpbmFuZF9jcmVhdGVfZGlybWFwKHN0cnVjdCBzcGluYW5kX2RldmljZSAqc3BpbmFuZCwKPiAg CWluZm8ubGVuZ3RoID0gbmFuZGRldl9wYWdlX3NpemUobmFuZCkgKyBuYW5kZGV2X3Blcl9wYWdl X29vYnNpemUobmFuZCk7Cj4gIAlpbmZvLnByaW1hcnlfb3BfdG1wbCA9ICpzcGluYW5kLT5vcF90 ZW1wbGF0ZXMtPnVwZGF0ZV9jYWNoZTsKPiAgCWluZm8ucHJpbWFyeV9vcF90bXBsLmRhdGEuZWNj ID0gZW5hYmxlX2VjYzsKPiArCWluZm8ucHJpbWFyeV9vcF90bXBsLm1heF9mcmVxID0gc3BpbmFu ZC0+bWF4X3dyaXRlX29wLm1heF9mcmVxOwo+ICAJZGVzYyA9IGRldm1fc3BpX21lbV9kaXJtYXBf Y3JlYXRlKCZzcGluYW5kLT5zcGltZW0tPnNwaS0+ZGV2LAo+ICAJCQkJCSAgc3BpbmFuZC0+c3Bp bWVtLCAmaW5mbyk7Cj4gIAlpZiAoSVNfRVJSKGRlc2MpKQo+IEBAIC0xMzEwLDkgKzEzMTEsMTEg QEAgc3RhdGljIGludCBzcGluYW5kX2NyZWF0ZV9kaXJtYXAoc3RydWN0IHNwaW5hbmRfZGV2aWNl ICpzcGluYW5kLAo+ICAJLyogUmVhZCBkZXNjcmlwdG9yICovCj4gIAlpbmZvLnByaW1hcnlfb3Bf dG1wbCA9ICpzcGluYW5kLT5vcF90ZW1wbGF0ZXMtPnJlYWRfY2FjaGU7Cj4gIAlpbmZvLnByaW1h cnlfb3BfdG1wbC5kYXRhLmVjYyA9IGVuYWJsZV9lY2M7Cj4gKwlpbmZvLnByaW1hcnlfb3BfdG1w bC5tYXhfZnJlcSA9IHNwaW5hbmQtPm1heF9yZWFkX29wLm1heF9mcmVxOwo+ICAJaWYgKHNlY29u ZGFyeV9vcCkgewo+ICAJCWluZm8uc2Vjb25kYXJ5X29wX3RtcGwgPSAqc3BpbmFuZC0+b3BfdGVt cGxhdGVzLT5jb250X3JlYWRfY2FjaGU7Cj4gIAkJaW5mby5zZWNvbmRhcnlfb3BfdG1wbC5kYXRh LmVjYyA9IGVuYWJsZV9lY2M7Cj4gKwkJaW5mby5zZWNvbmRhcnlfb3BfdG1wbC5tYXhfZnJlcSA9 IHNwaW5hbmQtPm1heF9yZWFkX29wLm1heF9mcmVxOwo+ICAJfQoKW1NldmVyaXR5OiBIaWdoXQpE b2VzIHVuY29uZGl0aW9uYWxseSBvdmVyd3JpdGluZyBpbmZvLnByaW1hcnlfb3BfdG1wbC5tYXhf ZnJlcSBhbmQKaW5mby5zZWNvbmRhcnlfb3BfdG1wbC5tYXhfZnJlcSBpbiBzcGluYW5kX2NyZWF0 ZV9kaXJtYXAoKSBkaXNjYXJkIHRoZQpwZXItdmFyaWFudCBkYXRhc2hlZXQgZnJlcXVlbmN5IGxp bWl0cyBkZWZpbmVkIGJ5IGZsYXNoIGRyaXZlcnM/CgpXaGVuIG1lbS0+c3BpLT5wb3N0X2NvbmZp Z19tYXhfc3BlZWRfaHogaXMgMCwgb3Igd2hlbgpzcGlfbWVtX2V4ZWN1dGVfdHVuaW5nKCkgaXMg dW5zdXBwb3J0ZWQgKC1FT1BOT1RTVVBQKSBvciBmYWlscyBpbgpzcGluYW5kX29wdGltaXplX2Nv bnRyb2xsZXIoKSwgc3BpbmFuZC0+bWF4X3JlYWRfb3AubWF4X2ZyZXEgYW5kCnNwaW5hbmQtPm1h eF93cml0ZV9vcC5tYXhfZnJlcSByZW1haW4gMC4KCkluIHNwaW5hbmRfY3JlYXRlX2Rpcm1hcCgp LCBpbmZvLnByaW1hcnlfb3BfdG1wbCBhbmQgaW5mby5zZWNvbmRhcnlfb3BfdG1wbAphcmUgZmly c3QgaW5pdGlhbGl6ZWQgZnJvbSAqc3BpbmFuZC0+b3BfdGVtcGxhdGVzLT51cGRhdGVfY2FjaGUs CipzcGluYW5kLT5vcF90ZW1wbGF0ZXMtPnJlYWRfY2FjaGUsIGFuZAoqc3BpbmFuZC0+b3BfdGVt cGxhdGVzLT5jb250X3JlYWRfY2FjaGUsIHdoaWNoIGNhcnJ5IHBlci12YXJpYW50IGZyZXF1ZW5j eQpjYXBzIGluIGRyaXZlcnMgc3VjaCBhcyBkcml2ZXJzL210ZC9uYW5kL3NwaS93aW5ib25kLmMg KGUuZy4sIDU0IE1IeiwKODAgTUh6LCA4NiBNSHosIDEwNCBNSHosIDEwNSBNSHosIDEyMCBNSHos IDEyNCBNSHosIDEzMyBNSHosIGFuZCAxNjIgTUh6KS4KCk92ZXJ3cml0aW5nIG1heF9mcmVxIHdp dGggMCBjYXVzZXMgc3BpX21lbV9hZGp1c3Rfb3BfZnJlcSgpIGR1cmluZwpkaXJtYXAgY3JlYXRp b246Cgpkcml2ZXJzL3NwaS9zcGktbWVtLmM6c3BpX21lbV9hZGp1c3Rfb3BfZnJlcSgpIHsKICAg IC4uLgoJaWYgKCFvcC0+bWF4X2ZyZXEgfHwgb3AtPm1heF9mcmVxID4gbWVtLT5zcGktPm1heF9z cGVlZF9oeikKCQlvcC0+bWF4X2ZyZXEgPSBtZW0tPnNwaS0+bWF4X3NwZWVkX2h6OwogICAgLi4u Cn0KCnRvIHJhaXNlIHRoZSBvcGVyYXRpb24gZnJlcXVlbmN5IGFsbCB0aGUgd2F5IHVwIHRvIG1l bS0+c3BpLT5tYXhfc3BlZWRfaHoKKGZvciBpbnN0YW5jZSwgY2xvY2tpbmcgYW4gODAgTUh6IDFT LTRELTREIG9yIDEyMCBNSHogOEQtOEQtOEQgb3AgYXQKMTY2IE1IeikuIEV2ZW4gd2hlbiB0dW5p bmcgc3VjY2VlZHMsIHN0YW1waW5nIHNwaW5hbmQtPm1heF9yZWFkX29wLm1heF9mcmVxCm9udG8g dGhlIGRpcm1hcCB0ZW1wbGF0ZXMgaWdub3JlcyBhbnkgbG93ZXIgcGVyLXZhcmlhbnQgbWF4X2Zy ZXEgY2VpbGluZyBvbgpyZWFkX2NhY2hlIG9yIGNvbnRfcmVhZF9jYWNoZS4KCj4gQEAgLTE1NTks MjIgKzE1NjIsNTEgQEAgc3RhdGljIGludCBzcGluYW5kX2luaXRfb2R0cl9pbnN0cnVjdGlvbl9z ZXQoc3RydWN0IHNwaW5hbmRfZGV2aWNlICpzcGluYW5kKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAg Cj4gKy8qKgo+ICsgKiBzcGluYW5kX29wX3NoYXBlX21hdGNoZXMoKSAtIENoZWNrIHdoZXRoZXIg dHdvIG9wcyBzaGFyZSB0aGUgc2FtZSBwcm90b2NvbAo+ICsgKgkJCQkgc2hhcGUuCj4gKyAqIEBh OiBmaXJzdCBvcAo+ICsgKiBAYjogc2Vjb25kIG9wCj4gKyAqCj4gKyAqIENvbXBhcmVzIGNtZC9h ZGRyL2RhdGEgYnVzd2lkdGgsIGFkZHIubmJ5dGVzLCBhbmQgRFRSLW5lc3MsIGlnbm9yaW5nCj4g KyAqIGR1bW15IGN5Y2xlIGNvdW50IGFuZCBhZGRyZXNzIHZhbHVlLiBBIGNvbnRpbnVvdXMtcmVh ZCBvcCBhbmQgaXRzCj4gKyAqIGNvcnJlc3BvbmRpbmcgcmVhZF9jYWNoZSBvcCBhcmUgZXhwZWN0 ZWQgdG8gZGlmZmVyIG9ubHkgaW4gdGhvc2UgaWdub3JlZAo+ICsgKiBmaWVsZHM6IGNvbnRpbnVv dXMgcmVhZCB0eXBpY2FsbHkgbmVlZHMgZmV3ZXIgZHVtbXkgY3ljbGVzLCBhbmQgYWx3YXlzCj4g KyAqIHRhcmdldHMgYW4gaW50ZXJuYWxseSB0cmFja2VkIGFkZHJlc3MgcmF0aGVyIHRoYW4gdGhl IGNhbGxlcidzLgo+ICsgKi8KPiArc3RhdGljIGJvb2wgc3BpbmFuZF9vcF9zaGFwZV9tYXRjaGVz KGNvbnN0IHN0cnVjdCBzcGlfbWVtX29wICphLAo+ICsJCQkJICAgICBjb25zdCBzdHJ1Y3Qgc3Bp X21lbV9vcCAqYikKPiArewo+ICsJcmV0dXJuIGEtPmNtZC5idXN3aWR0aCA9PSBiLT5jbWQuYnVz d2lkdGggJiYKPiArCSAgICAgICBhLT5jbWQuZHRyID09IGItPmNtZC5kdHIgJiYKPiArCSAgICAg ICBhLT5hZGRyLm5ieXRlcyA9PSBiLT5hZGRyLm5ieXRlcyAmJgo+ICsJICAgICAgIGEtPmFkZHIu YnVzd2lkdGggPT0gYi0+YWRkci5idXN3aWR0aCAmJgo+ICsJICAgICAgIGEtPmFkZHIuZHRyID09 IGItPmFkZHIuZHRyICYmCj4gKwkgICAgICAgYS0+ZGF0YS5idXN3aWR0aCA9PSBiLT5kYXRhLmJ1 c3dpZHRoICYmCj4gKwkgICAgICAgYS0+ZGF0YS5kdHIgPT0gYi0+ZGF0YS5kdHI7Cj4gK30KCltT ZXZlcml0eTogTWVkaXVtXQpBcyByZXBvcnRlZCBieSBTYXNoaWtvIG9uIHY0IFsxXSwgY2FuIHNw aW5hbmRfb3Bfc2hhcGVfbWF0Y2hlcygpIGV2ZXIgbWF0Y2gKYW4gU1NEUiBjb250aW51b3VzLXJl YWQgdmFyaWFudCBpbiBzcGluYW5kX2ZpbmRfY29udF9yZWFkX3ZhcmlhbnQoKSwgb3IgcGFpcgp0 aGUgcmlnaHQgZHVtbXktY3ljbGUgc3ViLXZhcmlhbnQgaW4gT0RUUiBtb2RlPwoKSW4gZHJpdmVy cy9tdGQvbmFuZC9zcGkvd2luYm9uZC5jICh0aGUgb25seSBkcml2ZXIgZGVmaW5pbmcgY29udF9y ZWFkX2NhY2hlCnZhcmlhbnQgdGFibGVzKSwgYWxsIFNTRFIgcmVhZF9jYWNoZSB2YXJpYW50cyB1 c2UgYSAyLWJ5dGUgYWRkcmVzcwooYWRkci5uYnl0ZXMgPT0gMiwgZHVtbXkubmJ5dGVzID09IG5k dW1teSksIHdoZXJlYXMgYWxsIFNTRFIgY29udGludW91cy1yZWFkCnZhcmlhbnRzIGNvbnZlcnQg b25lIGFkZHJlc3MgYnl0ZSBpbnRvIGR1bW15IGN5Y2xlczoKCiNkZWZpbmUgV0lOQk9ORF9DT05U X1JFQURfRlJPTV9DQUNIRV8xU184U184U19PUChuZHVtbXksIGJ1ZiwgbGVuLCBmcmVxKSBcCglT UElfTUVNX09QKFNQSV9NRU1fT1BfQ01EKDB4Y2IsIDEpLAkJCQlcCgkJICAgU1BJX01FTV9PUF9B RERSKDEsIDAsIDgpLAkJCQlcCgkJICAgU1BJX01FTV9PUF9EVU1NWShuZHVtbXkgLSAxLCA4KSwJ CQlcCgkJICAgU1BJX01FTV9PUF9EQVRBX0lOKGxlbiwgYnVmLCA4KSwJCQlcCgkJICAgU1BJX01F TV9PUF9NQVhfRlJFUShmcmVxKSkKCkJlY2F1c2Ugc3BpbmFuZF9vcF9zaGFwZV9tYXRjaGVzKCkg cmVxdWlyZXMgYS0+YWRkci5uYnl0ZXMgPT0gYi0+YWRkci5uYnl0ZXMsCnNwaW5hbmRfZmluZF9j b250X3JlYWRfdmFyaWFudChzcGluYW5kLCBiZXN0LCBTU0RSKSByZWplY3RzIGV2ZXJ5IFNTRFIg ZW50cnkKYW5kIGFsd2F5cyByZXR1cm5zIE5VTEwsIHdoaWNoIGNhdXNlcyBzcGluYW5kX3RyeV9y YW5rZWRfdmFyaWFudCgpIHRvIHNldApzcGluYW5kLT5jb250X3JlYWRfcG9zc2libGUgPSBmYWxz ZSBvbiBldmVyeSBTU0RSIGZhbGxiYWNrLgoKQ29udmVyc2VseSwgZm9yIE9EVFIgdmFyaWFudHMg d2hlcmUgV0lOQk9ORF9DT05UX1JFQURfRlJPTV9DQUNIRV84RF84RF84RF9PUAphbHNvIGhhcyBh ZGRyLm5ieXRlcyA9PSAyLCBzcGluYW5kX29wX3NoYXBlX21hdGNoZXMoKSBpZ25vcmVzIGR1bW15 IGN5Y2xlCmNvdW50cyBhbmQgc3BpbmFuZF9maW5kX2NvbnRfcmVhZF92YXJpYW50KCkgcGFzc2Vz IHNraXBfbWFzayA9PSAwIHRvCnNwaW5hbmRfb3BfZmluZF9iZXN0X3ZhcmlhbnQoKS4gSWYgcmVh ZF9jYWNoZSBmYWxscyBiYWNrIHRvIGEgZGlmZmVyZW50CmR1bW15LWN5Y2xlIHN1Yi12YXJpYW50 LCB3b24ndCBzcGluYW5kX2ZpbmRfY29udF9yZWFkX3ZhcmlhbnQoKSBzdGlsbCBwaWNrCnRoZSBm aXJzdCBjb250X3JlYWRfY2FjaGUgc3ViLXZhcmlhbnQgd2l0aCBhIG1pc21hdGNoZWQgZHVtbXkg Y3ljbGUgY291bnQsCmV2ZW4gdGhvdWdoIGJvdGggb3BzIHNoYXJlIGEgc2luZ2xlIGhhcmR3YXJl IFZDUiBkdW1teSBjbG9jayByZWdpc3Rlcj8KClsgLi4uIF0KCj4gQEAgLTIwNzMsNiArMjE0NCwx OTkgQEAgc3RhdGljIHZvaWQgc3BpbmFuZF9jbGVhbnVwKHN0cnVjdCBzcGluYW5kX2RldmljZSAq c3BpbmFuZCkKPiAgCWtmcmVlKHNwaW5hbmQtPnNjcmF0Y2hidWYpOwo+ICB9Cj4gIAo+ICsvKioK PiArICogc3BpbmFuZF90cnlfcmFua2VkX3ZhcmlhbnQoKSAtIFRyeSBjb250cm9sbGVyIG9wdGlt aXphdGlvbiBvbiB2YXJpYW50cyBpbgo+ICsgKgkJCQkgIHBlcmZvcm1hbmNlIG9yZGVyLgpbIC4u LiBdCj4gK3N0YXRpYyBib29sIHNwaW5hbmRfdHJ5X3JhbmtlZF92YXJpYW50KHN0cnVjdCBzcGlu YW5kX2RldmljZSAqc3BpbmFuZCwKPiArCQkJCSAgICAgICBzdHJ1Y3Qgc3BpX21lbSAqbWVtLAo+ ICsJCQkJICAgICAgIGVudW0gc3BpbmFuZF9idXNfaW50ZXJmYWNlIGlmYWNlLAo+ICsJCQkJICAg ICAgIHUzMiAqdHJpZWRfbWFzaykKPiArewo+ICsJY29uc3Qgc3RydWN0IHNwaW5hbmRfb3BfdmFy aWFudHMgKnZhcmlhbnRzID0gc3BpbmFuZC0+YWxsX3JlYWRfdmFyaWFudHM7Cj4gKwlzdHJ1Y3Qg c3BpbmFuZF9tZW1fb3BzICp0ZW1wbGF0ZXMgPSBpZmFjZSA9PSBPRFRSID8KPiArCQkmc3BpbmFu ZC0+b2R0cl9vcF90ZW1wbGF0ZXMgOiAmc3BpbmFuZC0+c3Nkcl9vcF90ZW1wbGF0ZXM7Cj4gKwlj b25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqYmVzdDsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCF2 YXJpYW50cykKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJd2hpbGUgKChiZXN0ID0gc3BpbmFu ZF9vcF9maW5kX2Jlc3RfdmFyaWFudChzcGluYW5kLCB2YXJpYW50cywgaWZhY2UsCj4gKwkJCQkJ CSAgICAqdHJpZWRfbWFzaywgTlVMTCkpKSB7Cj4gKwkJKnRyaWVkX21hc2sgfD0gQklUKGJlc3Qg LSB2YXJpYW50cy0+b3BzKTsKPiArCQlzcGluYW5kLT5tYXhfcmVhZF9vcCA9ICpiZXN0Owo+ICsJ CXNwaW5hbmQtPm1heF9yZWFkX29wLm1heF9mcmVxID0gMDsKPiArCQlzcGluYW5kLT5tYXhfd3Jp dGVfb3AubWF4X2ZyZXEgPSAwOwo+ICsJCXJldCA9IHNwaV9tZW1fZXhlY3V0ZV90dW5pbmcobWVt LCAmc3BpbmFuZC0+bWF4X3JlYWRfb3AsCj4gKwkJCQkJICAgICAmc3BpbmFuZC0+bWF4X3dyaXRl X29wKTsKPiArCQlpZiAocmV0ICYmIHJldCAhPSAtRU9QTk9UU1VQUCkKPiArCQkJZGV2X2RiZygm bWVtLT5zcGktPmRldiwgIiVzIG9wdGltaXphdGlvbiBmYWlsZWQ6ICVkXG4iLAo+ICsJCQkJaWZh Y2UgPT0gT0RUUiA/ICJPRFRSIiA6ICJTU0RSIiwgcmV0KTsKPiArCQlpZiAoIXJldCAmJiBzcGlu YW5kLT5tYXhfcmVhZF9vcC5tYXhfZnJlcSkgewo+ICsJCQl0ZW1wbGF0ZXMtPnJlYWRfY2FjaGUg PSBiZXN0Owo+ICsJCQlpZiAoc3BpbmFuZC0+YWxsX2NvbnRfcmVhZF92YXJpYW50cykgewo+ICsJ CQkJdGVtcGxhdGVzLT5jb250X3JlYWRfY2FjaGUgPQo+ICsJCQkJCXNwaW5hbmRfZmluZF9jb250 X3JlYWRfdmFyaWFudChzcGluYW5kLCBiZXN0LCBpZmFjZSk7Cj4gKwkJCQkvKiBPbmx5IGNsZWFy OyBuZXZlciByZS1lbmFibGUgYSBkZW5pZWQgY2FwYWJpbGl0eS4gKi8KPiArCQkJCWlmICghdGVt cGxhdGVzLT5jb250X3JlYWRfY2FjaGUpCj4gKwkJCQkJc3BpbmFuZC0+Y29udF9yZWFkX3Bvc3Np YmxlID0gZmFsc2U7Cj4gKwkJCX0KPiArCQkJcmV0dXJuIHRydWU7Cj4gKwkJfQo+ICsJfQo+ICsJ cmV0dXJuIGZhbHNlOwo+ICt9CgpbU2V2ZXJpdHk6IEhpZ2hdCkRvZXNuJ3Qgc3BpbmFuZF90cnlf cmFua2VkX3ZhcmlhbnQoKSBuZWVkIHRvIHVwZGF0ZSB0ZW1wbGF0ZXMtPnJlYWRfY2FjaGUgYW5k CmNhbGwgc3BpbmFuZC0+Y29uZmlndXJlX2NoaXAoc3BpbmFuZCwgaWZhY2UpIGZvciBlYWNoIGNh bmRpZGF0ZSB2YXJpYW50CmJlZm9yZSBydW5uaW5nIHNwaV9tZW1fZXhlY3V0ZV90dW5pbmcoKSAo YW5kIHJlc3RvcmUgaXQgaWYgYWxsIGNhbmRpZGF0ZXMKZmFpbCk/CgpPbiBPRFRSLWNhcGFibGUg V2luYm9uZCBmbGFzaGVzIChXMzVOMDFKVywgVzM1TjAySlcsIGFuZCBXMzVOMDRKVyksCnNwaW5h bmQtPmNvbmZpZ3VyZV9jaGlwICh3MzVuMHhqd192Y3JfY2ZnKCkgaW4gZHJpdmVycy9tdGQvbmFu ZC9zcGkvd2luYm9uZC5jKQppbnNwZWN0cyBzcGluYW5kLT5vZHRyX29wX3RlbXBsYXRlcy5yZWFk X2NhY2hlIG9yCnNwaW5hbmQtPnNzZHJfb3BfdGVtcGxhdGVzLnJlYWRfY2FjaGUgdG8gcHJvZ3Jh bSB0aGUgZmxhc2ggY2hpcCdzIFZvbGF0aWxlCkNvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzIHdpdGgg dGhhdCB2YXJpYW50J3MgZXhhY3QgZHVtbXkgY2xvY2sgY291bnQKKFczNU4wMUpXX1ZDUl9EVU1N WV9DTE9DS19SRUcpIGFuZCBJL08gbW9kZSAoVzM1TjAxSldfVkNSX0lPX01PREVfUkVHOgpPQ1RB TF9ERFIsIE9DVEFMX1NEUiwgb3IgU0lOR0xFX1NEUik6Cgpkcml2ZXJzL210ZC9uYW5kL3NwaS93 aW5ib25kLmM6dzM1bjB4andfdmNyX2NmZygpIHsKICAgIC4uLgoJc3dpdGNoIChpZmFjZSkgewoJ Y2FzZSBTU0RSOgoJCXJlZl9vcCA9IHNwaW5hbmQtPnNzZHJfb3BfdGVtcGxhdGVzLnJlYWRfY2Fj aGU7CgkJYnJlYWs7CgljYXNlIE9EVFI6CgkJcmVmX29wID0gc3BpbmFuZC0+b2R0cl9vcF90ZW1w bGF0ZXMucmVhZF9jYWNoZTsKCQlicmVhazsKCWRlZmF1bHQ6CgkJcmV0dXJuIC1FT1BOT1RTVVBQ OwoJfQoKCWR1bW15X2N5Y2xlcyA9ICgocmVmX29wLT5kdW1teS5uYnl0ZXMgKiA4KSAvIHJlZl9v cC0+ZHVtbXkuYnVzd2lkdGgpIC8KCQkocmVmX29wLT5kdW1teS5kdHIgPyAyIDogMSk7CiAgICAu Li4KfQoKSW4gc3BpbmFuZF9vcHRpbWl6ZV9jb250cm9sbGVyKCksIGNvbmZpZ3VyZV9jaGlwKCkg aXMgb25seSBjYWxsZWQgb25jZSBiZWZvcmUKUGFzcyAxIChkdXJpbmcgc3BpbmFuZF9pbml0X2Zs YXNoKCkpIGFuZCBvbmNlIGJlZm9yZSBQYXNzIDIgdXNpbmcgdGhlIGluaXRpYWwKcmVhZF9jYWNo ZSB0ZW1wbGF0ZS4gV2hlbiBzcGluYW5kX3RyeV9yYW5rZWRfdmFyaWFudCgpIGl0ZXJhdGVzIGFj cm9zcwp2YXJpYW50cyBpbiByZWFkX2NhY2hlX29jdGFsX3ZhcmlhbnRzIHRoYXQgaGF2ZSBkaWZm ZXJlbnQgZHVtbXkgY3ljbGUgY291bnRzCihlLmcuLCAyNCB2cyAxNiBkdW1teSBieXRlcyBpbiBP RFRSLCBvciAyMCwgMTYsIDEyLCBhbmQgOCBkdW1teSBjeWNsZXMgaW4KU1NEUikgb3IgYSBkaWZm ZXJlbnQgVkNSIEkvTyBtb2RlICgxUy04Uy04UyBPQ1RBTF9TRFIgdnMgMVMtMVMtMVMKU0lOR0xF X1NEUiksIHRoZSBmbGFzaCBoYXJkd2FyZSByZW1haW5zIHByb2dyYW1tZWQgZm9yIHRoZSBpbml0 aWFsIHRlbXBsYXRlJ3MKZHVtbXkgY3ljbGVzIGFuZCBJL08gbW9kZSBib3RoIGR1cmluZyBzcGlf bWVtX2V4ZWN1dGVfdHVuaW5nKCkgYW5kIGFmdGVyCnRlbXBsYXRlcy0+cmVhZF9jYWNoZSA9IGJl c3QgaXMgY29tbWl0dGVkLgoKPiArCj4gKy8qKgo+ICsgKiBzcGluYW5kX3Jlc2V0X21heF9mcmVx X29wcygpIC0gQ29weSBvcCB0ZW1wbGF0ZXMgYW5kIHplcm8gbWF4X2ZyZXEgb24gYm90aC4KPiAr ICogQHNwaW5hbmQ6ICAgIFNQSSBOQU5EIGRldmljZQo+ICsgKiBAdGVtcGxhdGVzOiAgb3AgdGVt cGxhdGUgc2V0IHRvIGNvcHkgZnJvbQo+ICsgKgo+ICsgKiBDYWxsZWQgYmVmb3JlIGV4ZWN1dGVf dHVuaW5nIHNvIG1heF9mcmVxIHN0YXJ0cyBhdCB6ZXJvOyBleGVjdXRlX3R1bmluZyBzZXRzCj4g KyAqIGl0IHRvIHRoZSB2YWxpZGF0ZWQgY2xvY2sgcmF0ZSBvbmx5IG9uIHN1Y2Nlc3MuIEEgbm9u LXplcm8gbWF4X2ZyZXEgbWVhbnMKPiArICogY29udHJvbGxlci1vcHRpbWl6ZWQ7IHplcm8gbWVh bnMgdGhlIGJhc2UgcmF0ZSBhcHBsaWVzLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgc3BpbmFuZF9y ZXNldF9tYXhfZnJlcV9vcHMoc3RydWN0IHNwaW5hbmRfZGV2aWNlICpzcGluYW5kLAo+ICsJCQkJ ICAgICAgIHN0cnVjdCBzcGluYW5kX21lbV9vcHMgKnRlbXBsYXRlcykKPiArewo+ICsJc3BpbmFu ZC0+bWF4X3JlYWRfb3AgPSAqdGVtcGxhdGVzLT5yZWFkX2NhY2hlOwo+ICsJc3BpbmFuZC0+bWF4 X3JlYWRfb3AubWF4X2ZyZXEgPSAwOwo+ICsJc3BpbmFuZC0+bWF4X3dyaXRlX29wID0gKnRlbXBs YXRlcy0+d3JpdGVfY2FjaGU7Cj4gKwlzcGluYW5kLT5tYXhfd3JpdGVfb3AubWF4X2ZyZXEgPSAw Owo+ICt9CgpbU2V2ZXJpdHk6IEhpZ2hdCkFzIHJlcG9ydGVkIGJ5IE1pcXVlbCBSYXluYWwgb24g djMgWzJdLCB3b24ndCBldmFsdWF0aW5nIHZhcmlhbnRzIGF0IHRoZQpwcmUtY29uZmlnIGJhc2Ug Y2xvY2sgaW4gc3BpbmFuZF9vcF9maW5kX2Jlc3RfdmFyaWFudCgpIGFuZCB0aGVuIHplcm9pbmcK bWF4X3JlYWRfb3AubWF4X2ZyZXEgYmVmb3JlIHNwaV9tZW1fZXhlY3V0ZV90dW5pbmcoKSBzZWxl Y3QgbG93LWR1bW15LWN5Y2xlLApsb3ctZnJlcXVlbmN5IHZhcmlhbnRzIGFuZCBvdmVyY2xvY2sg dGhlbSBhdCBwb3N0X2NvbmZpZ19tYXhfc3BlZWRfaHo/CgpXaGVuIHNwaS1tYXgtcG9zdC1jb25m aWctZnJlcXVlbmN5LWh6IGlzIHNldCBpbiBEVCwgbWVtLT5zcGktPm1heF9zcGVlZF9oegpob2xk cyB0aGUgbG93ZXIgcHJlLWNvbmZpZ3VyYXRpb24gYmFzZSBjbG9jayAoZS5nLiwgMjUgTUh6KSB3 aGlsZQptZW0tPnNwaS0+cG9zdF9jb25maWdfbWF4X3NwZWVkX2h6IGhvbGRzIHRoZSBoaWdoLXNw ZWVkIHRhcmdldCAoZS5nLiwgMTIwIE1IegpvciAxNjYgTUh6KS4KCkluIHNwaW5hbmRfb3BfZmlu ZF9iZXN0X3ZhcmlhbnQoKSwgc3BpX21lbV9hZGp1c3Rfb3BfZnJlcSgpIGNsYW1wcyBldmVyeQpj YW5kaWRhdGUgaW4gdmFyaWFudHMtPm9wc1tpXSAoc3VjaCBhcyBXaW5ib25kJ3MgcmVhZF9jYWNo ZV9vY3RhbF92YXJpYW50czoKOEQtOEQtOEQgd2l0aCAyNCBkdW1teSBieXRlcyBAIDEyMCBNSHog dnMgMTYgZHVtbXkgYnl0ZXMgQCA4NiBNSHosIG9yCjFTLThTLThTIHdpdGggMjAgZHVtbXkgYnl0 ZXMgQCB1bmxpbWl0ZWQsIDE2IEAgMTYyIE1IeiwgMTIgQCAxMjQgTUh6LCBhbmQKOCBAIDg2IE1I eikgZG93biB0byB0aGUgMjUgTUh6IGJhc2UgcmF0ZSBpbiBtZW0tPnNwaS0+bWF4X3NwZWVkX2h6 LgoKQXQgdGhlIHNhbWUgMjUgTUh6IGZyZXF1ZW5jeSwgc2FtZS1idXN3aWR0aCBvcHMgZGlmZmVy IG9ubHkgaW4gZHVtbXkgY3ljbGUKY291bnQsIHNvIHNwaV9tZW1fY2FsY19vcF9kdXJhdGlvbigp IHJhbmtzIHRoZSB2YXJpYW50IHdpdGggdGhlIGZld2VzdCBkdW1teQpjeWNsZXMgYW5kIGxvd2Vz dCBmcmVxdWVuY3kgbGltaXQgKGUuZy4sIDg2IE1IeikgYXMgdGhlIGZhc3Rlc3QgdmFyaWFudCwg YW5kCnJhbmtzIHRoZSAyMC1kdW1teS1jeWNsZSAxNjYgTUh6IHZhcmlhbnQgbGFzdC4KClRoZW4g c3BpbmFuZF9yZXNldF9tYXhfZnJlcV9vcHMoKSBhbmQgc3BpbmFuZF90cnlfcmFua2VkX3Zhcmlh bnQoKSB6ZXJvCnNwaW5hbmQtPm1heF9yZWFkX29wLm1heF9mcmVxID0gMCwgZGlzY2FyZGluZyB0 aGUgODYgTUh6IGxpbWl0IGFuZCBhbGxvd2luZwpzcGlfbWVtX2V4ZWN1dGVfdHVuaW5nKCkgdG8g c2V0IG1heF9yZWFkX29wLm1heF9mcmVxIHRvCnBvc3RfY29uZmlnX21heF9zcGVlZF9oeiAoMTIw IE1IeiBvciAxNjYgTUh6KSwgdmlvbGF0aW5nIHRoZSBmbGFzaCBkYXRhc2hlZXQncwptaW5pbXVt IGR1bW15IGN5Y2xlcyBmb3IgdGhhdCBjbG9jayByYXRlLgoKPiArCj4gKy8qKgo+ICsgKiBzcGlu YW5kX29wdGltaXplX2NvbnRyb2xsZXIoKSAtIE5lZ290aWF0ZSB0aGUgb3B0aW1hbCBjb250cm9s bGVyIG9wZXJhdGluZwo+ICsgKgkJCQkgICBwb2ludCBmb3IgdGhlIFNQSSBOQU5EIGRldmljZS4K WyAuLi4gXQo+ICtzdGF0aWMgdm9pZCBzcGluYW5kX29wdGltaXplX2NvbnRyb2xsZXIoc3RydWN0 IHNwaW5hbmRfZGV2aWNlICpzcGluYW5kLAo+ICsJCQkJCXN0cnVjdCBzcGlfbWVtICptZW0pCj4g K3sKPiArCXUzMiB0cmllZF9tYXNrOwo+ICsJaW50IHJldDsKPiArCj4gKwkvKiBTa2lwIGVudGly ZWx5IHdoZW4gbm8gcG9zdC1jb25maWcgdGFyZ2V0IGlzIGNvbmZpZ3VyZWQuICovCj4gKwlpZiAo IW1lbS0+c3BpLT5wb3N0X2NvbmZpZ19tYXhfc3BlZWRfaHopCj4gKwkJcmV0dXJuOwo+ICsKPiAr CXNwaW5hbmRfcmVzZXRfbWF4X2ZyZXFfb3BzKHNwaW5hbmQsIHNwaW5hbmQtPm9wX3RlbXBsYXRl cyk7Cj4gKwo+ICsJcmV0ID0gc3BpX21lbV9leGVjdXRlX3R1bmluZyhtZW0sICZzcGluYW5kLT5t YXhfcmVhZF9vcCwKPiArCQkJCSAgICAgJnNwaW5hbmQtPm1heF93cml0ZV9vcCk7Cj4gKwlpZiAo cmV0ICYmIHJldCAhPSAtRU9QTk9UU1VQUCkKPiArCQlkZXZfZGJnKCZtZW0tPnNwaS0+ZGV2LCAi Q29udHJvbGxlciBvcHRpbWl6YXRpb24gZmFpbGVkOiAlZFxuIiwKPiArCQkJcmV0KTsKPiArCj4g KwkvKgo+ICsJICogQW55IG5vbi16ZXJvIHJldHVybiBvciBhIHNldCBtYXhfZnJlcSBtZWFucyB3 ZSBhcmUgZG9uZSAoZXJyb3IsCj4gKwkgKiB1bnN1cHBvcnRlZCwgb3Igc3VjY2VzcykuIEZhbGxi YWNrIG9ubHkgZm9yIHRoZSBvcC1zcGVjaWZpYyAic2tpcCIKPiArCSAqIHNpZ25hbDogcmV0ID09 IDAgd2l0aCBtYXhfZnJlcSBzdGlsbCAwLgo+ICsJICovCj4gKwlpZiAocmV0IHx8IHNwaW5hbmQt Pm1heF9yZWFkX29wLm1heF9mcmVxKQo+ICsJCXJldHVybjsKCltTZXZlcml0eTogTWVkaXVtXQpB cyByZXBvcnRlZCBieSBTYXNoaWtvIG9uIHYzIFszXSwgaWYgdGhlIGluaXRpYWwgc3BpX21lbV9l eGVjdXRlX3R1bmluZygpCmNhbGwgc3VjY2VlZHMgaGVyZSwgZG9lc24ndCBzcGluYW5kX29wdGlt aXplX2NvbnRyb2xsZXIoKSByZXR1cm4gd2l0aG91dAp2ZXJpZnlpbmcgdGhhdCBzcGluYW5kLT5v cF90ZW1wbGF0ZXMtPmNvbnRfcmVhZF9jYWNoZSBtYXRjaGVzIHRoZSBwcm90b2NvbApzaGFwZSBv ZiBzcGluYW5kLT5vcF90ZW1wbGF0ZXMtPnJlYWRfY2FjaGU/CgpJbiBzcGluYW5kX21hdGNoX2Fu ZF9pbml0KCksIGNvbnRfcmVhZF9jYWNoZSBpcyBzZWxlY3RlZCBpbmRlcGVuZGVudGx5IGZyb20K aW5mby0+b3BfdmFyaWFudHMuY29udF9yZWFkX2NhY2hlIHdpdGhvdXQgY2hlY2tpbmcgYWRkci5u Ynl0ZXMgZXF1YWxpdHkKYWdhaW5zdCByZWFkX2NhY2hlLiBXaGVuIHRoZSBpbml0aWFsIHR1bmlu ZyBzdWNjZWVkcywgc3BpbmFuZF9jcmVhdGVfZGlybWFwKCkKc3RhbXBzIHNwaW5hbmQtPm1heF9y ZWFkX29wLm1heF9mcmVxIG9udG8gaW5mby5zZWNvbmRhcnlfb3BfdG1wbCBldmVuIHdoZW4KY29u dF9yZWFkX2NhY2hlIGhhcyBhIGRpZmZlcmVudCBhZGRyLm5ieXRlcyAoZS5nLiwgMSBhZGRyZXNz IGJ5dGUgaW5zdGVhZCBvZgoyIGFkZHJlc3MgYnl0ZXMgb24gV2luYm9uZCBTU0RSIHZhcmlhbnRz KSBvciBhIGRpZmZlcmVudCBwcm90b2NvbCBzaGFwZSB0aGF0CndhcyBuZXZlciB2YWxpZGF0ZWQg Ynkgc3BpbmFuZF9vcF9zaGFwZV9tYXRjaGVzKCkuCgpbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5v cmcvci8yMDI2MDYxODA4MDIwOS41NzAxRTFGMDAwRTlAc210cC5rZXJuZWwub3JnClsyXSBodHRw czovL2xvcmUua2VybmVsLm9yZy9yLzg3bXJ4amc5emkuZnNmQGJvb3RsaW4uY29tClszXSBodHRw czovL2xvcmUua2VybmVsLm9yZy9yLzIwMjYwNTI3MTkwNDQwLjlEQjIyMUYwMDBFOUBzbXRwLmtl cm5lbC5vcmcKCi0tIApTYXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMv cGF0Y2hzZXQvMjAyNjExMDUxMDU4MzIuMjEzNDMxMy0xLXMtazZAdGkuY29tP3BhcnQ9MTYKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51 eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg==