Received: by 2002:a25:ca44:0:0:0:0:0 with SMTP id a65csp792568ybg; Tue, 28 Jul 2020 20:17:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx/fC09w/mlnuj9b2s2AWTVrzwA9mdnoYOeoKyjBF9F3SgIbndp2cHiT+/+E5FqO5eL/Nvy X-Received: by 2002:aa7:c2c6:: with SMTP id m6mr14196715edp.118.1595992657110; Tue, 28 Jul 2020 20:17:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595992657; cv=none; d=google.com; s=arc-20160816; b=YSIlyOs7adNDn4Wooki30zcF8v5VwdQEHTe3sWMWHvvH2GVahL1FGLLM2mZbGZF6Ev y4j8VTrlUQ2TVBbGABZ9b6P/XYmmyKCrBEfdPCqKn0oYHn4lFlh7V4ZvwCjz9jKWRmBa t/QUnGXhKzUj5pDyqSf6LrIE0FzeAY0f96UlOveiyV1YWYCPaK0pC3I628i6oNw9qjU7 nSJmH5Xcd/17ZXefccxfL1gfCg54J85377Iv2bwUb9ngHpGrnCoNM7seqNsaJ5HISJ2H 72e2kVY6N7y9kslNI/UIZyO9acGtLHIw9zwc2aj7vyKY/dASayDUOQir2qBrjArb+Vzh 7EBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=gxnyGEjtd3ZwDEJ8oeskMKClMVsIiXr3URSMOGukv18=; b=EAlRAn5dRAMST2aYsIrC8kZRxGj7BoX5+NhQ1NBTtmx7vHOPYZ0Vi4zrksc9eg+WCA BtqBvXtL+aQXE8FXh1yhoSKLt44G1t3j5kqWcuMx3RNHaDtIhtm7k9hkZt63kstkeJXL FR78Ox5Ls7o0OYlPTqBVwO8Q1388uEb0lVnjoFocUfuPZMoz77xCX/IOhYvo4eynUesJ HqiEwOP1HBwv64CCgXq6nx5BMCJ0EVD5JiizdHE4PeFSgvUeYGDYYXRaZvPoXjo1lEw9 H7kk6eaozTkJNDMj/CDXlFuQMbo3vA7d/Zt33crUe51dpuwedXukXa4wZJ/TWGibaLeG gfTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="bt6/UAJ0"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v26si408657edq.507.2020.07.28.20.17.14; Tue, 28 Jul 2020 20:17:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b="bt6/UAJ0"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726449AbgG2DQg (ORCPT + 99 others); Tue, 28 Jul 2020 23:16:36 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:34619 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726047AbgG2DPk (ORCPT ); Tue, 28 Jul 2020 23:15:40 -0400 X-UUID: ef7c589bffa44a91952ebe0c0fbf4d5e-20200729 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=gxnyGEjtd3ZwDEJ8oeskMKClMVsIiXr3URSMOGukv18=; b=bt6/UAJ0DQypIn/41LaVc8XEvwlrSKafwo1BxDEwC9U1eiXn+LlZlgtLzJ09jln8xlZqvTcn7Ec6PHjUhQagENxbNuR8FJSMxIpRvBDJhBzyjQf36ar6ObMQAv15+Gqpk33AVvabhQ0QH7YZcqxCFBsONq9wpqAwT6xlGVAQeF8=; X-UUID: ef7c589bffa44a91952ebe0c0fbf4d5e-20200729 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1323224562; Wed, 29 Jul 2020 11:15:30 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs02n1.mediatek.inc (172.21.101.77) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 29 Jul 2020 11:15:29 +0800 Received: from [172.21.77.33] (172.21.77.33) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 29 Jul 2020 11:15:25 +0800 Message-ID: <1595992529.6575.0.camel@mtkswgap22> Subject: Re: [PATCH v3 2/2] soc: mediatek: add mtk-devapc driver From: Neal Liu To: Chun-Kuang Hu CC: Neal Liu , Rob Herring , Matthias Brugger , "devicetree@vger.kernel.org" , wsd_upstream , lkml , "moderated list:ARM/Mediatek SoC support" , Linux ARM Date: Wed, 29 Jul 2020 11:15:29 +0800 In-Reply-To: References: <1595303971-8793-1-git-send-email-neal.liu@mediatek.com> <1595303971-8793-3-git-send-email-neal.liu@mediatek.com> <1595389756.20193.12.camel@mtkswgap22> <1595484707.26237.12.camel@mtkswgap22> <1595573719.24412.9.camel@mtkswgap22> <1595819152.7630.13.camel@mtkswgap22> <1595908325.1388.8.camel@mtkswgap22> <1595988652.9265.8.camel@mtkswgap22> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gV2VkLCAyMDIwLTA3LTI5IGF0IDEwOjIyICswODAwLCBDaHVuLUt1YW5nIEh1IHdyb3RlOg0K PiBOZWFsIExpdSA8bmVhbC5saXVAbWVkaWF0ZWsuY29tPiDmlrwgMjAyMOW5tDfmnIgyOeaXpSDp gLHkuIkg5LiK5Y2IMTA6MTDlr6vpgZPvvJoNCj4gPg0KPiA+IEhpIENodW4tS3VhbmcsDQo+ID4N Cj4gPiBPbiBUdWUsIDIwMjAtMDctMjggYXQgMjM6MzUgKzA4MDAsIENodW4tS3VhbmcgSHUgd3Jv dGU6DQo+ID4gPiBIaSwgTmVhbDoNCj4gPiA+DQo+ID4gPiBOZWFsIExpdSA8bmVhbC5saXVAbWVk aWF0ZWsuY29tPiDmlrwgMjAyMOW5tDfmnIgyOOaXpSDpgLHkuowg5LiK5Y2IMTE6NTLlr6vpgZPv vJoNCj4gPiA+ID4NCj4gPiA+ID4gSGkgQ2h1bi1LdWFuZywNCj4gPiA+ID4NCj4gPiA+ID4gT24g TW9uLCAyMDIwLTA3LTI3IGF0IDIyOjQ3ICswODAwLCBDaHVuLUt1YW5nIEh1IHdyb3RlOg0KPiA+ ID4gPiA+IEhpLCBOZWFsOg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gTmVhbCBMaXUgPG5lYWwubGl1 QG1lZGlhdGVrLmNvbT4g5pa8IDIwMjDlubQ35pyIMjfml6Ug6YCx5LiAIOS4iuWNiDExOjA25a+r 6YGT77yaDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSGkgQ2h1bi1LdWFuZywNCj4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiBPbiBGcmksIDIwMjAtMDctMjQgYXQgMjM6NTUgKzA4MDAsIENodW4t S3VhbmcgSHUgd3JvdGU6DQo+ID4gPiA+ID4gPiA+IEhpLCBOZWFsOg0KPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiBOZWFsIExpdSA8bmVhbC5saXVAbWVkaWF0ZWsuY29tPiDmlrwgMjAyMOW5 tDfmnIgyNOaXpSDpgLHkupQg5LiL5Y2IMjo1NeWvq+mBk++8mg0KPiA+ID4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiA+ID4gSGkgQ2h1bi1LdWFuZywNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+IE9uIEZyaSwgMjAyMC0wNy0yNCBhdCAwMDozMiArMDgwMCwgQ2h1bi1LdWFuZyBIdSB3 cm90ZToNCj4gPiA+ID4gPiA+ID4gPiA+IEhpLCBOZWFsOg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiA+IE5lYWwgTGl1IDxuZWFsLmxpdUBtZWRpYXRlay5jb20+IOaWvCAyMDIw 5bm0N+aciDIz5pelIOmAseWbmyDkuIvljYgyOjEx5a+r6YGT77yaDQo+ID4gPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IEhpIENodW4tS3VhbmcsDQo+ID4gPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IE9uIFdlZCwgMjAyMC0wNy0yMiBhdCAyMjoyNSArMDgw MCwgQ2h1bi1LdWFuZyBIdSB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBIaSwgTmVhbDoN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IE5lYWwgTGl1IDxu ZWFsLmxpdUBtZWRpYXRlay5jb20+IOaWvCAyMDIw5bm0N+aciDIy5pelIOmAseS4iSDkuIrljYgx MTo0OeWvq+mBk++8mg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IEhpIENodW4tS3VhbmcsDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gT24gV2VkLCAyMDIwLTA3LTIyIGF0IDA3OjIxICswODAwLCBDaHVuLUt1 YW5nIEh1IHdyb3RlOg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBIaSwgTmVhbDoNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gTmVhbCBMaXUg PG5lYWwubGl1QG1lZGlhdGVrLmNvbT4g5pa8IDIwMjDlubQ35pyIMjHml6Ug6YCx5LqMIOS4i+WN iDEyOjAw5a+r6YGT77yaDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gKy8qDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAqIG10 a19kZXZhcGNfZHVtcF92aW9fZGJnIC0gZ2V0IHRoZSB2aW9sYXRpb24gaW5kZXggYW5kIGR1bXAg dGhlIGZ1bGwgdmlvbGF0aW9uDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVidWcgaW5mb3JtYXRpb24uDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgYm9v bCBtdGtfZGV2YXBjX2R1bXBfdmlvX2RiZyhzdHJ1Y3QgbXRrX2RldmFwY19jb250ZXh0ICpjdHgs IHUzMiB2aW9faWR4KQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICB1MzIgc2hpZnRfYml0Ow0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIGlmIChj aGVja192aW9fbWFzayhjdHgsIHZpb19pZHgpKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgaWYgKCFjaGVja192aW9f c3RhdHVzKGN0eCwgdmlvX2lkeCkpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBzaGlmdF9iaXQgPSBnZXRfc2hpZnRf Z3JvdXAoY3R4LCB2aW9faWR4KTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICBpZiAoc3luY192aW9fZGJnKGN0eCwgc2hp ZnRfYml0KSkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiArICAgICAgIGRldmFwY19leHRyYWN0X3Zpb19kYmcoY3R4KTsNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gSSB0aGluayBn ZXRfc2hpZnRfZ3JvdXAoKSwgc3luY192aW9fZGJnKCksIGFuZA0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiBkZXZhcGNfZXh0cmFjdF92aW9fZGJnKCkgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2 aW9faWR4IGZvci1sb29wICh0aGUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gbG9vcCBpbiBk ZXZhcGNfdmlvbGF0aW9uX2lycSgpKSBiZWNhdXNlIHRoZXNlIHRocmVlIGZ1bmN0aW9uIGlzIG5v dA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiByZWxhdGVkIHRvIHZpb19pZHguDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IEFub3RoZXIgcXVlc3Rpb246IHdoZW4gbXVsdGlwbGUgdmlvX2lk eCB2aW9sYXRpb24gb2NjdXIsIHZpb19hZGRyIGlzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IHJlbGF0ZWQgdG8gd2hpY2ggb25lIHZpb19pZHg/IFRoZSBsYXRlc3QgaGFwcGVuZWQgb25lPw0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IEFjdHVhbGx5LCBpdCdzIHJlbGF0ZWQgdG8gdmlvX2lkeC4gQnV0 IHdlIGRvbid0IHVzZSBpdCBkaXJlY3RseSBvbiB0aGVzZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gZnVuY3Rpb24uIEkgdGhpbmsgYmVsb3cgc25pcCBjb2RlIG1pZ2h0IGJlIGJldHRlciB3YXkg dG8gdW5kZXJzdGFuZCBpdC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBmb3IgKC4uLikNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHsNCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ICAgICAgICAgY2hlY2tfdmlvX21hc2soKQ0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gICAgICAgICBjaGVja192aW9fc3RhdHVzKCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgIC8vIGlmIGdldCB2aW9faWR4LCBt YXNrIGl0IHRlbXBvcmFyaWx5DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgIG1hc2tf bW9kdWxlX2lycSh0cnVlKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICBjbGVhcl92 aW9fc3RhdHVzKCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiAgICAgICAgIC8vIGR1bXAgdmlvbGF0aW9uIGluZm8NCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ICAgICAgICAgZ2V0X3NoaWZ0X2dyb3VwKCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAg ICAgICAgc3luY192aW9fZGJnKCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgZGV2 YXBjX2V4dHJhY3RfdmlvX2RiZygpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gICAgICAgICAvLyB1bm1hc2sNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ICAgICAgICAgbWFza19tb2R1bGVfaXJxKGZhbHNlKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g fQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gVGhpcyBzbmlw IGNvZGUgZG9lcyBub3QgZXhwbGFpbiBhbnkgdGhpbmcuIEkgY291bGQgcmV3cml0ZSB0aGlzIGNv ZGUgYXM6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBmb3Ig KC4uLikNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAg IGNoZWNrX3Zpb19tYXNrKCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgY2hlY2tfdmlvX3N0 YXR1cygpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAg Ly8gaWYgZ2V0IHZpb19pZHgsIG1hc2sgaXQgdGVtcG9yYXJpbHkNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiAgICAgbWFza19tb2R1bGVfaXJxKHRydWUpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAg IGNsZWFyX3Zpb19zdGF0dXMoKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAvLyB1bm1hc2sN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgbWFza19tb2R1bGVfaXJxKGZhbHNlKQ0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+IH0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IC8vIGR1bXAgdmlvbGF0aW9uIGluZm8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBnZXRf c2hpZnRfZ3JvdXAoKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHN5bmNfdmlvX2RiZygpDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gZGV2YXBjX2V4dHJhY3RfdmlvX2RiZygpDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBBbmQgbXkgdmVyc2lvbiBpcyBpZGVudGlj YWwgd2l0aCB5b3VyIHZlcnNpb24sIGlzbid0IGl0Pw0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+ID4gPiBTb3JyeSwgSSBkaWQgbm90IGV4cGxhaW4gaXQgY2xlYXJseS4gTGV0 J3MgbWUgdHJ5IGFnYWluLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBUaGUgcmVhc29uIHdoeSBJIHB1 dCAiZHVtcCB2aW9sYXRpb24gaW5mbyIgYmV0d2VlbiBtYXNrICYgdW5tYXNrIGNvbnRleHQNCj4g PiA+ID4gPiA+ID4gPiA+ID4gaXMgYmVjYXVzZSBpdCBoYXMgdG8gc3RvcCBpbnRlcnJ1cHQgZmly c3QgYmVmb3JlIGR1bXAgdmlvbGF0aW9uIGluZm8sDQo+ID4gPiA+ID4gPiA+ID4gPiA+IGFuZCB0 aGVuIHVubWFzayBpdCB0byBwcmVwYXJlIG5leHQgdmlvbGF0aW9uLg0KPiA+ID4gPiA+ID4gPiA+ ID4gPiBUaGVzZSBzZXF1ZW5jZSBndWFyYW50ZWUgdGhhdCBpZiBtdWx0aXBsZSB2aW9sYXRpb24g aXMgdHJpZ2dlcmVkLCB3ZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBzdGlsbCBoYXZlIGluZm9ybWF0 aW9uIHRvIGRlYnVnLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBJZiB0aGUgY29kZSBzZXF1ZW5jZSBp biB5b3VyIHZlcnNpb24gYW5kIG11bHRpcGxlIHZpb2xhdGlvbiBpcw0KPiA+ID4gPiA+ID4gPiA+ ID4gPiB0cmlnZ2VyZWQsIHRoZXJlIG1pZ2h0IGJlIG5vIGFueSBpbmZvcm1hdGlvbiBidXQga2Vl cHMgZW50ZXJpbmcgSVNSLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBGaW5hbGx5LCBzeXN0ZW0gbWln aHQgYmUgYWJub3JtYWwgYW5kIHdhdGNoZG9nIHRpbWVvdXQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ IEluIHRoaXMgY2FzZSwgd2Ugc3RpbGwgZG9uJ3QgaGF2ZSBhbnkgaW5mb3JtYXRpb24gdG8gZGVi dWcuDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gSSBzdGlsbCBkb24ndCB1 bmRlcnN0YW5kIHdoeSBubyBpbmZvcm1hdGlvbiB0byBkZWJ1Zy4gRm9yIGV4YW1wbGUgd2hlbg0K PiA+ID4gPiA+ID4gPiA+ID4gdmlvX2lkeCA1LCAxMCwgMTUgaGFzIHZpb2xhdGlvbiwNCj4gPiA+ ID4gPiA+ID4gPiA+IFlvdSB3b3VsZCBtYXNrIHZpb19pZHggNSB0byBnZXQgaW5mb3JtYXRpb24s IGJ1dCB2aW9faWR4IDEwLCAxNSBkb2VzDQo+ID4gPiA+ID4gPiA+ID4gPiBub3QgbWFzayB5ZXQu DQo+ID4gPiA+ID4gPiA+ID4gPiBJbiB5b3VyIHdvcmRzLCB3aGVuIHZpb19pZHggMTAsIDE1IG5v dCBtYXNrLCB5b3Ugd291bGQgbm90IGdldCBhbnkNCj4gPiA+ID4gPiA+ID4gPiA+IGRlYnVnIGlu Zm9ybWF0aW9uIHdoZW4geW91IHByb2Nlc3MgdmlvX2lkeCA1Lg0KPiA+ID4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gPiA+IEluIG15IHZlcnNpb24sIEkgd291bGQgY2xlYXIgYWxsIHN0YXR1 cywgd2h5IGtlZXBzIGVudGVyaW5nIElTUj8NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+IFRoaW5rIGFib3V0IHRoaXMgY2FzZSwgaWYgc29tZW9uZSB0cmllcyB0byBkdW1wICJBQUEi IG1vZHVsZSdzIHJlZ2lzdGVyLg0KPiA+ID4gPiA+ID4gPiA+IEl0IHdvdWxkIGtlZXAgcmVhZCBy ZWcgYmFzZSwgYmFzZSsweDQsIGJhc2UrMHg4LCAuLi4NCj4gPiA+ID4gPiA+ID4gPiBBbGwgdGhl c2UgcmVnaXN0ZXJzIGFyZSBpbiB0aGUgc2FtZSBzbGF2ZSwgd2hpY2ggd291bGQgYmUgc2FtZSB2 aW9faWR4Lg0KPiA+ID4gPiA+ID4gPiA+IChUYWtlIHZpb19pZHggNSBhcyBleGFtcGxlKQ0KPiA+ ID4gPiA+ID4gPiA+IEluIHRoaXMgY2FzZSwgdmlvX2lkeCA1IHdpbGwga2VlcCB0cmlnZ2VyaW5n IGludGVycnVwdC4gSWYgeW91IGRpZCBub3QNCj4gPiA+ID4gPiA+ID4gPiBkbyAiZHVtcCB2aW9s YXRpb24gaW5mbyIgYmV0d2VlbiBtYXNrICYgdW5tYXNrLCB5b3UgY2Fubm90IGdldCBhbnkNCj4g PiA+ID4gPiA+ID4gPiB2aW9sYXRpb24gaW5mbyB1bnRpbCB0aGUgbGFzdCBpbnRlcnJ1cHQgYmVp bmcgaGFuZGxlZC4NCj4gPiA+ID4gPiA+ID4gPiBOb3JtYWxseSwgc3lzdGVtIHdpbGwgY3Jhc2gg YmVmb3JlIGxhc3QgaW50ZXJydXB0IGNvbWluZy4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gWW91IGhhdmUgc2FpZCB0aGF0IGZpcnN0IHZpb19hZGRyIHdvdWxkIGJlIGtlcHQgdW50aWwg aXQncyAnaGFuZGxlZCcuDQo+ID4gPiA+ID4gPiA+IFNvIHRoZSBmaXJzdCB2aW9fYWRkciByZWdf YmFzZSB3b3VsZCBiZSBrZXB0IGV2ZW4gdGhvdWdoIG90aGVyDQo+ID4gPiA+ID4gPiA+IHZpb2xh dGlvbiBoYXBwZW4uIEFuZCBJIGNvdWxkIGhhbmRsZSAoY2xlYXIgc3RhdHVzIGFuZCBkdW1wIGlu Zm8pIGl0DQo+ID4gPiA+ID4gPiA+IHRoZW4gdmlvX2FkZHIgd291bGQgbmV4dCB2aW9sYXRpb24n cyBhZGRyZXNzLiBJJ20gY29uZnVzZWQgd2l0aCB5b3VyDQo+ID4gPiA+ID4gPiA+IHN0YXRlbWVu dC4gSWYgQUFBIGlzIGR1bXBpbmcgcmVnaXN0ZXIgb2YgdmlvX2lkeCA1LCBCQkIgaXMgZHVtcGlu Zw0KPiA+ID4gPiA+ID4gPiByZWdpc3RlciBvZiB2aW9faWR4IDEwLCBDQ0MgaXMgZHVtcGluZyBy ZWdpc3RlciBvZiB2aW9faWR4IDE1LCBJIHRoaW5rDQo+ID4gPiA+ID4gPiA+IHlvdSBzaG91bGQg bWFzayBhbGwgdmlvX2lkeCBub3Qgb25seSBvbmUuIFNvIHRoZSBjb2RlIHdvdWxkIGJlDQo+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IGZvciBhbGwgdmlvX2lkeCB7DQo+ID4gPiA+ID4gPiA+ ICAgICBtYXNrX21vZHVsZV9pcnEodHJ1ZSkNCj4gPiA+ID4gPiA+ID4gfQ0KPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiBkZXZhcGNfZXh0cmFjdF92aW9fZGJnKCkNCj4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gZm9yIGFsbCB2aW9faWR4IHsNCj4gPiA+ID4gPiA+ID4gICAgIGNsZWFy X3Zpb19zdGF0dXMoKQ0KPiA+ID4gPiA+ID4gPiAgICAgbWFza19tb2R1bGVfaXJxKGZhbHNlKQ0K PiA+ID4gPiA+ID4gPiB9DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g SSdtIGFsc28gY29uc2lkZXIgdGhpcyBzb2x1dGlvbiBhbmQgSSB0aGluayBpdCdzIG11Y2ggYmV0 dGVyIHRvDQo+ID4gPiA+ID4gPiB1bmRlcnN0YW5kIGhhcmR3YXJlIGJlaGF2aW9yLg0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IGRldmFwY19kdW1wX3Zpb19kYmcoKQ0KPiA+ID4gPiA+ID4gew0K PiA+ID4gPiA+ID4gICAgICAgICB3aGlsZSgxKSB7DQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAg ICAgLy8gbWlnaHQgaGF2ZSBtdWx0aXBsZSBzaGlmdF9iaXQgcmFpc2VkDQo+ID4gPiA+ID4gPiAg ICAgICAgICAgICAgICAgc2hpZnRfYml0ID0gZ2V0X3NoaWZ0X2dyb3VwKCkNCj4gPiA+ID4gPiA+ ICAgICAgICAgICAgICAgICBpZiAoc2hpZnRfYml0ID49IDAgJiYgc2hpZnQgYml0IDw9IDMxKQ0K PiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgc3luY192aW9fZGJnKHNoaWZ0X2Jp dCkNCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfdmlvX2RiZygp DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBBY2NvcmRpbmcgdG8geW91ciBzdGF0ZW1lbnQsIHdoZW4g bXVsdGlwbGUgdmlvbGF0aW9uIG9jY3VyLCBvbmx5IHRoZQ0KPiA+ID4gPiA+IGZpcnN0IG9uZSBp cyBrZXB0LCBvdGhlcnMgYXJlIGRyb3BwZWQuIEkgdGhpbmsgd2UganVzdCBuZWVkIHRvIGR1bXAN Cj4gPiA+ID4gPiBkZWJ1ZyBpbmZvIG9uY2UuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBCZWNhdXNl IG9ubHkgb25lIHZpb2xhdGlvbiBpbmZvcm1hdGlvbiB3b3VsZCBiZSBrZXB0LCB3aHkgbm90IG9u bHkgb25lDQo+ID4gPiA+ID4gZ3JvdXAgKGVxdWFsIHRvIG5vIGdyb3VwKT8NCj4gPiA+ID4gPg0K PiA+ID4gPiA+IFJlZ2FyZHMsDQo+ID4gPiA+ID4gQ2h1bi1LdWFuZy4NCj4gPiA+ID4NCj4gPiA+ ID4gTGV0J3MgbWUgZ2l2ZSB5b3UgYW4gZXhhbXBsZSBvZiBkZXZhcGMgZGVzaWduLg0KPiA+ID4g PiB2aW9faWR4OiAwLCAxLCAyIC0+IGdyb3VwIDAgKHNoaWZ0X2JpdDogMCkNCj4gPiA+ID4gdmlv X2lkeDogMywgNCwgNSAtPiBncm91cCAxIChzaGlmdF9iaXQ6IDEpDQo+ID4gPiA+IC4uLg0KPiA+ ID4gPg0KPiA+ID4gPiBFYWNoIGdyb3VwIHZpb2xhdGlvbiB3aWxsIGtlZXAgb25lIHZpb2xhdGlv biAodGhlIGZpcnN0IG9uZSkuIElmIHZpb19pZHgNCj4gPiA+ID4gMCBpcyB0cmlnZ2VyZWQgZmly c3QsIHZpb19pZHggMSBpcyB0cmlnZ2VyZWQgbmV4dCwgdGhlbiBncm91cCAwIHdpbGwNCj4gPiA+ ID4ganVzdCBrZWVwIHZpb19pZHggMCB2aW9sYXRpb24gaW5mby4NCj4gPiA+ID4gSWYgdmlvX2lk eCAyIGlzIHRyaWdnZXJlZCBmaXJzdCwgdmlvX2lkeCAzIGlzIHRyaWdnZXJlZCBuZXh0LCB0aGVu IGdyb3VwDQo+ID4gPiA+IDAgd2lsbCBrZWVwIHZpb19pZHggMiB2aW9sYXRpb24gaW5mbywgZ3Jv dXAgMSB3aWxsIGtlZXAgdmlvX2lkeCAzJ3MuDQo+ID4gPiA+DQo+ID4gPiA+IFdlIGhhdmUgdG8g c2NhbiBhbGwgZ3JvdXBzIGFuZCBkdW1wIGV2ZXJ5dGhpbmcgd2UgaGF2ZS4NCj4gPiA+ID4gVGhh bmtzICENCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBDb3VsZCB3ZSBsZXQgYWxsIHZpb19pZHggYmUg Z3JvdXAgMCBzbyB0aGF0IHdlIGNvdWxkIGp1c3Qgc3luYyBvbmUNCj4gPiA+IGdyb3VwPyBJdCdz IGJhZCB0byBzcGVuZCB0b28gbXVjaCB0aW1lIGluIGlycSBoYW5kbGVyLg0KPiA+ID4gV2hlbiB3 ZSBzZXQgcGRfdmlvX3NoaWZ0X3NlbF9yZWcsIGl0IHNlZW1zIHdlIGNvdWxkIHNldCBtdWx0aXBs ZSBncm91cA0KPiA+ID4gdG9nZXRoZXIsIGNvdWxkbid0IGl0Pw0KPiA+ID4NCj4gPiA+IFJlZ2Fy ZHMsDQo+ID4gPiBDaHVuLUt1YW5nLg0KPiA+ID4NCj4gPg0KPiA+IE5vLCBXaGljaCBncm91cCB2 aW9faWR4IGJlbG9uZ3MgdG8gaXMgZGV0ZXJtaW5lZCBieSBoYXJkd2FyZS4gU29mdHdhcmUNCj4g PiBjYW5ub3QgY2hhbmdlIGl0cyBncm91cC4NCj4gPiBUaGVyZSBpcyB2ZXJ5IGxvdyBwb3NzaWJp bGl0eSB0aGF0IG11bHRpcGxlIGdyb3VwcyBoYXMgdmlvbGF0aW9uIGF0IHRoZQ0KPiA+IHNhbWUg dGltZSwgc28gaXQgd291bGQgbm90IHNwZW5kIG11Y2ggdGltZSB0byBoYW5kbGUgaXQuDQo+ID4g SXQgYWxzbyBjYW5ub3Qgc2hpZnQgbXVsdGlwbGUgZ3JvdXBzIGF0IHRoZSBzYW1lIHRpbWUgc2lu Y2UgdGhlcmUgaXMNCj4gPiBvbmx5IG9uZSB2aW9faW5mbyhydywgdmlvX2FkZHIsIG1hc3Rlcl9p ZCwgLi4uKSBleGlzdCBhdCBhIHRpbWUuDQo+ID4gZGV2YXBjX2V4dHJhY3RfdmlvX2RiZygpIGZ1 bmN0aW9uIGlzIGRvaW5nIHRoaXMgc3RlcC4NCj4gPg0KPiANCj4gU28gdGhpcyBmbG93IGlzIE9L IGZvciBtZS4gV291bGQgeW91IHBsZWFzZSBhZGQgY29tbWVudCBmb3IgdGhpcw0KPiBpbmZvcm1h dGlvbiBzbyB0aGF0IHdlIGNvdWxkIHVuZGVyc3RhbmQgaG93IGhhcmR3YXJlIHdvcmsuDQo+IA0K PiBSZWdhcmRzLA0KPiBDaHVuLUt1YW5nLg0KPiANCg0KT2theSwgSSdsbCBhZGQgaXQgaW4gbmV4 dCBwYXRjaC4gVGhhbmtzICENCg0KPiA+IFRoYW5rcyAhDQo+ID4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gICAgICAgICAgICAgICAgIGVsc2UNCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrDQo+ID4gPiA+ID4gPiAgICAgICAgIH0NCj4gPiA+ID4gPiA+IH0NCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiBkZXZhcGNfdmlvbGF0aW9uX2lycSgpDQo+ID4gPiA+ID4gPiB7 DQo+ID4gPiA+ID4gPiAgICAgICAgIGZvciBhbGwgdmlvX2lkeCB7DQo+ID4gPiA+ID4gPiAgICAg ICAgICAgICAgICAgbWFza19tb2R1bGVfaXJxKHRydWUpDQo+ID4gPiA+ID4gPiAgICAgICAgIH0N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICAgICAgIGRldmFwY19kdW1wX3Zpb19kYmcoKQ0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAgICAgICAgZm9yIGFsbCB2aW9faWR4IHsNCj4gPiA+ ID4gPiA+ICAgICAgICAgICAgICAgICBjbGVhcl92aW9fc3RhdHVzKCkNCj4gPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICBtYXNrX21vZHVsZV9pcnEoZmFsc2UpDQo+ID4gPiA+ID4gPiAgICAgICAg IH0NCj4gPiA+ID4gPiA+IH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBJcyBpdCBtb3JlIGNs ZWFyIGZvciB0aGlzIGNvbnRyb2wgZmxvdz8NCj4gPiA+ID4gPiA+IFRoYW5rcyAhDQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gQWJvdXQgeW91ciBxdWVzdGlvbiwgdmlvX2FkZHIgd291bGQg YmUgdGhlIGZpcnN0IG9uZS4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IFNvIG90aGVyIHZpb19hZGRyIHdvdWxkIGJlIGRyb3BwZWQ/IE9yIGhhcmR3YXJlIHdv dWxkIGtlZXAgYWxsDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gdmlvX2FkZHIgYW5kIHlvdSBoYXZl IHNvbWUgd2F5IHRvIGdldCBhbGwgdmlvX2FkZHI/DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gSW4gdGhpcyBjYXNlLCBoYXJk d2FyZSB3aWxsIGRyb3Agb3RoZXIgdmlvbGF0aW9uIGluZm8gYW5kIGtlZXAgdGhlIGZpcnN0DQo+ ID4gPiA+ID4gPiA+ID4gPiA+IG9uZSB1bnRpbCBpdCBiZWVuIGhhbmRsZWQuDQo+ID4gPiA+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gRG9lcyAnaGFuZGxlZCcgbWVhbiBzdGF0dXMgaXMg Y2xlYXJlZD8NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ICJoYW5kbGVkIiBtZWFu cyBjbGVhciBzdGF0dXMgYW5kIGR1bXAgdmlvbGF0aW9uIGluZm8uDQo+ID4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBSZWdhcmRzLA0KPiA+ID4gPiA+ ID4gPiA+ID4gQ2h1bi1LdWFuZy4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIHJldHVybiB0cnVlOw0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsvKg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ICsgKiBkZXZhcGNfdmlvbGF0aW9uX2lycSAtIHRoZSBkZXZhcGMgSW50ZXJydXB0IFNl cnZpY2UgUm91dGluZSAoSVNSKSB3aWxsIGR1bXANCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiArICogICAgICAgICAgICAgICAgICAgICAgICB2aW9sYXRpb24gaW5mb3JtYXRpb24gaW5jbHVk aW5nIHdoaWNoIG1hc3RlciB2aW9sYXRlcw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsg KiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcyBzbGF2ZS4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiArICovDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpcnFy ZXR1cm5fdCBkZXZhcGNfdmlvbGF0aW9uX2lycShpbnQgaXJxX251bWJlciwNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IG10a19kZXZhcGNfY29udGV4dCAqY3R4KQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ICt7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICB1MzIgdmlvX2lkeDsN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gKyAgICAgICBmb3IgKHZpb19pZHggPSAwOyB2aW9faWR4IDwgY3R4LT52aW9faWR4X251bTsg dmlvX2lkeCsrKSB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg IGlmICghbXRrX2RldmFwY19kdW1wX3Zpb19kYmcoY3R4LCB2aW9faWR4KSkNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgIC8qIEVuc3VyZSB0aGF0IHZpb2xhdGlvbiBpbmZvIGFyZSB3cml0dGVuIGJl Zm9yZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgKiBmdXJ0 aGVyIG9wZXJhdGlvbnMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICovDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIHNtcF9t YigpOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgLyoNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICogTWFzayBzbGF2ZSdzIGlycSBiZWZvcmUgY2xlYXJpbmcgdmlvIHN0 YXR1cy4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICogTXVz dCBkbyBpdCB0byBhdm9pZCBuZXN0ZWQgaW50ZXJydXB0IGFuZCBwcmV2ZW50DQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAqIHVuZXhwZWN0ZWQgYmVoYXZpb3Iu DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAqLw0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBtYXNrX21vZHVsZV9pcnEoY3R4 LCB2aW9faWR4LCB0cnVlKTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIGNsZWFyX3Zpb19zdGF0dXMoY3R4 LCB2aW9faWR4KTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIG1hc2tfbW9kdWxlX2lycShjdHgsIHZpb19p ZHgsIGZhbHNlKTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArICAgICAgIH0NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKyAg ICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gKy8qDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4NCg0K