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=-5.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_SANE_2 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 21613C433DF for ; Tue, 30 Jun 2020 01:14:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E102B20780 for ; Tue, 30 Jun 2020 01:14:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="rBf9Ble7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726615AbgF3BOT (ORCPT ); Mon, 29 Jun 2020 21:14:19 -0400 Received: from mailgw02.mediatek.com ([1.203.163.81]:5347 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726612AbgF3BOT (ORCPT ); Mon, 29 Jun 2020 21:14:19 -0400 X-UUID: 2a923b0c475d4171886ffe83a0d45f65-20200630 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=SS0pJVdbsiL6JVdMxrk/GV4yeHEBmXgpP0noRgOebgk=; b=rBf9Ble7epekCYNoS6Aan2aSRblfrgwhOiCLMJZaM6O9wDF/KiHCmAkoFE4trrQmxSnlYcRRW/cFWGkfJ93U8n8uVwJ/YW2kExym8Npdf5sgPhXLypP3in4vRNfHrXVHIDoscNfbBaqIW6g5wy6+giXXeXvFKW3N5rgSNO7lqrk=; X-UUID: 2a923b0c475d4171886ffe83a0d45f65-20200630 Received: from mtkcas34.mediatek.inc [(172.27.4.253)] by mailgw02.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLS) with ESMTP id 1177477883; Tue, 30 Jun 2020 09:14:10 +0800 Received: from MTKCAS32.mediatek.inc (172.27.4.184) by MTKMBS31N1.mediatek.inc (172.27.4.69) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 30 Jun 2020 09:14:08 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS32.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 30 Jun 2020 09:14:07 +0800 Message-ID: <1593479628.17166.25.camel@mhfsdcap03> Subject: Re: [PATCH V10 2/2] media: i2c: ov02a10: Add OV02A10 image sensor driver From: Dongchun Zhu To: Tomasz Figa CC: Linus Walleij , Bartosz Golaszewski , Mauro Carvalho Chehab , Andy Shevchenko , Rob Herring , Mark Rutland , Sakari Ailus , Nicolas Boichat , Matthias Brugger , Cao Bing Bu , srv_heupstream , "moderated list:ARM/Mediatek SoC support" , "list@263.net:IOMMU DRIVERS , Joerg Roedel ," , Sj Huang , Linux Media Mailing List , linux-devicetree , Louis Kuo , "Shengnan Wang =?UTF-8?Q?=28=E7=8E=8B=E5=9C=A3=E7=94=B7=29?=" , Date: Tue, 30 Jun 2020 09:13:48 +0800 In-Reply-To: References: <20200615122937.18965-1-dongchun.zhu@mediatek.com> <20200615122937.18965-3-dongchun.zhu@mediatek.com> <20200618191026.GA73379@chromium.org> <1593417224.17166.10.camel@mhfsdcap03> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 95C4641E1A68A30AD0ACD32A5821ABBCDA3842FF6C1DACC921D99503365618662000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org SGkgVG9tYXN6LA0KDQpPbiBNb24sIDIwMjAtMDYtMjkgYXQgMTI6MjcgKzAyMDAsIFRvbWFzeiBG aWdhIHdyb3RlOg0KPiBPbiBNb24sIEp1biAyOSwgMjAyMCBhdCA5OjU0IEFNIERvbmdjaHVuIFpo dSA8ZG9uZ2NodW4uemh1QG1lZGlhdGVrLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBIaSBUb21hc3os DQo+ID4NCj4gPiBPbiBUaHUsIDIwMjAtMDYtMTggYXQgMTk6MTAgKzAwMDAsIFRvbWFzeiBGaWdh IHdyb3RlOg0KPiA+ID4gSGkgRG9uZ2NodW4sDQo+ID4gPg0KPiA+ID4gT24gTW9uLCBKdW4gMTUs IDIwMjAgYXQgMDg6Mjk6MzdQTSArMDgwMCwgRG9uZ2NodW4gWmh1IHdyb3RlOg0KPiA+ID4gPiBB ZGQgYSBWNEwyIHN1Yi1kZXZpY2UgZHJpdmVyIGZvciBPVjAyQTEwIGltYWdlIHNlbnNvci4NCj4g PiA+ID4NCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogRG9uZ2NodW4gWmh1IDxkb25nY2h1bi56aHVA bWVkaWF0ZWsuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIE1BSU5UQUlORVJTICAgICAgICAg ICAgICAgICB8ICAgIDEgKw0KPiA+ID4gPiAgZHJpdmVycy9tZWRpYS9pMmMvS2NvbmZpZyAgIHwg ICAxMyArDQo+ID4gPiA+ICBkcml2ZXJzL21lZGlhL2kyYy9NYWtlZmlsZSAgfCAgICAxICsNCj4g PiA+ID4gIGRyaXZlcnMvbWVkaWEvaTJjL292MDJhMTAuYyB8IDEwNDIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAx MDU3IGluc2VydGlvbnMoKykNCj4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21l ZGlhL2kyYy9vdjAyYTEwLmMNCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBUaGFuayB5b3UgZm9yIHRo ZSBwYXRjaC4gUGxlYXNlIHNlZSBteSBjb21tZW50cyBpbmxpbmUuDQo+ID4gPg0KPiA+DQo+ID4g W3NuaXBdDQo+ID4NCj4gPiA+ID4gK3N0YXRpYyBpbnQgb3YwMmExMF9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudCAqY2xpZW50KQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICAgc3RydWN0IGRldmljZSAq ZGV2ID0gJmNsaWVudC0+ZGV2Ow0KPiA+ID4gPiArICAgc3RydWN0IG92MDJhMTAgKm92MDJhMTA7 DQo+ID4gPiA+ICsgICB1bnNpZ25lZCBpbnQgcm90YXRpb247DQo+ID4gPiA+ICsgICB1bnNpZ25l ZCBpbnQgY2xvY2tfbGFuZV90eF9zcGVlZDsNCj4gPiA+ID4gKyAgIHVuc2lnbmVkIGludCBpOw0K PiA+ID4gPiArICAgaW50IHJldDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgb3YwMmExMCA9IGRl dm1fa3phbGxvYyhkZXYsIHNpemVvZigqb3YwMmExMCksIEdGUF9LRVJORUwpOw0KPiA+ID4gPiAr ICAgaWYgKCFvdjAyYTEwKQ0KPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArICAgcmV0ID0gb3YwMmExMF9jaGVja19od2NmZyhkZXYsIG92MDJh MTApOw0KPiA+ID4gPiArICAgaWYgKHJldCkgew0KPiA+ID4gPiArICAgICAgICAgICBkZXZfZXJy KGRldiwgImZhaWxlZCB0byBjaGVjayBIVyBjb25maWd1cmF0aW9uOiAlZCIsIHJldCk7DQo+ID4g PiA+ICsgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gPiA+ICsgICB9DQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAgIHY0bDJfaTJjX3N1YmRldl9pbml0KCZvdjAyYTEwLT5zdWJkZXYsIGNsaWVudCwg Jm92MDJhMTBfc3ViZGV2X29wcyk7DQo+ID4gPiA+ICsgICBvdjAyYTEwLT5taXBpX2Nsb2NrX3R4 X3NwZWVkID0gT1YwMkExMF9NSVBJX1RYX1NQRUVEX0RFRkFVTFQ7DQo+ID4gPiA+ICsgICBvdjAy YTEwLT5mbXQuY29kZSA9IE1FRElBX0JVU19GTVRfU0JHR1IxMF8xWDEwOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgICAvKiBPcHRpb25hbCBpbmRpY2F0aW9uIG9mIHBoeXNpY2FsIHJvdGF0aW9uIG9m IHNlbnNvciAqLw0KPiA+ID4gPiArICAgcmV0ID0gZndub2RlX3Byb3BlcnR5X3JlYWRfdTMyKGRl dl9md25vZGUoZGV2KSwgInJvdGF0aW9uIiwgJnJvdGF0aW9uKTsNCj4gPiA+ID4gKyAgIGlmICgh cmV0ICYmIHJvdGF0aW9uID09IDE4MCkgew0KPiA+ID4gPiArICAgICAgICAgICBvdjAyYTEwLT51 cHNpZGVfZG93biA9IHRydWU7DQo+ID4gPiA+ICsgICAgICAgICAgIG92MDJhMTAtPmZtdC5jb2Rl ID0gTUVESUFfQlVTX0ZNVF9TUkdHQjEwXzFYMTA7DQo+ID4gPiA+ICsgICB9DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyAgIC8qIE9wdGlvbmFsIGluZGljYXRpb24gb2YgbWlwaSBUWCBzcGVlZCAqLw0K PiA+ID4gPiArICAgcmV0ID0gZndub2RlX3Byb3BlcnR5X3JlYWRfdTMyKGRldl9md25vZGUoZGV2 KSwgIm92dGksbWlwaS10eC1zcGVlZCIsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmNsb2NrX2xhbmVfdHhfc3BlZWQpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsg ICBpZiAoIXJldCkNCj4gPiA+ID4gKyAgICAgICAgICAgb3YwMmExMC0+bWlwaV9jbG9ja190eF9z cGVlZCA9IGNsb2NrX2xhbmVfdHhfc3BlZWQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgIC8qIEdl dCBzeXN0ZW0gY2xvY2sgKGVjbGspICovDQo+ID4gPiA+ICsgICBvdjAyYTEwLT5lY2xrID0gZGV2 bV9jbGtfZ2V0KGRldiwgImVjbGsiKTsNCj4gPiA+ID4gKyAgIGlmIChJU19FUlIob3YwMmExMC0+ ZWNsaykpIHsNCj4gPiA+ID4gKyAgICAgICAgICAgcmV0ID0gUFRSX0VSUihvdjAyYTEwLT5lY2xr KTsNCj4gPiA+ID4gKyAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IGVjbGsg JWRcbiIsIHJldCk7DQo+ID4gPiA+ICsgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gPiA+ICsg ICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgIHJldCA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3Uz MihkZXZfZndub2RlKGRldiksICJjbG9jay1mcmVxdWVuY3kiLA0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZvdjAyYTEwLT5lY2xrX2ZyZXEpOw0KPiA+ID4gPiAr ICAgaWYgKHJldCkgew0KPiA+ID4gPiArICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0 byBnZXQgZWNsayBmcmVxdWVuY3lcbiIpOw0KPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gcmV0 Ow0KPiA+ID4gPiArICAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICByZXQgPSBjbGtfc2V0X3Jh dGUob3YwMmExMC0+ZWNsaywgb3YwMmExMC0+ZWNsa19mcmVxKTsNCj4gPiA+ID4gKyAgIGlmIChy ZXQpIHsNCj4gPiA+ID4gKyAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gc2V0IGVj bGsgZnJlcXVlbmN5ICgyNE1IeilcbiIpOw0KPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gcmV0 Ow0KPiA+ID4gPiArICAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICBpZiAoY2xrX2dldF9yYXRl KG92MDJhMTAtPmVjbGspICE9IE9WMDJBMTBfRUNMS19GUkVRKSB7DQo+ID4gPiA+ICsgICAgICAg ICAgIGRldl93YXJuKGRldiwgIndyb25nIGVjbGsgZnJlcXVlbmN5ICVkIEh6LCBleHBlY3RlZDog JWQgSHpcbiIsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIG92MDJhMTAtPmVjbGtfZnJl cSwgT1YwMkExMF9FQ0xLX0ZSRVEpOw0KPiA+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsNCj4gPiA+ID4gKyAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgb3YwMmExMC0+cGRfZ3Bp byA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgInBvd2VyZG93biIsIEdQSU9EX09VVF9ISUdIKTsNCj4g PiA+ID4gKyAgIGlmIChJU19FUlIob3YwMmExMC0+cGRfZ3BpbykpIHsNCj4gPiA+ID4gKyAgICAg ICAgICAgcmV0ID0gUFRSX0VSUihvdjAyYTEwLT5wZF9ncGlvKTsNCj4gPiA+ID4gKyAgICAgICAg ICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHBvd2VyZG93bi1ncGlvcyAlZFxuIiwgcmV0 KTsNCj4gPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiA+ID4gKyAgIH0NCj4gPiA+ ID4gKw0KPiA+ID4gPiArICAgb3YwMmExMC0+cnN0X2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYs ICJyZXNldCIsIEdQSU9EX09VVF9MT1cpOw0KPiA+ID4gPiArICAgaWYgKElTX0VSUihvdjAyYTEw LT5yc3RfZ3BpbykpIHsNCj4gPiA+ID4gKyAgICAgICAgICAgcmV0ID0gUFRSX0VSUihvdjAyYTEw LT5yc3RfZ3Bpbyk7DQo+ID4gPiA+ICsgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRv IGdldCByZXNldC1ncGlvcyAlZFxuIiwgcmV0KTsNCj4gPiA+ID4gKyAgICAgICAgICAgcmV0dXJu IHJldDsNCj4gPiA+ID4gKyAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUob3YwMmExMF9zdXBwbHlfbmFtZXMpOyBpKyspDQo+ID4gPiA+ICsgICAg ICAgICAgIG92MDJhMTAtPnN1cHBsaWVzW2ldLnN1cHBseSA9IG92MDJhMTBfc3VwcGx5X25hbWVz W2ldOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICByZXQgPSBkZXZtX3JlZ3VsYXRvcl9idWxrX2dl dChkZXYsIEFSUkFZX1NJWkUob3YwMmExMF9zdXBwbHlfbmFtZXMpLA0KPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3YwMmExMC0+c3VwcGxpZXMpOw0KPiA+ID4gPiAr ICAgaWYgKHJldCkgew0KPiA+ID4gPiArICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0 byBnZXQgcmVndWxhdG9yc1xuIik7DQo+ID4gPiA+ICsgICAgICAgICAgIHJldHVybiByZXQ7DQo+ ID4gPiA+ICsgICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgIG11dGV4X2luaXQoJm92MDJhMTAt Pm11dGV4KTsNCj4gPiA+ID4gKyAgIG92MDJhMTAtPmN1cl9tb2RlID0gJnN1cHBvcnRlZF9tb2Rl c1swXTsNCj4gPiA+ID4gKyAgIHJldCA9IG92MDJhMTBfaW5pdGlhbGl6ZV9jb250cm9scyhvdjAy YTEwKTsNCj4gPiA+ID4gKyAgIGlmIChyZXQpIHsNCj4gPiA+ID4gKyAgICAgICAgICAgZGV2X2Vy cihkZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb250cm9sc1xuIik7DQo+ID4gPiA+ICsgICAg ICAgICAgIGdvdG8gZXJyX2Rlc3Ryb3lfbXV0ZXg7DQo+ID4gPiA+ICsgICB9DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyAgIG92MDJhMTAtPnN1YmRldi5mbGFncyB8PSBWNEwyX1NVQkRFVl9GTF9IQVNf REVWTk9ERTsNCj4gPiA+ID4gKyAgIG92MDJhMTAtPnN1YmRldi5lbnRpdHkub3BzID0gJm92MDJh MTBfc3ViZGV2X2VudGl0eV9vcHM7DQo+ID4gPiA+ICsgICBvdjAyYTEwLT5zdWJkZXYuZW50aXR5 LmZ1bmN0aW9uID0gTUVESUFfRU5UX0ZfQ0FNX1NFTlNPUjsNCj4gPiA+ID4gKyAgIG92MDJhMTAt PnBhZC5mbGFncyA9IE1FRElBX1BBRF9GTF9TT1VSQ0U7DQo+ID4gPiA+ICsgICByZXQgPSBtZWRp YV9lbnRpdHlfcGFkc19pbml0KCZvdjAyYTEwLT5zdWJkZXYuZW50aXR5LCAxLCAmb3YwMmExMC0+ cGFkKTsNCj4gPiA+ID4gKyAgIGlmIChyZXQgPCAwKSB7DQo+ID4gPiA+ICsgICAgICAgICAgIGRl dl9lcnIoZGV2LCAiZmFpbGVkIHRvIGluaXQgZW50aXR5IHBhZHM6ICVkIiwgcmV0KTsNCj4gPiA+ ID4gKyAgICAgICAgICAgZ290byBlcnJfZnJlZV9oYW5kbGVyOw0KPiA+ID4gPiArICAgfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgICBwbV9ydW50aW1lX2VuYWJsZShkZXYpOw0KPiA+ID4gPiArICAg aWYgKCFwbV9ydW50aW1lX2VuYWJsZWQoZGV2KSkgew0KPiA+ID4gPiArICAgICAgICAgICByZXQg PSBvdjAyYTEwX3Bvd2VyX29uKGRldik7DQo+ID4gPiA+ICsgICAgICAgICAgIGlmIChyZXQgPCAw KSB7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8g cG93ZXIgb246ICVkXG4iLCByZXQpOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIGdvdG8g ZXJyX2NsZWFuX2VudGl0eTsNCj4gPiA+ID4gKyAgICAgICAgICAgfQ0KPiA+ID4gPiArICAgfQ0K PiA+ID4gPiArDQo+ID4gPiA+ICsgICByZXQgPSB2NGwyX2FzeW5jX3JlZ2lzdGVyX3N1YmRldigm b3YwMmExMC0+c3ViZGV2KTsNCj4gPiA+ID4gKyAgIGlmIChyZXQpIHsNCj4gPiA+ID4gKyAgICAg ICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgVjRMMiBzdWJkZXY6ICVkIiwg cmV0KTsNCj4gPiA+ID4gKyAgICAgICAgICAgZ290byBlcnJfcG93ZXJfb2ZmOw0KPiA+ID4gPiAr ICAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICByZXR1cm4gMDsNCj4gPiA+ID4gKw0KPiA+ID4g PiArZXJyX3Bvd2VyX29mZjoNCj4gPiA+ID4gKyAgIHBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOw0K PiA+ID4gPiArICAgaWYgKCFwbV9ydW50aW1lX2VuYWJsZWQoZGV2KSkNCj4gPiA+DQo+ID4gPiBU aGlzIHdvdWxkIGJlIGFsd2F5cyB0cnVlLCByZXN1bHRpbmcgaW4gdW5iYWxhbmNlZCBwb3dlciBv ZmYuIE1vdmluZw0KPiA+ID4gcG1fcnVudGltZV9kaXNhYmxlKCkgYWZ0ZXIgdGhpcyBpZiBzaG91 bGQgd29yayBiZXR0ZXIuDQo+ID4gPg0KPiA+DQo+ID4gUGFyZG9uLCBkbyB5b3UgbWVhbiB0aGF0 IHdlIHNoYWxsIHVzZSBsaWtlIHRoaXM6DQo+ID4gZXJyX3Bvd2VyX29mZjoNCj4gPiAgICAgICAg IGlmICghcG1fcnVudGltZV9lbmFibGVkKGRldikpIHsNCj4gPiAgICAgICAgICAgICAgICAgcG1f cnVudGltZV9kaXNhYmxlKGRldik7DQo+ID4gICAgICAgICAgICAgICAgIGlmICghcG1fcnVudGlt ZV9zdGF0dXNfc3VzcGVuZGVkKGRldikNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBvdjAy YTEwX3Bvd2VyX29mZihkZXYpOw0KPiA+ICAgICAgICAgfQ0KPiANCj4gSG1tLCB0aGF0IHdvdWxk bid0IHJlYWxseSB3b3JrLCBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBkaXNhYmxlDQo+ IHJ1bnRpbWUgUE0gaWYgaXQncyBkaXNhYmxlZCBhbHJlYWR5LiBJIGFsc28gbm90aWNlZCB0aGF0 IHdlIGRvbid0IG5lZWQNCj4gdG8gY2hlY2sgcG1fcnVudGltZV9zdGF0dXNfc3VzcGVuZGVkKCkg aW4gdGhlIGVycm9yIHBhdGggaW4gcHJvYmUsDQo+IGJlY2F1c2Ugd2Ugb25seSBldmVyIGF0dGVt cHQgdG8gcG93ZXIgaXQgb24gd2hlbiBydW50aW1lIFBNIGlzDQo+IGRpc2FibGVkIGluIGtlcm5l bCBjb25maWcuIFRoaXMgd291bGQgbWFrZSB0aGUgZW5kIHJlc3VsdCBhczoNCj4gDQo+ICAgICAg ICAgIGlmIChwbV9ydW50aW1lX2VuYWJsZWQoZGV2KSkNCj4gICAgICAgICAgICAgICAgICBwbV9y dW50aW1lX2Rpc2FibGUoZGV2KTsNCj4gICAgICAgICAgZWxzZQ0KPiAgICAgICAgICAgICAgICAg IG92MDJhMTBfcG93ZXJfb2ZmKGRldik7DQo+IA0KDQpUaGFua3MgZm9yIHRoZSBzaGFyaW5nLg0K SXQgc2VlbXMgZXJyX3Bvd2VyX29mZiBzZWN0aW9uIGhlcmUgaGVscHMgYmFsYW5jZSB0aGUgcG1f cnVudGltZV9lbmFibGUNCmFuZCBwbV9ydW50aW1lX2Rpc2FibGUgdG8ga2VlcCBkZXYtPnBvd2Vy LmRpc2FibGVfZGVwdGggcmlnaHQuDQpXaGlsZSBydW50aW1lIFBNIGlzIGRpc2FibGVkLCBvdjAy YTEwX3Bvd2VyX29mZiBjb3VsZCBhbHNvIHBlcmZvcm0gcG93ZXINCm9mZiBpbnN0ZWFkIG9mIHJ1 bnRpbWUgUE0uDQoNCj4gQmVzdCByZWdhcmRzLA0KPiBUb21hc3oNCg0K