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=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 B2D34C47082 for ; Thu, 27 May 2021 01:42:52 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4EF78613CA for ; Thu, 27 May 2021 01:42:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4EF78613CA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=rock-chips.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 0F0B28047F; Thu, 27 May 2021 03:42:48 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=rock-chips.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id E8D8482CAC; Thu, 27 May 2021 03:42:43 +0200 (CEST) Received: from regular1.263xmail.com (regular1.263xmail.com [211.150.70.198]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id E8D8D82CAC for ; Thu, 27 May 2021 03:42:36 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=rock-chips.com Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=zhangqing@rock-chips.com Received: from localhost (unknown [192.168.167.16]) by regular1.263xmail.com (Postfix) with ESMTP id F37A06F1; Thu, 27 May 2021 09:42:34 +0800 (CST) X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-ADDR-CHECKED4: 1 X-ANTISPAM-LEVEL: 2 X-SKE-CHECKED: 1 X-ABS-CHECKED: 1 Received: from desktop-jqcjg40 (unknown [58.22.7.114]) by smtp.263.net (postfix) whith ESMTP id P32527T140357171930880S1622079752916162_; Thu, 27 May 2021 09:42:33 +0800 (CST) X-IP-DOMAINF: 1 X-UNIQUE-TAG: <956ace3a9c9e2bfe7c46cff31f96827f> X-RL-SENDER: zhangqing@rock-chips.com X-SENDER: zhangqing@rock-chips.com X-LOGIN-NAME: zhangqing@rock-chips.com X-FST-TO: jh80.chung@samsung.com X-RCPT-COUNT: 9 X-SENDER-IP: 58.22.7.114 X-ATTACHMENT-NUM: 0 X-System-Flag: 0 Date: Thu, 27 May 2021 09:42:32 +0800 From: "zhangqing@rock-chips.com" To: "Jaehoon Chung" , Elaine , Zhang , sjg , philipp.tomsich , =?UTF-8?B?5p2o5Yev?= , lukma Cc: u-boot , =?UTF-8?B?6ZmI5YGl5rSq?= Subject: Re: Re: [PATCH v5 1/6] dm: regulator: support regulator more state References: <20210526084626.9709-1-zhangqing@rock-chips.com>, , <20210526084626.9709-5-zhangqing@rock-chips.com>, <1f854e8e-d4fa-89b9-ea2d-80a6fd499edc@samsung.com> X-Priority: 3 X-Has-Attach: no X-Mailer: Foxmail 7, 2, 8, 379[cn] Mime-Version: 1.0 Message-ID: <2021052709423242641626@rock-chips.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.34 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean SGksDQoNClBsZWFzZSBpZ25vcmUgdGhlc2UgdHdvIGVtYWlscywgdGhleSBhcmUgc2VudCBpbiBl cnJvci4NCg0KW1BBVENIIHY1IDAvNl0gcG93ZXI6IHBtaWM6IHN1cHBvcnQgbW9yZSBQTUlDDQpQ QVRDSCB2NSAxLzZdIGRtOiByZWd1bGF0b3I6IHN1cHBvcnQgcmVndWxhdG9yIG1vcmUgc3RhdGUN Cg0KDQoNCuW8oOaZtA0K55Ge6Iqv5b6u55S15a2Q6IKh5Lu95pyJ6ZmQ5YWs5Y+4DQpSb2NrY2hp cCBFbGVjdHJvbmljcyBDby4sTHRkDQrlnLDlnYDvvJrnpo/lu7rnnIHnpo/lt57luILpk5znm5jo t6/ova/ku7blpKfpgZM4OeWPt+i9r+S7tuWbrUHljLoyMeWPt+alvA0KQWRkOk5vLjIxIEJ1aWxk aW5nLCBBIERpc3RyaWN0LCBOby44OSBTb2Z0d2FyZSBCb3VsZXZhcmQgRnV6aG91LCBGdWppYW4g MzUwMDAzLCBQLlIuQ2hpbmENClRlbDorODYtMDU5MS04Mzk5MTkwNi04NjAxDQrpgq7nvJbvvJoz NTAwMDMNCkUtbWFpbDplbGFpbmUuemhhbmdAcm9jay1jaGlwcy5jb20NCiANCkZyb206IEphZWhv b24gQ2h1bmcNCkRhdGU6IDIwMjEtMDUtMjcgMDY6MTgNClRvOiBFbGFpbmU7IFpoYW5nOyBzamc7 IHBoaWxpcHAudG9tc2ljaDsga2V2ZXIueWFuZzsgbHVrbWENCkNDOiB6aGFuZ3Fpbmc7IHUtYm9v dDsgY2hlbmpoDQpTdWJqZWN0OiBSZTogW1BBVENIIHY1IDEvNl0gZG06IHJlZ3VsYXRvcjogc3Vw cG9ydCByZWd1bGF0b3IgbW9yZSBzdGF0ZQ0KSGksDQogDQpPbiA1LzI2LzIxIDU6NDYgUE0sIEVs YWluZUBkZW54LmRlIHdyb3RlOg0KPiBGcm9tOiBKb3NlcGggQ2hlbiA8Y2hlbmpoQHJvY2stY2hp cHMuY29tPg0KIA0KSXMgaXQgcmlnaHQgcGF0Y2g/IFRoaXMgcGF0Y2ggaGFkIGJlZW4gYWxyZWFk eSBhcHBsaWVkLg0KIA0KQmVzdCBSZWdhcmRzLA0KSmFlaG9vbiBDaHVuZw0KIA0KPiANCj4gc3Vw cG9ydCBwYXJzZSByZWd1bGF0b3Igc3RhbmRhcmQgcHJvcGVydHk6DQo+IHJlZ3VsYXRvci1vZmYt aW4tc3VzcGVuZDsNCj4gcmVndWxhdG9yLWluaXQtbWljcm92b2x0Ow0KPiByZWd1bGF0b3Itc3Vz cGVuZC1taWNyb3ZvbHQ6DQo+ICByZWd1bGF0b3JfZ2V0X3N1c3BlbmRfZW5hYmxlDQo+ICByZWd1 bGF0b3Jfc2V0X3N1c3BlbmRfZW5hYmxlDQo+ICByZWd1bGF0b3JfZ2V0X3N1c3BlbmRfdmFsdWUN Cj4gIHJlZ3VsYXRvcl9zZXRfc3VzcGVuZF92YWx1ZQ0KPiANCj4gU2lnbmVkLW9mZi1ieTogSm9z ZXBoIENoZW4gPGNoZW5qaEByb2NrLWNoaXBzLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogRWxhaW5l IFpoYW5nIDx6aGFuZ3FpbmdAcm9jay1jaGlwcy5jb20+DQo+IFJldmlld2VkLWJ5OiBLZXZlciBZ YW5nPGtldmVyLnlhbmdAcm9jay1jaGlwcy5jb20+DQo+IC0tLQ0KPiAgZG9jL2RldmljZS10cmVl LWJpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0IHwgMjcgKysrKysrKysrDQo+ICBkcml2 ZXJzL3Bvd2VyL3JlZ3VsYXRvci9yZWd1bGF0b3ItdWNsYXNzLmMgICAgICAgfCA3MCArKysrKysr KysrKysrKysrKysrKysrKysNCj4gIGluY2x1ZGUvcG93ZXIvcmVndWxhdG9yLmggICAgICAgICAg ICAgICAgICAgICAgICB8IDY0ICsrKysrKysrKysrKysrKysrKysrKysNCj4gIHRlc3QvZG0vcmVn dWxhdG9yLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDU3ICsrKysrKysrKysrKysr KysrKysNCj4gIDQgZmlsZXMgY2hhbmdlZCwgMjE4IGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYg LS1naXQgYS9kb2MvZGV2aWNlLXRyZWUtYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQg Yi9kb2MvZGV2aWNlLXRyZWUtYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQNCj4gaW5k ZXggNGJhNjQyYjdjNzdmLi42YzlhMDIxMjBmZGUgMTAwNjQ0DQo+IC0tLSBhL2RvYy9kZXZpY2Ut dHJlZS1iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dA0KPiArKysgYi9kb2MvZGV2aWNl LXRyZWUtYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQNCj4gQEAgLTM2LDYgKzM2LDI4 IEBAIE9wdGlvbmFsIHByb3BlcnRpZXM6DQo+ICAtIHJlZ3VsYXRvci1hbHdheXMtb246IHJlZ3Vs YXRvciBzaG91bGQgbmV2ZXIgYmUgZGlzYWJsZWQNCj4gIC0gcmVndWxhdG9yLWJvb3Qtb246IGVu YWJsZWQgYnkgYm9vdGxvYWRlci9maXJtd2FyZQ0KPiAgLSByZWd1bGF0b3ItcmFtcC1kZWxheTog cmFtcCBkZWxheSBmb3IgcmVndWxhdG9yIChpbiB1Vi91cykNCj4gKy0gcmVndWxhdG9yLWluaXQt bWljcm92b2x0OiBhIGluaXQgYWxsb3dlZCBWb2x0YWdlIHZhbHVlDQo+ICstIHJlZ3VsYXRvci1z dGF0ZS0oc3RhbmRieXxtZW18ZGlzaykNCj4gKyAgdHlwZTogb2JqZWN0DQo+ICsgIGRlc2NyaXB0 aW9uOg0KPiArICAgIHN1Yi1ub2RlcyBmb3IgcmVndWxhdG9yIHN0YXRlIGluIFN0YW5kYnksIFN1 c3BlbmQtdG8tUkFNLCBhbmQNCj4gKyAgICBTdXNwZW5kLXRvLURJU0sgbW9kZXMuIEVxdWl2YWxl bnQgd2l0aCBzdGFuZGJ5LCBtZW0sIGFuZCBkaXNrIExpbnV4DQo+ICsgICAgc2xlZXAgc3RhdGVz Lg0KPiArDQo+ICsgICAgcHJvcGVydGllczoNCj4gKyAgICAgIHJlZ3VsYXRvci1vbi1pbi1zdXNw ZW5kOg0KPiArICAgICAgICBkZXNjcmlwdGlvbjogcmVndWxhdG9yIHNob3VsZCBiZSBvbiBpbiBz dXNwZW5kIHN0YXRlLg0KPiArICAgICAgICB0eXBlOiBib29sZWFuDQo+ICsNCj4gKyAgICAgIHJl Z3VsYXRvci1vZmYtaW4tc3VzcGVuZDoNCj4gKyAgICAgICAgZGVzY3JpcHRpb246IHJlZ3VsYXRv ciBzaG91bGQgYmUgb2ZmIGluIHN1c3BlbmQgc3RhdGUuDQo+ICsgICAgICAgIHR5cGU6IGJvb2xl YW4NCj4gKw0KPiArICAgICAgcmVndWxhdG9yLXN1c3BlbmQtbWljcm92b2x0Og0KPiArICAgICAg ICBkZXNjcmlwdGlvbjogdGhlIGRlZmF1bHQgdm9sdGFnZSB3aGljaCByZWd1bGF0b3Igd291bGQg YmUgc2V0IGluDQo+ICsgICAgICAgICAgc3VzcGVuZC4gVGhpcyBwcm9wZXJ0eSBpcyBub3cgZGVw cmVjYXRlZCwgaW5zdGVhZCBzZXR0aW5nIHZvbHRhZ2UNCj4gKyAgICAgICAgICBmb3Igc3VzcGVu ZCBtb2RlIHZpYSB0aGUgQVBJIHdoaWNoIHJlZ3VsYXRvciBkcml2ZXIgcHJvdmlkZXMgaXMNCj4g KyAgICAgICAgICByZWNvbW1lbmRlZC4NCj4gIA0KPiAgTm90ZQ0KPiAgVGhlICJyZWd1bGF0b3It bmFtZSIgY29uc3RyYWludCBpcyB1c2VkIGZvciBzZXR0aW5nIHRoZSBkZXZpY2UncyB1Y2xhc3MN Cj4gQEAgLTU5LDcgKzgxLDEyIEBAIGxkbzAgew0KPiAgcmVndWxhdG9yLW1heC1taWNyb3ZvbHQg PSA8MTgwMDAwMD47DQo+ICByZWd1bGF0b3ItbWluLW1pY3JvYW1wID0gPDEwMDAwMD47DQo+ICBy ZWd1bGF0b3ItbWF4LW1pY3JvYW1wID0gPDEwMDAwMD47DQo+ICsgcmVndWxhdG9yLWluaXQtbWlj cm92b2x0ID0gPDE4MDAwMDA+Ow0KPiAgcmVndWxhdG9yLWFsd2F5cy1vbjsNCj4gIHJlZ3VsYXRv ci1ib290LW9uOw0KPiAgcmVndWxhdG9yLXJhbXAtZGVsYXkgPSA8MTIwMDA+Ow0KPiArIHJlZ3Vs YXRvci1zdGF0ZS1tZW0gew0KPiArIHJlZ3VsYXRvci1vbi1pbi1zdXNwZW5kOw0KPiArIHJlZ3Vs YXRvci1zdXNwZW5kLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsNCj4gKyB9Ow0KPiAgfTsNCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvcmVndWxhdG9yL3JlZ3VsYXRvci11Y2xhc3MuYyBiL2Ry aXZlcnMvcG93ZXIvcmVndWxhdG9yL3JlZ3VsYXRvci11Y2xhc3MuYw0KPiBpbmRleCA3NmJlOTVi Y2QxNTkuLjQ5ODZjODdlN2JhNiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9wb3dlci9yZWd1bGF0 b3IvcmVndWxhdG9yLXVjbGFzcy5jDQo+ICsrKyBiL2RyaXZlcnMvcG93ZXIvcmVndWxhdG9yL3Jl Z3VsYXRvci11Y2xhc3MuYw0KPiBAQCAtNzcsNiArNzcsMzMgQEAgaW50IHJlZ3VsYXRvcl9zZXRf dmFsdWUoc3RydWN0IHVkZXZpY2UgKmRldiwgaW50IHVWKQ0KPiAgcmV0dXJuIHJldDsNCj4gIH0N Cj4gIA0KPiAraW50IHJlZ3VsYXRvcl9zZXRfc3VzcGVuZF92YWx1ZShzdHJ1Y3QgdWRldmljZSAq ZGV2LCBpbnQgdVYpDQo+ICt7DQo+ICsgY29uc3Qgc3RydWN0IGRtX3JlZ3VsYXRvcl9vcHMgKm9w cyA9IGRldl9nZXRfZHJpdmVyX29wcyhkZXYpOw0KPiArIHN0cnVjdCBkbV9yZWd1bGF0b3JfdWNs YXNzX3BsYXRkYXRhICp1Y19wZGF0YTsNCj4gKw0KPiArIHVjX3BkYXRhID0gZGV2X2dldF91Y2xh c3NfcGxhdGRhdGEoZGV2KTsNCj4gKyBpZiAodWNfcGRhdGEtPm1pbl91ViAhPSAtRU5PREFUQSAm JiB1ViA8IHVjX3BkYXRhLT5taW5fdVYpDQo+ICsgcmV0dXJuIC1FSU5WQUw7DQo+ICsgaWYgKHVj X3BkYXRhLT5tYXhfdVYgIT0gLUVOT0RBVEEgJiYgdVYgPiB1Y19wZGF0YS0+bWF4X3VWKQ0KPiAr IHJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsgaWYgKCFvcHMtPnNldF9zdXNwZW5kX3ZhbHVlKQ0K PiArIHJldHVybiAtRU5PU1lTOw0KPiArDQo+ICsgcmV0dXJuIG9wcy0+c2V0X3N1c3BlbmRfdmFs dWUoZGV2LCB1Vik7DQo+ICt9DQo+ICsNCj4gK2ludCByZWd1bGF0b3JfZ2V0X3N1c3BlbmRfdmFs dWUoc3RydWN0IHVkZXZpY2UgKmRldikNCj4gK3sNCj4gKyBjb25zdCBzdHJ1Y3QgZG1fcmVndWxh dG9yX29wcyAqb3BzID0gZGV2X2dldF9kcml2ZXJfb3BzKGRldik7DQo+ICsNCj4gKyBpZiAoIW9w cy0+Z2V0X3N1c3BlbmRfdmFsdWUpDQo+ICsgcmV0dXJuIC1FTk9TWVM7DQo+ICsNCj4gKyByZXR1 cm4gb3BzLT5nZXRfc3VzcGVuZF92YWx1ZShkZXYpOw0KPiArfQ0KPiArDQo+ICAvKg0KPiAgICog VG8gYmUgY2FsbGVkIHdpdGggYXQgbW9zdCBjYXV0aW9uIGFzIHRoZXJlIGlzIG5vIGNoZWNrDQo+ ICAgKiBiZWZvcmUgc2V0dGluZyB0aGUgYWN0dWFsIHZvbHRhZ2UgdmFsdWUuDQo+IEBAIC0xNzAs NiArMTk3LDI2IEBAIGludCByZWd1bGF0b3Jfc2V0X2VuYWJsZV9pZl9hbGxvd2VkKHN0cnVjdCB1 ZGV2aWNlICpkZXYsIGJvb2wgZW5hYmxlKQ0KPiAgcmV0dXJuIHJldDsNCj4gIH0NCj4gIA0KPiAr aW50IHJlZ3VsYXRvcl9zZXRfc3VzcGVuZF9lbmFibGUoc3RydWN0IHVkZXZpY2UgKmRldiwgYm9v bCBlbmFibGUpDQo+ICt7DQo+ICsgY29uc3Qgc3RydWN0IGRtX3JlZ3VsYXRvcl9vcHMgKm9wcyA9 IGRldl9nZXRfZHJpdmVyX29wcyhkZXYpOw0KPiArDQo+ICsgaWYgKCFvcHMtPnNldF9zdXNwZW5k X2VuYWJsZSkNCj4gKyByZXR1cm4gLUVOT1NZUzsNCj4gKw0KPiArIHJldHVybiBvcHMtPnNldF9z dXNwZW5kX2VuYWJsZShkZXYsIGVuYWJsZSk7DQo+ICt9DQo+ICsNCj4gK2ludCByZWd1bGF0b3Jf Z2V0X3N1c3BlbmRfZW5hYmxlKHN0cnVjdCB1ZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsgY29uc3Qg c3RydWN0IGRtX3JlZ3VsYXRvcl9vcHMgKm9wcyA9IGRldl9nZXRfZHJpdmVyX29wcyhkZXYpOw0K PiArDQo+ICsgaWYgKCFvcHMtPmdldF9zdXNwZW5kX2VuYWJsZSkNCj4gKyByZXR1cm4gLUVOT1NZ UzsNCj4gKw0KPiArIHJldHVybiBvcHMtPmdldF9zdXNwZW5kX2VuYWJsZShkZXYpOw0KPiArfQ0K PiArDQo+ICBpbnQgcmVndWxhdG9yX2dldF9tb2RlKHN0cnVjdCB1ZGV2aWNlICpkZXYpDQo+ICB7 DQo+ICBjb25zdCBzdHJ1Y3QgZG1fcmVndWxhdG9yX29wcyAqb3BzID0gZGV2X2dldF9kcml2ZXJf b3BzKGRldik7DQo+IEBAIC0yMzUsNiArMjgyLDE0IEBAIGludCByZWd1bGF0b3JfYXV0b3NldChz dHJ1Y3QgdWRldmljZSAqZGV2KQ0KPiAgaW50IHJldCA9IDA7DQo+ICANCj4gIHVjX3BkYXRhID0g ZGV2X2dldF91Y2xhc3NfcGxhdGRhdGEoZGV2KTsNCj4gKw0KPiArIHJldCA9IHJlZ3VsYXRvcl9z ZXRfc3VzcGVuZF9lbmFibGUoZGV2LCB1Y19wZGF0YS0+c3VzcGVuZF9vbik7DQo+ICsgaWYgKCFy ZXQgJiYgdWNfcGRhdGEtPnN1c3BlbmRfb24pIHsNCj4gKyByZXQgPSByZWd1bGF0b3Jfc2V0X3N1 c3BlbmRfdmFsdWUoZGV2LCB1Y19wZGF0YS0+c3VzcGVuZF91Vik7DQo+ICsgaWYgKCFyZXQpDQo+ ICsgcmV0dXJuIHJldDsNCj4gKyB9DQo+ICsNCj4gIGlmICghdWNfcGRhdGEtPmFsd2F5c19vbiAm JiAhdWNfcGRhdGEtPmJvb3Rfb24pDQo+ICByZXR1cm4gLUVNRURJVU1UWVBFOw0KPiAgDQo+IEBA IC0yNDMsNiArMjk4LDggQEAgaW50IHJlZ3VsYXRvcl9hdXRvc2V0KHN0cnVjdCB1ZGV2aWNlICpk ZXYpDQo+ICANCj4gIGlmICh1Y19wZGF0YS0+ZmxhZ3MgJiBSRUdVTEFUT1JfRkxBR19BVVRPU0VU X1VWKQ0KPiAgcmV0ID0gcmVndWxhdG9yX3NldF92YWx1ZShkZXYsIHVjX3BkYXRhLT5taW5fdVYp Ow0KPiArIGlmICh1Y19wZGF0YS0+aW5pdF91ViA+IDApDQo+ICsgcmV0ID0gcmVndWxhdG9yX3Nl dF92YWx1ZShkZXYsIHVjX3BkYXRhLT5pbml0X3VWKTsNCj4gIGlmICghcmV0ICYmICh1Y19wZGF0 YS0+ZmxhZ3MgJiBSRUdVTEFUT1JfRkxBR19BVVRPU0VUX1VBKSkNCj4gIHJldCA9IHJlZ3VsYXRv cl9zZXRfY3VycmVudChkZXYsIHVjX3BkYXRhLT5taW5fdUEpOw0KPiAgDQo+IEBAIC0zNjMsNiAr NDIwLDcgQEAgc3RhdGljIGludCByZWd1bGF0b3JfcG9zdF9iaW5kKHN0cnVjdCB1ZGV2aWNlICpk ZXYpDQo+ICBzdGF0aWMgaW50IHJlZ3VsYXRvcl9wcmVfcHJvYmUoc3RydWN0IHVkZXZpY2UgKmRl dikNCj4gIHsNCj4gIHN0cnVjdCBkbV9yZWd1bGF0b3JfdWNsYXNzX3BsYXRkYXRhICp1Y19wZGF0 YTsNCj4gKyBvZm5vZGUgbm9kZTsNCj4gIA0KPiAgdWNfcGRhdGEgPSBkZXZfZ2V0X3VjbGFzc19w bGF0ZGF0YShkZXYpOw0KPiAgaWYgKCF1Y19wZGF0YSkNCj4gQEAgLTM3Myw2ICs0MzEsOCBAQCBz dGF0aWMgaW50IHJlZ3VsYXRvcl9wcmVfcHJvYmUoc3RydWN0IHVkZXZpY2UgKmRldikNCj4gIC1F Tk9EQVRBKTsNCj4gIHVjX3BkYXRhLT5tYXhfdVYgPSBkZXZfcmVhZF91MzJfZGVmYXVsdChkZXYs ICJyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCIsDQo+ICAtRU5PREFUQSk7DQo+ICsgdWNfcGRhdGEt PmluaXRfdVYgPSBkZXZfcmVhZF91MzJfZGVmYXVsdChkZXYsICJyZWd1bGF0b3ItaW5pdC1taWNy b3ZvbHQiLA0KPiArIC1FTk9EQVRBKTsNCj4gIHVjX3BkYXRhLT5taW5fdUEgPSBkZXZfcmVhZF91 MzJfZGVmYXVsdChkZXYsICJyZWd1bGF0b3ItbWluLW1pY3JvYW1wIiwNCj4gIC1FTk9EQVRBKTsN Cj4gIHVjX3BkYXRhLT5tYXhfdUEgPSBkZXZfcmVhZF91MzJfZGVmYXVsdChkZXYsICJyZWd1bGF0 b3ItbWF4LW1pY3JvYW1wIiwNCj4gQEAgLTM4Miw2ICs0NDIsMTYgQEAgc3RhdGljIGludCByZWd1 bGF0b3JfcHJlX3Byb2JlKHN0cnVjdCB1ZGV2aWNlICpkZXYpDQo+ICB1Y19wZGF0YS0+cmFtcF9k ZWxheSA9IGRldl9yZWFkX3UzMl9kZWZhdWx0KGRldiwgInJlZ3VsYXRvci1yYW1wLWRlbGF5IiwN Cj4gICAgICAwKTsNCj4gIA0KPiArIG5vZGUgPSBkZXZfcmVhZF9zdWJub2RlKGRldiwgInJlZ3Vs YXRvci1zdGF0ZS1tZW0iKTsNCj4gKyBpZiAob2Zub2RlX3ZhbGlkKG5vZGUpKSB7DQo+ICsgdWNf cGRhdGEtPnN1c3BlbmRfb24gPSAhb2Zub2RlX3JlYWRfYm9vbChub2RlLCAicmVndWxhdG9yLW9m Zi1pbi1zdXNwZW5kIik7DQo+ICsgaWYgKG9mbm9kZV9yZWFkX3UzMihub2RlLCAicmVndWxhdG9y LXN1c3BlbmQtbWljcm92b2x0IiwgJnVjX3BkYXRhLT5zdXNwZW5kX3VWKSkNCj4gKyB1Y19wZGF0 YS0+c3VzcGVuZF91ViA9IHVjX3BkYXRhLT5tYXhfdVY7DQo+ICsgfSBlbHNlIHsNCj4gKyB1Y19w ZGF0YS0+c3VzcGVuZF9vbiA9IHRydWU7DQo+ICsgdWNfcGRhdGEtPnN1c3BlbmRfdVYgPSB1Y19w ZGF0YS0+bWF4X3VWOw0KPiArIH0NCj4gKw0KPiAgLyogVGhvc2UgdmFsdWVzIGFyZSBvcHRpb25h bCAoLUVOT0RBVEEgaWYgdW5zZXQpICovDQo+ICBpZiAoKHVjX3BkYXRhLT5taW5fdVYgIT0gLUVO T0RBVEEpICYmDQo+ICAgICAgKHVjX3BkYXRhLT5tYXhfdVYgIT0gLUVOT0RBVEEpICYmDQo+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL3Bvd2VyL3JlZ3VsYXRvci5oIGIvaW5jbHVkZS9wb3dlci9yZWd1 bGF0b3IuaA0KPiBpbmRleCA2YzZlMmNkNGY5OTYuLmRkNjFlYjRjY2JkZSAxMDA2NDQNCj4gLS0t IGEvaW5jbHVkZS9wb3dlci9yZWd1bGF0b3IuaA0KPiArKysgYi9pbmNsdWRlL3Bvd2VyL3JlZ3Vs YXRvci5oDQo+IEBAIC0xNjgsNiArMTY4LDcgQEAgc3RydWN0IGRtX3JlZ3VsYXRvcl91Y2xhc3Nf cGxhdGRhdGEgew0KPiAgaW50IG1vZGVfY291bnQ7DQo+ICBpbnQgbWluX3VWOw0KPiAgaW50IG1h eF91VjsNCj4gKyBpbnQgaW5pdF91VjsNCj4gIGludCBtaW5fdUE7DQo+ICBpbnQgbWF4X3VBOw0K PiAgdW5zaWduZWQgaW50IHJhbXBfZGVsYXk7DQo+IEBAIC0xNzcsNiArMTc4LDggQEAgc3RydWN0 IGRtX3JlZ3VsYXRvcl91Y2xhc3NfcGxhdGRhdGEgew0KPiAgaW50IGZsYWdzOw0KPiAgdTggY3Ry bF9yZWc7DQo+ICB1OCB2b2x0X3JlZzsNCj4gKyBib29sIHN1c3BlbmRfb247DQo+ICsgdTMyIHN1 c3BlbmRfdVY7DQo+ICB9Ow0KPiAgDQo+ICAvKiBSZWd1bGF0b3IgZGV2aWNlIG9wZXJhdGlvbnMg Ki8NCj4gQEAgLTE5NCw2ICsxOTcsMTkgQEAgc3RydWN0IGRtX3JlZ3VsYXRvcl9vcHMgew0KPiAg aW50ICgqc2V0X3ZhbHVlKShzdHJ1Y3QgdWRldmljZSAqZGV2LCBpbnQgdVYpOw0KPiAgDQo+ICAv KioNCj4gKyAqIFRoZSByZWd1bGF0b3Igc3VzcGVuZCBvdXRwdXQgdmFsdWUgZnVuY3Rpb24gY2Fs bHMgb3BlcmF0ZXMNCj4gKyAqIG9uIGEgbWljcm8gVm9sdHMuDQo+ICsgKg0KPiArICogZ2V0L3Nl dF9zdXNwZW5fdmFsdWUgLSBnZXQvc2V0IHN1c3BlbmQgbW9kZSBvdXRwdXQgdmFsdWUNCj4gKyAq IEBkZXYgICAgICAgICAgLSByZWd1bGF0b3IgZGV2aWNlDQo+ICsgKiBTZXRzOg0KPiArICogQHVW ICAgICAgICAgICAtIHNldCB0aGUgc3VzcGVuZCBvdXRwdXQgdmFsdWUgW21pY3JvIFZvbHRzXQ0K PiArICogQHJldHVybiBvdXRwdXQgdmFsdWUgW3VWXSBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVy cm5vIGlmIGZhaWwuDQo+ICsgKi8NCj4gKyBpbnQgKCpzZXRfc3VzcGVuZF92YWx1ZSkoc3RydWN0 IHVkZXZpY2UgKmRldiwgaW50IHVWKTsNCj4gKyBpbnQgKCpnZXRfc3VzcGVuZF92YWx1ZSkoc3Ry dWN0IHVkZXZpY2UgKmRldik7DQo+ICsNCj4gKyAvKioNCj4gICogVGhlIHJlZ3VsYXRvciBvdXRw dXQgY3VycmVudCBmdW5jdGlvbiBjYWxscyBvcGVyYXRlcyBvbiBhIG1pY3JvIEFtcHMuDQo+ICAq DQo+ICAqIGdldC9zZXRfY3VycmVudCAtIGdldC9zZXQgb3V0cHV0IGN1cnJlbnQgb2YgdGhlIGdp dmVuIG91dHB1dCBudW1iZXINCj4gQEAgLTIxOCw2ICsyMzQsMTkgQEAgc3RydWN0IGRtX3JlZ3Vs YXRvcl9vcHMgew0KPiAgaW50ICgqc2V0X2VuYWJsZSkoc3RydWN0IHVkZXZpY2UgKmRldiwgYm9v bCBlbmFibGUpOw0KPiAgDQo+ICAvKioNCj4gKyAqIFRoZSBtb3N0IGJhc2ljIGZlYXR1cmUgb2Yg dGhlIHJlZ3VsYXRvciBvdXRwdXQgaXMgaXRzIGVuYWJsZSBzdGF0ZQ0KPiArICogaW4gc3VzcGVu ZCBtb2RlLg0KPiArICoNCj4gKyAqIGdldC9zZXRfc3VzcGVuZF9lbmFibGUgLSBnZXQvc2V0IGVu YWJsZSBzdGF0ZSBvZiB0aGUgc3VzcGVuZCBvdXRwdXQNCj4gKyAqIEBkZXYgICAgICAgICAgIC0g cmVndWxhdG9yIGRldmljZQ0KPiArICogU2V0czoNCj4gKyAqIEBlbmFibGUgICAgICAgICAtIHNl dCB0cnVlIC0gZW5hYmxlIG9yIGZhbHNlIC0gZGlzYWJsZQ0KPiArICogQHJldHVybiB0cnVlL2Zh bHNlIGZvciBnZXQgb3IgLWVycm5vIGlmIGZhaWw7IDAgLyAtZXJybm8gZm9yIHNldC4NCj4gKyAq Lw0KPiArIGludCAoKnNldF9zdXNwZW5kX2VuYWJsZSkoc3RydWN0IHVkZXZpY2UgKmRldiwgYm9v bCBlbmFibGUpOw0KPiArIGludCAoKmdldF9zdXNwZW5kX2VuYWJsZSkoc3RydWN0IHVkZXZpY2Ug KmRldik7DQo+ICsNCj4gKyAvKioNCj4gICogVGhlICdnZXQvc2V0X21vZGUoKScgZnVuY3Rpb24g Y2FsbHMgc2hvdWxkIG9wZXJhdGUgb24gYSBkcml2ZXItDQo+ICAqIHNwZWNpZmljIG1vZGUgaWQg ZGVmaW5pdGlvbnMsIHdoaWNoIHNob3VsZCBiZSBmb3VuZCBpbjoNCj4gICogZmllbGQgJ2lkJyBv ZiBzdHJ1Y3QgZG1fcmVndWxhdG9yX21vZGUuDQo+IEBAIC0yNjIsNiArMjkxLDIzIEBAIGludCBy ZWd1bGF0b3JfZ2V0X3ZhbHVlKHN0cnVjdCB1ZGV2aWNlICpkZXYpOw0KPiAgaW50IHJlZ3VsYXRv cl9zZXRfdmFsdWUoc3RydWN0IHVkZXZpY2UgKmRldiwgaW50IHVWKTsNCj4gIA0KPiAgLyoqDQo+ ICsgKiByZWd1bGF0b3Jfc2V0X3N1c3BlbmRfdmFsdWU6IHNldCB0aGUgc3VzcGVuZCBtaWNyb3Zv bHRhZ2UgdmFsdWUgb2YgYSBnaXZlbiByZWd1bGF0b3IuDQo+ICsgKg0KPiArICogQGRldiAgICAt IHBvaW50ZXIgdG8gdGhlIHJlZ3VsYXRvciBkZXZpY2UNCj4gKyAqIEB1ViAgICAgLSB0aGUgb3V0 cHV0IHN1c3BlbmQgdmFsdWUgdG8gc2V0IFttaWNybyBWb2x0c10NCj4gKyAqIEByZXR1cm4gLSAw IG9uIHN1Y2Nlc3Mgb3IgLWVycm5vIHZhbCBpZiBmYWlscw0KPiArICovDQo+ICtpbnQgcmVndWxh dG9yX3NldF9zdXNwZW5kX3ZhbHVlKHN0cnVjdCB1ZGV2aWNlICpkZXYsIGludCB1Vik7DQo+ICsN Cj4gKy8qKg0KPiArICogcmVndWxhdG9yX2dldF9zdXNwZW5kX3ZhbHVlOiBnZXQgdGhlIHN1c3Bl bmQgbWljcm92b2x0YWdlIHZhbHVlIG9mIGEgZ2l2ZW4gcmVndWxhdG9yLg0KPiArICoNCj4gKyAq IEBkZXYgICAgLSBwb2ludGVyIHRvIHRoZSByZWd1bGF0b3IgZGV2aWNlDQo+ICsgKiBAcmV0dXJu IC0gcG9zaXRpdmUgb3V0cHV0IHZhbHVlIFt1Vl0gb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJu byBpZiBmYWlsLg0KPiArICovDQo+ICtpbnQgcmVndWxhdG9yX2dldF9zdXNwZW5kX3ZhbHVlKHN0 cnVjdCB1ZGV2aWNlICpkZXYpOw0KPiArDQo+ICsvKioNCj4gICAqIHJlZ3VsYXRvcl9zZXRfdmFs dWVfZm9yY2U6IHNldCB0aGUgbWljcm92b2x0YWdlIHZhbHVlIG9mIGEgZ2l2ZW4gcmVndWxhdG9y DQo+ICAgKiAgICAgICB3aXRob3V0IGFueSBtaW4tLG1heCBjb25kaXRpb24gY2hlY2sNCj4gICAq DQo+IEBAIC0zMTcsNiArMzYzLDI0IEBAIGludCByZWd1bGF0b3Jfc2V0X2VuYWJsZShzdHJ1Y3Qg dWRldmljZSAqZGV2LCBib29sIGVuYWJsZSk7DQo+ICBpbnQgcmVndWxhdG9yX3NldF9lbmFibGVf aWZfYWxsb3dlZChzdHJ1Y3QgdWRldmljZSAqZGV2LCBib29sIGVuYWJsZSk7DQo+ICANCj4gIC8q Kg0KPiArICogcmVndWxhdG9yX3NldF9zdXNwZW5kX2VuYWJsZTogc2V0IHJlZ3VsYXRvciBzdXNw ZW5kIGVuYWJsZSBzdGF0ZQ0KPiArICoNCj4gKyAqIEBkZXYgICAgLSBwb2ludGVyIHRvIHRoZSBy ZWd1bGF0b3IgZGV2aWNlDQo+ICsgKiBAZW5hYmxlIC0gc2V0IHRydWUgb3IgZmFsc2UNCj4gKyAq IEByZXR1cm4gLSAwIG9uIHN1Y2Nlc3Mgb3IgLWVycm5vIHZhbCBpZiBmYWlscw0KPiArICovDQo+ ICtpbnQgcmVndWxhdG9yX3NldF9zdXNwZW5kX2VuYWJsZShzdHJ1Y3QgdWRldmljZSAqZGV2LCBi b29sIGVuYWJsZSk7DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgKiByZWd1bGF0b3JfZ2V0X3N1c3Bl bmRfZW5hYmxlOiBnZXQgcmVndWxhdG9yIHN1c3BlbmQgZW5hYmxlIHN0YXRlDQo+ICsgKg0KPiAr ICogQGRldiAgICAtIHBvaW50ZXIgdG8gdGhlIHJlZ3VsYXRvciBkZXZpY2UNCj4gKyAqIEByZXR1 cm4gLSB0cnVlL2ZhbHNlIG9mIGVuYWJsZSBzdGF0ZSBvciAtZXJybm8gdmFsIGlmIGZhaWxzDQo+ ICsgKi8NCj4gK2ludCByZWd1bGF0b3JfZ2V0X3N1c3BlbmRfZW5hYmxlKHN0cnVjdCB1ZGV2aWNl ICpkZXYpOw0KPiArDQo+ICsvKioNCj4gICAqIHJlZ3VsYXRvcl9nZXRfbW9kZTogZ2V0IGFjdGl2 ZSBvcGVyYXRpb24gbW9kZSBpZCBvZiBhIGdpdmVuIHJlZ3VsYXRvcg0KPiAgICoNCj4gICAqIEBk ZXYgICAgLSBwb2ludGVyIHRvIHRoZSByZWd1bGF0b3IgZGV2aWNlDQo+IGRpZmYgLS1naXQgYS90 ZXN0L2RtL3JlZ3VsYXRvci5jIGIvdGVzdC9kbS9yZWd1bGF0b3IuYw0KPiBpbmRleCBlNTEwNTM5 NTQyYjYuLmI5Njc5MDI0OTNkZCAxMDA2NDQNCj4gLS0tIGEvdGVzdC9kbS9yZWd1bGF0b3IuYw0K PiArKysgYi90ZXN0L2RtL3JlZ3VsYXRvci5jDQo+IEBAIC0yMTUsNiArMjE1LDYzIEBAIHN0YXRp YyBpbnQgZG1fdGVzdF9wb3dlcl9yZWd1bGF0b3Jfc2V0X2dldF9tb2RlKHN0cnVjdCB1bml0X3Rl c3Rfc3RhdGUgKnV0cykNCj4gIH0NCj4gIERNX1RFU1QoZG1fdGVzdF9wb3dlcl9yZWd1bGF0b3Jf c2V0X2dldF9tb2RlLCBETV9URVNURl9TQ0FOX0ZEVCk7DQo+ICANCj4gKy8qIFRlc3QgcmVndWxh dG9yIHNldCBhbmQgZ2V0IHN1c3BlbmQgVm9sdGFnZSBtZXRob2QgKi8NCj4gK3N0YXRpYyBpbnQg ZG1fdGVzdF9wb3dlcl9yZWd1bGF0b3Jfc2V0X2dldF9zdXNwZW5kX3ZvbHRhZ2Uoc3RydWN0IHVu aXRfdGVzdF9zdGF0ZSAqdXRzKQ0KPiArew0KPiArIHN0cnVjdCBkbV9yZWd1bGF0b3JfdWNsYXNz X3BsYXRkYXRhICp1Y19wZGF0YTsNCj4gKyBjb25zdCBzdHJ1Y3QgZG1fcmVndWxhdG9yX29wcyAq b3BzOw0KPiArIHN0cnVjdCB1ZGV2aWNlICpkZXY7DQo+ICsgY29uc3QgY2hhciAqcGxhdG5hbWU7 DQo+ICsgaW50IHZhbF9zZXQsIHZhbF9nZXQ7DQo+ICsNCj4gKyAvKiBTZXQgYW5kIGdldCBWb2x0 YWdlIG9mIEJVQ0sxIC0gc2V0IHRvICdtaW4nIGNvbnN0cmFpbnQgKi8NCj4gKyBwbGF0bmFtZSA9 IHJlZ3VsYXRvcl9uYW1lc1tCVUNLMV1bUExBVE5BTUVdOw0KPiArIHV0X2Fzc2VydG9rKHJlZ3Vs YXRvcl9nZXRfYnlfcGxhdG5hbWUocGxhdG5hbWUsICZkZXYpKTsNCj4gKw0KPiArIHVjX3BkYXRh ID0gZGV2X2dldF91Y2xhc3NfcGxhdGRhdGEoZGV2KTsNCj4gKyB1dF9hc3NlcnQodWNfcGRhdGEp Ow0KPiArDQo+ICsgb3BzID0gZGV2X2dldF9kcml2ZXJfb3BzKGRldik7DQo+ICsNCj4gKyBpZiAo b3BzLT5zZXRfc3VzcGVuZF92YWx1ZSAmJiBvcHMtPmdldF9zdXNwZW5kX3ZhbHVlKSB7DQo+ICsg dmFsX3NldCA9IHVjX3BkYXRhLT5zdXNwZW5kX3VWOw0KPiArIHV0X2Fzc2VydG9rKHJlZ3VsYXRv cl9zZXRfc3VzcGVuZF92YWx1ZShkZXYsIHZhbF9zZXQpKTsNCj4gKyB2YWxfZ2V0ID0gcmVndWxh dG9yX2dldF9zdXNwZW5kX3ZhbHVlKGRldik7DQo+ICsgdXRfYXNzZXJ0KHZhbF9nZXQgPj0gMCk7 DQo+ICsNCj4gKyB1dF9hc3NlcnRlcSh2YWxfc2V0LCB2YWxfZ2V0KTsNCj4gKyB9DQo+ICsgcmV0 dXJuIDA7DQo+ICt9DQo+ICtETV9URVNUKGRtX3Rlc3RfcG93ZXJfcmVndWxhdG9yX3NldF9nZXRf c3VzcGVuZF92b2x0YWdlLCBETV9URVNURl9TQ0FOX0ZEVCk7DQo+ICsNCj4gKy8qIFRlc3QgcmVn dWxhdG9yIHNldCBhbmQgZ2V0IHN1c3BlbmQgRW5hYmxlIG1ldGhvZCAqLw0KPiArc3RhdGljIGlu dCBkbV90ZXN0X3Bvd2VyX3JlZ3VsYXRvcl9zZXRfZ2V0X3N1c3BlbmRfZW5hYmxlKHN0cnVjdCB1 bml0X3Rlc3Rfc3RhdGUgKnV0cykNCj4gK3sNCj4gKyBjb25zdCBzdHJ1Y3QgZG1fcmVndWxhdG9y X29wcyAqb3BzOw0KPiArIGNvbnN0IGNoYXIgKnBsYXRuYW1lOw0KPiArIHN0cnVjdCB1ZGV2aWNl ICpkZXY7DQo+ICsgYm9vbCB2YWxfc2V0ID0gdHJ1ZTsNCj4gKw0KPiArIC8qIFNldCB0aGUgRW5h YmxlIG9mIExETzEgLSBkZWZhdWx0IGlzIGRpc2FibGVkICovDQo+ICsgcGxhdG5hbWUgPSByZWd1 bGF0b3JfbmFtZXNbTERPMV1bUExBVE5BTUVdOw0KPiArIHV0X2Fzc2VydG9rKHJlZ3VsYXRvcl9n ZXRfYnlfcGxhdG5hbWUocGxhdG5hbWUsICZkZXYpKTsNCj4gKw0KPiArIG9wcyA9IGRldl9nZXRf ZHJpdmVyX29wcyhkZXYpOw0KPiArDQo+ICsgaWYgKG9wcy0+c2V0X3N1c3BlbmRfZW5hYmxlICYm IG9wcy0+Z2V0X3N1c3BlbmRfZW5hYmxlKSB7DQo+ICsgdXRfYXNzZXJ0b2socmVndWxhdG9yX3Nl dF9zdXNwZW5kX2VuYWJsZShkZXYsIHZhbF9zZXQpKTsNCj4gKw0KPiArIC8qDQo+ICsgKiBHZXQg dGhlIEVuYWJsZSBzdGF0ZSBvZiBMRE8xIGFuZA0KPiArICogY29tcGFyZSBpdCB3aXRoIHRoZSBy ZXF1ZXN0ZWQgb25lDQo+ICsgKi8NCj4gKyB1dF9hc3NlcnRlcShyZWd1bGF0b3JfZ2V0X3N1c3Bl bmRfZW5hYmxlKGRldiksIHZhbF9zZXQpOw0KPiArIH0NCj4gKyByZXR1cm4gMDsNCj4gK30NCj4g K0RNX1RFU1QoZG1fdGVzdF9wb3dlcl9yZWd1bGF0b3Jfc2V0X2dldF9zdXNwZW5kX2VuYWJsZSwg RE1fVEVTVEZfU0NBTl9GRFQpOw0KPiArDQo+ICAvKiBUZXN0IHJlZ3VsYXRvciBhdXRvc2V0IG1l dGhvZCAqLw0KPiAgc3RhdGljIGludCBkbV90ZXN0X3Bvd2VyX3JlZ3VsYXRvcl9hdXRvc2V0KHN0 cnVjdCB1bml0X3Rlc3Rfc3RhdGUgKnV0cykNCj4gIHsNCj4gDQogDQogDQogDQogDQo=