Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp4916769rwr; Sun, 23 Apr 2023 16:44:21 -0700 (PDT) X-Google-Smtp-Source: AKy350ZhgWJF0KH5uLVlQxKDHEJjCcmajR+uL9D1BJDhAb4BHfhZiIA8vmzeBJ5KhugWEx5OG1+3 X-Received: by 2002:a05:6a20:938a:b0:f2:1141:9d20 with SMTP id x10-20020a056a20938a00b000f211419d20mr13937920pzh.24.1682293461290; Sun, 23 Apr 2023 16:44:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682293461; cv=none; d=google.com; s=arc-20160816; b=zTBypM9MFCD9+pMhRrTPLFxCAUoMqKPcEfFrGG5zVYHfg5t/IsjITscqMhZlNRfqFs tyDYsi8DNyZRMvsgKov2MVTB8NINMkDcRKfOWnQr+0qGQi2z1Cf6taN3QWuNTb1FN3yi 1I/YwOs7kHTFWHRUkGIWQwKnCG+MfB9aaaevR3HgZyOV2KcQf6a83L37R/2qoj/GIeqJ CrSWScAVwvCObV3vfAD4jCznlLj2ZVOOlzb3mlKJIEk7SRpEHgVs2d/0I9HNv82U6VUk WctkjdCDPruM5Dm/W7vhsQGcvW7/MYu2bqc2NDlMUz3K1yqFriXAEs1c+mIghSevFXmD TXsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=vfLLovOhJdu1h5lGO0pEL1BGrzGLpb2ACOZUb2JKwmA=; b=PAKdER+BwkN7PziXmbjns1E8QcEk5l4nr04yZawGP+fF5tPfWFXwXTFXzXpJW+Vdv0 /0tZ77Jt2fC7t3XqT7ObMmQoP9ZVVZy3U6MjN4UvsXVXRnRmDOV8j8p9TmOUXuEK8L1X lwlfuv06CcLAxkmFOuE4d82If8EwjYRB7OpYFcpz3Woa4U20bAxP2x6pKI3JlOHRVjNg /uEciSV/D75aJ15k2KhfX5h5kyvcaJhOPywCJ9AjlBBT8WO5d5cHuWEIjxwzoH8Sq94B se6YoUCX+G33SFtU+3r4/0EWEqn+vLdYzIE9Zy2kHroQlDTvTcyCbaXXI0+blt/FM7BA ZKyg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alliedtelesis.co.nz header.s=mail181024 header.b="a+h3mFl/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=REJECT dis=NONE) header.from=alliedtelesis.co.nz Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q197-20020a632ace000000b0050be02c590asi9593752pgq.666.2023.04.23.16.44.00; Sun, 23 Apr 2023 16:44:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@alliedtelesis.co.nz header.s=mail181024 header.b="a+h3mFl/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=REJECT dis=NONE) header.from=alliedtelesis.co.nz Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229565AbjDWX2J (ORCPT + 99 others); Sun, 23 Apr 2023 19:28:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44400 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229498AbjDWX2H (ORCPT ); Sun, 23 Apr 2023 19:28:07 -0400 Received: from gate2.alliedtelesis.co.nz (gate2.alliedtelesis.co.nz [202.36.163.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC34010EB for ; Sun, 23 Apr 2023 16:27:58 -0700 (PDT) Received: from svr-chch-seg1.atlnz.lc (mmarshal3.atlnz.lc [10.32.18.43]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by gate2.alliedtelesis.co.nz (Postfix) with ESMTPS id ACEAE2C0714; Mon, 24 Apr 2023 11:27:56 +1200 (NZST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alliedtelesis.co.nz; s=mail181024; t=1682292476; bh=vfLLovOhJdu1h5lGO0pEL1BGrzGLpb2ACOZUb2JKwmA=; h=From:To:CC:Subject:Date:References:In-Reply-To:From; b=a+h3mFl/thsQGOyPNuDnLgpm4sz9NCFTZhAQb6rHig9f8Z8zTsOVFb4veCdIPRNk8 u7+aNoBDP6N4+gQtgfxisCr5aaQ8KOaC+ExWM+dLBgk8uiiOb/8bb3lGmTYtjdMXXl FTXWop2KS6sReO9Mw374XIsMK04xAyeLZv2viGmXoxTY0Q5x42a0FCHupxnjNvw4U7 zg2GQIOGsx1o9njSpimz0PKjqTVhwFI89Sw6OKJtvaMbFL1vNumWJHJ+xCGwa5JysZ KvlCPKwwprI3ZD6KLq/nWQNOPXCb1xHXxTePamktMqHyIFxKKh0LniHkvB8H5gfUd2 uUB20BtSAELEw== Received: from svr-chch-ex2.atlnz.lc (Not Verified[2001:df5:b000:bc8::76]) by svr-chch-seg1.atlnz.lc with Trustwave SEG (v8,2,6,11305) id ; Mon, 24 Apr 2023 11:27:56 +1200 Received: from svr-chch-ex2.atlnz.lc (2001:df5:b000:bc8::76) by svr-chch-ex2.atlnz.lc (2001:df5:b000:bc8::76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Mon, 24 Apr 2023 11:27:56 +1200 Received: from svr-chch-ex2.atlnz.lc ([fe80::a9eb:c9b7:8b52:9567]) by svr-chch-ex2.atlnz.lc ([fe80::a9eb:c9b7:8b52:9567%15]) with mapi id 15.02.1118.026; Mon, 24 Apr 2023 11:27:56 +1200 From: Chris Packham To: Ibrahim Tilki , "a.zummo@towertech.it" , "alexandre.belloni@bootlin.com" , "jdelvare@suse.com" , "linux@roeck-us.net" , "robh+dt@kernel.org" , "krzysztof.kozlowski+dt@linaro.org" CC: "linux-rtc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-hwmon@vger.kernel.org" , "devicetree@vger.kernel.org" , "Zeynep Arslanbenzer" Subject: Re: [PATCH v5 1/2] drivers: rtc: add max313xx series rtc driver Thread-Topic: [PATCH v5 1/2] drivers: rtc: add max313xx series rtc driver Thread-Index: AQHZdjZLgX7SA8wzl0CehDF+asRkOq84wN+A Date: Sun, 23 Apr 2023 23:27:56 +0000 Message-ID: References: <20230403154342.3108-1-Ibrahim.Tilki@analog.com> <20230403154342.3108-2-Ibrahim.Tilki@analog.com> In-Reply-To: Accept-Language: en-NZ, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.33.22.30] Content-Type: text/plain; charset="utf-8" Content-ID: <6D3F8A4FE38E0A4FB168943633833180@atlnz.lc> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-SEG-SpamProfiler-Analysis: v=2.3 cv=VfuJw2h9 c=1 sm=1 tr=0 a=Xf/6aR1Nyvzi7BryhOrcLQ==:117 a=xqWC_Br6kY4A:10 a=75chYTbOgJ0A:10 a=IkcTkHD0fZMA:10 a=dKHAf1wccvYA:10 a=gAnH3GRIAAAA:8 a=bnKqXCeS2b-TZEkIUDAA:9 a=QEXdDO2ut3YA:10 a=oVHKYsEdi7-vN-J5QA_j:22 X-SEG-SpamProfiler-Score: 0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQpPbiAyNC8wNC8yMyAxMDo1MiwgQ2hyaXMgUGFja2hhbSB3cm90ZToNCj4gSGkgSWJyYWhpbSwN Cj4NCj4gT24gNC8wNC8yMyAwMzo0MywgSWJyYWhpbSBUaWxraSB3cm90ZToNCj4+IEFkZGluZyBz dXBwb3J0IGZvciBBbmFsb2cgRGV2aWNlcyBNQVgzMTNYWCBzZXJpZXMgUlRDcy4NCj4+DQo+PiBT aWduZWQtb2ZmLWJ5OiBJYnJhaGltIFRpbGtpIDxJYnJhaGltLlRpbGtpQGFuYWxvZy5jb20+DQo+ PiBTaWduZWQtb2ZmLWJ5OiBaZXluZXAgQXJzbGFuYmVuemVyIDxaZXluZXAuQXJzbGFuYmVuemVy QGFuYWxvZy5jb20+DQo+DQo+IEp1c3QgdGFraW5nIHRoaXMgdmVyc2lvbiBmb3IgYSBzcGluIG9u IG15IGJvYXJkIHdpdGggdGhlIE1BWDMxMzMxLiANCj4gQ29tcGFyZWQgdG8gcGF0Y2hzZXQgMyBJ J20gZmluZGluZyB0aGF0IHRoZSBSVEMgaXNuJ3QgYWN0dWFsbHkgcnVubmluZyANCj4gYWZ0ZXIg aXQgaXMgc2V0LiBJIGhhdmVuJ3QgYmVndW4gdG8gZGVidWcgd2h5IHRoaXMgbWlnaHQgYmUuIEkg c3VzcGVjdCANCj4gaXQncyBub3QgYmVpbmcgZW5hYmxlZC4NCj4NCj4gSGVyZSdzIHRoZSBzbmlw cGV0IG9mIGR0cyB0aGF0IEknbSB1c2luZyAod2hpY2ggd29ya2VkIHdpdGggcGF0Y2hzZXQgMyku DQo+DQo+IMKgwqDCoMKgwqDCoMKgIGkyY0AxIHsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBydGNANjggew0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb21wYXRpYmxlID0gImFk aSxtYXgzMTMzMSI7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlZyA9IDwweDY4PjsNCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Ow0KPiDCoMKgwqDCoMKgwqDCoCB9Ow0KPg0K PiBBbmQgaGVyZSdzIGFuIGV4YW1wbGUgb2YgaXQgbm90IHdvcmtpbmcNCj4NCj4gcm9vdEB4MjQw LTI2R0hYbSB+XSMgZGF0ZQ0KPiBNb24gQXByIDI0IDEwOjQ5OjU0IFVUQyAyMDIzDQo+IFtyb290 QHgyNDAtMjZHSFhtIH5dIyBod2Nsb2NrIC13DQo+IFtyb290QHgyNDAtMjZHSFhtIH5dIyBod2Ns b2NrIC1yDQo+IFNhdCBKYW7CoCAxIDAwOjAwOjAwIDIwMDDCoCAwLjAwMDAwMCBzZWNvbmRzDQo+ DQo+IEFuZCBmaW5hbGx5IGEgcmVnaXN0ZXIgZHVtcCB3aGljaCBJJ2xsIHN0YXJ0IGxvb2tpbmcg YXQgc2hvcnRseQ0KPg0KPiBbcm9vdEB4MjQwLTI2R0hYbSB+XSMgaTJjZHVtcCAtZiAteSAyIDB4 NjgNCj4gTm8gc2l6ZSBzcGVjaWZpZWQgKHVzaW5nIGJ5dGUtZGF0YSBhY2Nlc3MpDQo+IMKgwqDC oMKgIDDCoCAxwqAgMsKgIDPCoCA0wqAgNcKgIDbCoCA3wqAgOMKgIDnCoCBhwqAgYsKgIGPCoCBk wqAgZcKgIGYgMDEyMzQ1Njc4OWFiY2RlZg0KPiAwMDogNDAgMDAgMDEgNDMgMDMgMDQgMDQgMDAg MDAgMDAgMDAgMDEgMDEgMDEgMDAgMDAgQC4/Qz8/Py4uLi4/Pz8uLg0KPiAxMDogMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDEgLi4uLi4uLi4uLi4uLi4uPw0K PiAyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgLi4u Li4uLi4uLi4uLi4uLg0KPiAzMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgLi4uLi4uLi4uLi4uLi4uLg0KPiA0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgZmYgZmYgZmYgZmYgZmYgZmYgZmYgLi4uLi4uLi4uLi4uLi4uLg0KPiA1MDogZmYgZmYg ZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgLi4uLi4uLi4uLi4uLi4u Lg0KPiA2MDogMDAgMDAgMDAgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYg Li4uLi4uLi4uLi4uLi4uLg0KPiA3MDogZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYg ZmYgZmYgZmYgZmYgZmYgLi4uLi4uLi4uLi4uLi4uLg0KPiA4MDogZmYgZmYgZmYgZmYgZmYgZmYg ZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgLi4uLi4uLi4uLi4uLi4uLg0KPiA5MDogZmYg ZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgLi4uLi4uLi4uLi4u Li4uLg0KPiBhMDogZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYg ZmYgLi4uLi4uLi4uLi4uLi4uLg0KPiBiMDogZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYg ZmYgZmYgZmYgZmYgZmYgZmYgLi4uLi4uLi4uLi4uLi4uLg0KPiBjMDogZmYgZmYgZmYgZmYgZmYg ZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgLi4uLi4uLi4uLi4uLi4uLg0KPiBkMDog ZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgLi4uLi4uLi4u Li4uLi4uLg0KPiBlMDogZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYg ZmYgZmYgLi4uLi4uLi4uLi4uLi4uLg0KPiBmMDogZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYg ZmYgZmYgZmYgZmYgZmYgZmYgZmYgLi4uLi4uLi4uLi4uLi4uLg0KDQpEb2luZyBhIGJpdCBvZiBk ZWJ1Z2dpbmcgSSBjYW4gc2VlIHRoYXQgdGhlIE9TRiBiaXQgaXMgc2V0IGluIHRoZSBTVEFUVVMg DQpyZWcgYW5kIHRoYXQgdGhlIFNXUlNUIGJpdCBpcyBzZXQgaW4gdGhlIFJFU0VUIHJlZ2lzdGVy LiBUaGlzIGlzIGxpa2VseSANCmJlY2F1c2UgYnVpbGRzIG9uIHRoaXMgZGV2aWNlIGhhdmUgYmVl biBhc3N1bWluZyB0aGF0IHRoZSBSVEMgaXMgYSANCkRTMTM0MC4gTWFudWFsbHkgY2xlYXJpbmcg dGhlIHJlc2V0IGJpdCB0aGluZ3Mgc3RhcnQgd29ya2luZy4gSSBoYXZlbid0IA0KY29uZmlybWVk IGJ1dCBJIHRoaW5rIHBhdGNoc2V0IDMgcHJvYmFibHkgd291bGQgaGF2ZSBmYWlsZWQgaW4gdGhp cyANCnNpdHVhdGlvbiB0b28uDQoNCkV2ZW4gdGhvdWdoIHRoaXMgbWlnaHQgYmUgY29uc2lkZXJl ZCBvcGVyYXRvciBlcnJvciBJIHRoaW5rIHRoYXQgdGhlIA0KZHJpdmVyIG5lZWRzIHRvIGRldGVj dCBPU0YgYW5kIHJldHVybiAtRUlOVkFMIGluIG1heDMxM3h4X3JlYWRfdGltZSBsaWtlIA0Kb3Ro ZXIgUlRDIGRyaXZlcnMgZG8uIEFuZCB0aGF0IG1heDMxM3h4X3NldF90aW1lIG5lZWRzIHRvIGVu c3VyZSB0aGF0IA0KdGhlIFNXUlNUIGJpdCBpcyBjbGVhcmVkLiBJIGNhbiB3aGlwIHVwIGEgcGF0 Y2ggdG8gYmUgc3F1YXNoZWQgaW50byB5b3VyIA0KbmV4dCByZXZpc2lvbiBpZiB0aGF0IGhlbHBz Lg0KDQo+DQo+PiAtLS0NCj4+IMKgIGRyaXZlcnMvcnRjL0tjb25maWfCoMKgwqDCoMKgwqDCoCB8 wqDCoCAxMSArDQo+PiDCoCBkcml2ZXJzL3J0Yy9NYWtlZmlsZcKgwqDCoMKgwqDCoCB8wqDCoMKg IDEgKw0KPj4gwqAgZHJpdmVycy9ydGMvcnRjLW1heDMxM3h4LmMgfCAxMDUzICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4gwqAgMyBmaWxlcyBjaGFuZ2VkLCAxMDY1IGlu c2VydGlvbnMoKykNCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3J0Yy9ydGMtbWF4 MzEzeHguYw0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9LY29uZmlnIGIvZHJpdmVy cy9ydGMvS2NvbmZpZw0KPj4gaW5kZXggNzUzODcyNDA4Li4yMTYwNjE5ZWQgMTAwNjQ0DQo+PiAt LS0gYS9kcml2ZXJzL3J0Yy9LY29uZmlnDQo+PiArKysgYi9kcml2ZXJzL3J0Yy9LY29uZmlnDQo+ PiBAQCAtMzIzLDYgKzMyMywxNyBAQCBjb25maWcgUlRDX0RSVl9MUDg3ODgNCj4+IMKgwqDCoMKg wqAgaGVscA0KPj4gwqDCoMKgwqDCoMKgwqAgU2F5IFkgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRo ZSBMUDg3ODggUlRDL0FMQVJNIGRyaXZlci4NCj4+IMKgICtjb25maWcgUlRDX0RSVl9NQVgzMTNY WA0KPj4gK8KgwqDCoCB0cmlzdGF0ZSAiQW5hbG9nIERldmljZXMgTUFYMzEzWFggUlRDIGRyaXZl ciINCj4+ICvCoMKgwqAgZGVwZW5kcyBvbiBJMkMNCj4+ICvCoMKgwqAgc2VsZWN0IFJFR01BUF9J MkMNCj4+ICvCoMKgwqAgaGVscA0KPj4gK8KgwqDCoMKgwqAgSWYgeW91IHNheSB5ZXMgaGVyZSB5 b3Ugd2lsbCBnZXQgc3VwcG9ydCBmb3IgdGhlDQo+PiArwqDCoMKgwqDCoCBBbmFsb2cgRGV2aWNl cyBNQVgzMTNYWCBzZXJpZXMgUlRDIGZhbWlseS4NCj4+ICsNCj4+ICvCoMKgwqDCoMKgIFRoaXMg ZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBJZiBzbywgdGhlIG1vZHVsZQ0K Pj4gK8KgwqDCoMKgwqAgd2lsbCBiZSBjYWxsZWQgcnRjLW1heDMxM3h4Lg0KPj4gKw0KPj4gwqAg Y29uZmlnIFJUQ19EUlZfTUFYNjkwMA0KPj4gwqDCoMKgwqDCoCB0cmlzdGF0ZSAiTWF4aW0gTUFY NjkwMCINCj4+IMKgwqDCoMKgwqAgaGVscA0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL01h a2VmaWxlIGIvZHJpdmVycy9ydGMvTWFrZWZpbGUNCj4+IGluZGV4IGVhNDQ1ZDFlYi4uODgwZGI5 OWJlIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ydGMvTWFrZWZpbGUNCj4+ICsrKyBiL2RyaXZl cnMvcnRjL01ha2VmaWxlDQo+PiBAQCAtODgsNiArODgsNyBAQCBvYmotJChDT05GSUdfUlRDX0RS Vl9NNDFUOTQpwqDCoMKgICs9IHJ0Yy1tNDF0OTQubw0KPj4gwqAgb2JqLSQoQ09ORklHX1JUQ19E UlZfTTQ4VDM1KcKgwqDCoCArPSBydGMtbTQ4dDM1Lm8NCj4+IMKgIG9iai0kKENPTkZJR19SVENf RFJWX000OFQ1OSnCoMKgwqAgKz0gcnRjLW00OHQ1OS5vDQo+PiDCoCBvYmotJChDT05GSUdfUlRD X0RSVl9NNDhUODYpwqDCoMKgICs9IHJ0Yy1tNDh0ODYubw0KPj4gK29iai0kKENPTkZJR19SVENf RFJWX01BWDMxM1hYKcKgwqDCoCArPSBydGMtbWF4MzEzeHgubw0KPj4gwqAgb2JqLSQoQ09ORklH X1JUQ19EUlZfTUFYNjkwMCnCoMKgwqAgKz0gcnRjLW1heDY5MDAubw0KPj4gwqAgb2JqLSQoQ09O RklHX1JUQ19EUlZfTUFYNjkwMinCoMKgwqAgKz0gcnRjLW1heDY5MDIubw0KPj4gwqAgb2JqLSQo Q09ORklHX1JUQ19EUlZfTUFYNjkxNinCoMKgwqAgKz0gcnRjLW1heDY5MTYubw0KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1tYXgzMTN4eC5jIGIvZHJpdmVycy9ydGMvcnRjLW1heDMx M3h4LmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAuLjA0MzUy OGQ3ZA0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9ydGMvcnRjLW1heDMxM3h4 LmMNCj4+IEBAIC0wLDAgKzEsMTA1MyBAQA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkNCj4+ICsvKg0KPj4gKyAqIEFuYWxvZyBEZXZpY2VzIE1BWDMxM1hYIHNl cmllcyBJMkMgUlRDIGRyaXZlcg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IDIwMjMgQW5hbG9n IERldmljZXMgSW5jLg0KPj4gKyAqLw0KPj4gKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy91bmFsaWdu ZWQuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvYmNkLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2Jp dGZpZWxkLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPj4gKyNpbmNsdWRlIDxsaW51 eC9jbGstcHJvdmlkZXIuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvaHdtb24uaD4NCj4+ICsjaW5j bHVkZSA8bGludXgvaTJjLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KPj4gKyNp bmNsdWRlIDxsaW51eC9ydGMuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvdXRpbF9tYWNyb3MuaD4N Cj4+ICsNCj4+ICsvKiBjb21tb24gcmVnaXN0ZXJzICovDQo+PiArI2RlZmluZSBNQVgzMTNYWF9J TlRfQUxBUk0xwqDCoMKgwqDCoMKgwqAgQklUKDApDQo+PiArI2RlZmluZSBNQVgzMTNYWF9IUlNf Rl9BTV9QTcKgwqDCoMKgwqDCoMKgIEJJVCg1KQ0KPj4gKyNkZWZpbmUgTUFYMzEzWFhfSFJTX0Zf MTJfMjTCoMKgwqDCoMKgwqDCoCBCSVQoNikNCj4+ICsjZGVmaW5lIE1BWDMxM1hYX01PTlRIX0NF TlRVUlnCoMKgwqDCoMKgwqDCoCBCSVQoNykNCj4+ICsNCj4+ICsjZGVmaW5lIE1BWDMxM1hYX1RJ TUVfU0laRcKgwqDCoMKgwqDCoMKgIDB4MDcNCj4+ICsNCj4+ICsvKiBkZXZpY2Ugc3BlY2lmaWMg cmVnaXN0ZXJzICovDQo+PiArI2RlZmluZSBNQVgzMTM0WF9DRkcyX1JFR8KgwqDCoMKgwqDCoMKg IDB4MDENCj4+ICsjZGVmaW5lIE1BWDMxMzRYX0NGRzJfU0VUX1JUQ8KgwqDCoMKgwqDCoMKgIEJJ VCgxKQ0KPj4gKw0KPj4gKyNkZWZpbmUgTUFYMzEzNDFfVFJJQ0tMRV9SRVNfTUFTS8KgwqDCoCBH RU5NQVNLKDEsIDApDQo+PiArI2RlZmluZSBNQVgzMTM0MV9UUklDS0xFX0RJT0RFX0VOwqDCoMKg IEJJVCgyKQ0KPj4gKyNkZWZpbmUgTUFYMzEzNDFfVFJJQ0tMRV9FTkFCTEVfQklUwqDCoMKgIEJJ VCgzKQ0KPj4gKyNkZWZpbmUgTUFYMzEzNDFfUE9XRVJfTUdNVF9SRUfCoMKgwqDCoMKgwqDCoCAw eDU2DQo+PiArI2RlZmluZSBNQVgzMTM0MV9QT1dFUl9NR01UX1RSSUNLTEVfQklUwqDCoMKgIEJJ VCgwKQ0KPj4gKw0KPj4gKyNkZWZpbmUgTUFYMzEzM1hfVFJJQ0tMRV9SRVNfTUFTS8KgwqDCoCBH RU5NQVNLKDIsIDEpDQo+PiArI2RlZmluZSBNQVgzMTMzWF9UUklDS0xFX0RJT0RFX0VOwqDCoMKg IEJJVCgzKQ0KPj4gKyNkZWZpbmUgTUFYMzEzM1hfVFJJQ0tMRV9FTkFCTEVfQklUwqDCoMKgIEJJ VCgwKQ0KPj4gKw0KPj4gKyNkZWZpbmUgTUFYMzEzMjlfVFJJQ0tMRV9FTkFCTEVfQklUwqDCoMKg IEJJVCg3KQ0KPj4gKyNkZWZpbmUgTUFYMzEzNDNfVFJJQ0tMRV9FTkFCTEVfTUFTS8KgwqDCoCBH RU5NQVNLKDcsIDQpDQo+PiArI2RlZmluZSBNQVgzMTM0M19UUklDS0xFX0VOQUJMRV9DT0RFwqDC oMKgIDUNCj4+ICsjZGVmaW5lIE1BWDMxMzI5XzQzX1RSSUNLTEVfUkVTX01BU0vCoMKgwqAgR0VO TUFTSygxLCAwKQ0KPj4gKyNkZWZpbmUgTUFYMzEzMjlfNDNfVFJJQ0tMRV9ESU9ERV9FTsKgwqDC oCBCSVQoMikNCj4+ICsNCj4+ICsjZGVmaW5lIE1BWDMxMzI5X0NPTkZJRzJfUkVHwqDCoMKgwqDC oMKgwqAgMHgwNA0KPj4gKyNkZWZpbmUgTUFYMzEzMjlfQ09ORklHMl9DTEtJTl9FTsKgwqDCoCBC SVQoMikNCj4+ICsjZGVmaW5lIE1BWDMxMzI5X0NPTkZJRzJfQ0xLSU5fRlJFUcKgwqDCoCBHRU5N QVNLKDEsIDApDQo+PiArDQo+PiArI2RlZmluZSBNQVgzMTM0MV80Ml9DT05GSUcxX1JFR8KgwqDC oMKgwqDCoMKgIDB4MDANCj4+ICsjZGVmaW5lIE1BWDMxMzQxXzQyX0NPTkZJRzFfQ0xLSU5fRU7C oMKgwqAgQklUKDcpDQo+PiArI2RlZmluZSBNQVgzMTM0MV80Ml9DT05GSUcxX0NMS0lOX0ZSRVHC oMKgwqAgR0VOTUFTSyg1LCA0KQ0KPj4gKyNkZWZpbmUgTUFYMzEzNDFfNDJfQ09ORklHMV9PU0Nf RElTQUJMRcKgwqDCoCBCSVQoMykNCj4+ICsjZGVmaW5lIE1BWDMxMzQxXzQyX0NPTkZJRzFfU1dS U1TCoMKgwqAgQklUKDApDQo+PiArDQo+PiArZW51bSBtYXgzMTN4eF9pZHMgew0KPj4gK8KgwqDC oCBJRF9NQVgzMTMyOCwNCj4+ICvCoMKgwqAgSURfTUFYMzEzMjksDQo+PiArwqDCoMKgIElEX01B WDMxMzMxLA0KPj4gK8KgwqDCoCBJRF9NQVgzMTMzNCwNCj4+ICvCoMKgwqAgSURfTUFYMzEzNDEs DQo+PiArwqDCoMKgIElEX01BWDMxMzQyLA0KPj4gK8KgwqDCoCBJRF9NQVgzMTM0MywNCj4+ICvC oMKgwqAgTUFYMzEzWFhfSURfTlINCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBjbGtvdXRfY2Zn IHsNCj4+ICvCoMKgwqAgY29uc3QgaW50ICpmcmVxX2F2YWlsOw0KPj4gK8KgwqDCoCB1OCBmcmVx X3NpemU7DQo+PiArwqDCoMKgIHU4IGZyZXFfcG9zOw0KPj4gK8KgwqDCoCB1OCByZWc7DQo+PiAr wqDCoMKgIHU4IGVuX2JpdDsNCj4+ICvCoMKgwqAgYm9vbCBlbl9pbnZlcnQ7DQo+PiArfTsNCj4+ ICsNCj4+ICtzdHJ1Y3QgY2hpcF9kZXNjIHsNCj4+ICvCoMKgwqAgc3RydWN0IGNsa291dF9jZmcg KmNsa291dDsNCj4+ICvCoMKgwqAgY29uc3QgY2hhciAqY2xrb3V0X25hbWU7DQo+PiArwqDCoMKg IHU4IHNlY19yZWc7DQo+PiArwqDCoMKgIHU4IGFsYXJtMV9zZWNfcmVnOw0KPj4gKw0KPj4gK8Kg wqDCoCB1OCBpbnRfZW5fcmVnOw0KPj4gK8KgwqDCoCB1OCBpbnRfc3RhdHVzX3JlZzsNCj4+ICsN Cj4+ICvCoMKgwqAgdTggcmFtX3JlZzsNCj4+ICvCoMKgwqAgdTggcmFtX3NpemU7DQo+PiArDQo+ PiArwqDCoMKgIHU4IHRlbXBfcmVnOw0KPj4gKw0KPj4gK8KgwqDCoCB1OCB0cmlja2xlX3JlZzsN Cj4+ICt9Ow0KPj4gKw0KPj4gKyNkZWZpbmUgY2xrX2h3X3RvX21heDMxM3h4KF9odykgY29udGFp bmVyX29mKF9odywgc3RydWN0IG1heDMxM3h4LCANCj4+IGNsa291dCkNCj4+ICsNCj4+ICtzdHJ1 Y3QgbWF4MzEzeHggew0KPj4gK8KgwqDCoCBlbnVtIG1heDMxM3h4X2lkcyBpZDsNCj4+ICvCoMKg wqAgc3RydWN0IHJlZ21hcCAqcmVnbWFwOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgcnRjX2RldmljZSAq cnRjOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgY2xrX2h3IGNsa291dDsNCj4+ICvCoMKgwqAgc3RydWN0 IGNsayAqY2xraW47DQo+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBjaGlwX2Rlc2MgKmNoaXA7DQo+ PiArwqDCoMKgIGludCBpcnE7DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3QgaW50IG1h eDMxM3h4X2Nsa2luX2ZyZXFbXSA9IHsgMSwgNTAsIDYwLCAzMjc2OCB9Ow0KPj4gKw0KPj4gK3N0 YXRpYyBjb25zdCBpbnQgbWF4MzEzMjhfY2xrb3V0X2ZyZXFbXSA9IHsgMSwgMTAyNCwgNDA5Niwg ODE5MiB9Ow0KPj4gK3N0YXRpYyBjb25zdCBpbnQgbWF4MzEzMjlfY2xrb3V0X2ZyZXFbXSA9IHsg MSwgNDA5NiwgODE5MiwgMzI3NjggfTsNCj4+ICtzdGF0aWMgY29uc3QgaW50IG1heDMxMzN4X2Ns a291dF9mcmVxW10gPSB7IDEsIDY0LCAxMDI0LCAzMjc2OCB9Ow0KPj4gK3N0YXRpYyBjb25zdCBp bnQgbWF4MzEzNDFfNDJfY2xrb3V0X2ZyZXFbXSA9IHsgMSwgNTAsIDYwLCAzMjc2OCB9Ow0KPj4g K3N0YXRpYyBjb25zdCBpbnQgbWF4MzEzNDNfY2xrb3V0X2ZyZXFbXSA9IHsgMSwgMiwgNCwgOCwg MTYsIDMyLCA2NCwgDQo+PiAxMjgsIDMyODc1IH07DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBj bGtvdXRfY2ZnIG1heDMxMzI4X2Nsa291dCA9IHsNCj4+ICvCoMKgwqAgLmZyZXFfYXZhaWwgPSBt YXgzMTMyOF9jbGtvdXRfZnJlcSwNCj4+ICvCoMKgwqAgLmZyZXFfc2l6ZSA9IEFSUkFZX1NJWkUo bWF4MzEzMjhfY2xrb3V0X2ZyZXEpLA0KPj4gK8KgwqDCoCAuZnJlcV9wb3MgPSAzLA0KPj4gK8Kg wqDCoCAucmVnID0gMHgwRSwNCj4+ICvCoMKgwqAgLmVuX2JpdCA9IEJJVCgzKSwNCj4+ICvCoMKg wqAgLmVuX2ludmVydCA9IHRydWUsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IGNs a291dF9jZmcgbWF4MzEzMjlfY2xrb3V0ID0gew0KPj4gK8KgwqDCoCAuZnJlcV9hdmFpbCA9IG1h eDMxMzI5X2Nsa291dF9mcmVxLA0KPj4gK8KgwqDCoCAuZnJlcV9zaXplID0gQVJSQVlfU0laRSht YXgzMTMyOV9jbGtvdXRfZnJlcSksDQo+PiArwqDCoMKgIC5mcmVxX3BvcyA9IDUsDQo+PiArwqDC oMKgIC5yZWcgPSAweDA0LA0KPj4gK8KgwqDCoCAuZW5fYml0ID0gQklUKDcpLA0KPj4gK307DQo+ PiArDQo+PiArc3RhdGljIHN0cnVjdCBjbGtvdXRfY2ZnIG1heDMxMzN4X2Nsa291dCA9IHsNCj4+ ICvCoMKgwqAgLmZyZXFfYXZhaWwgPSBtYXgzMTMzeF9jbGtvdXRfZnJlcSwNCj4+ICvCoMKgwqAg LmZyZXFfc2l6ZSA9IEFSUkFZX1NJWkUobWF4MzEzM3hfY2xrb3V0X2ZyZXEpLA0KPj4gK8KgwqDC oCAuZnJlcV9wb3MgPSAwLA0KPj4gK8KgwqDCoCAucmVnID0gMHgwNCwNCj4+ICvCoMKgwqAgLmVu X2JpdCA9IEJJVCgyKSwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgY2xrb3V0X2Nm ZyBtYXgzMTM0MV80Ml9jbGtvdXQgPSB7DQo+PiArwqDCoMKgIC5mcmVxX2F2YWlsID0gbWF4MzEz NDFfNDJfY2xrb3V0X2ZyZXEsDQo+PiArwqDCoMKgIC5mcmVxX3NpemUgPSBBUlJBWV9TSVpFKG1h eDMxMzQxXzQyX2Nsa291dF9mcmVxKSwNCj4+ICvCoMKgwqAgLmZyZXFfcG9zID0gMSwNCj4+ICvC oMKgwqAgLnJlZyA9IDB4MDAsDQo+PiArwqDCoMKgIC5lbl9iaXQgPSBCSVQoNiksDQo+PiArwqDC oMKgIC5lbl9pbnZlcnQgPSB0cnVlLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBj bGtvdXRfY2ZnIG1heDMxMzQzX2Nsa291dCA9IHsNCj4+ICvCoMKgwqAgLmZyZXFfYXZhaWwgPSBt YXgzMTM0M19jbGtvdXRfZnJlcSwNCj4+ICvCoMKgwqAgLmZyZXFfc2l6ZSA9IEFSUkFZX1NJWkUo bWF4MzEzNDNfY2xrb3V0X2ZyZXEpLA0KPj4gK8KgwqDCoCAuZnJlcV9wb3MgPSAzLA0KPj4gK8Kg wqDCoCAucmVnID0gMHgwNCwNCj4+ICvCoMKgwqAgLmVuX2JpdCA9IEJJVCg3KSwNCj4+ICt9Ow0K Pj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2hpcF9kZXNjIGNoaXBbTUFYMzEzWFhfSURf TlJdID0gew0KPj4gK8KgwqDCoCBbSURfTUFYMzEzMjhdID0gew0KPj4gK8KgwqDCoMKgwqDCoMKg IC5pbnRfZW5fcmVnID0gMHgwRSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuaW50X3N0YXR1c19yZWcg PSAweDBGLA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5zZWNfcmVnID0gMHgwMCwNCj4+ICvCoMKgwqDC oMKgwqDCoCAuYWxhcm0xX3NlY19yZWcgPSAweDA3LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC50ZW1w X3JlZyA9IDB4MTEsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmNsa291dCA9ICZtYXgzMTMyOF9jbGtv dXQsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmNsa291dF9uYW1lID0gIm1heDMxMzI4LXNxdyIsDQo+ PiArwqDCoMKgIH0sDQo+PiArwqDCoMKgIFtJRF9NQVgzMTMyOV0gPSB7DQo+PiArwqDCoMKgwqDC oMKgwqAgLmludF9lbl9yZWcgPSAweDAxLA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5pbnRfc3RhdHVz X3JlZyA9IDB4MDAsDQo+PiArwqDCoMKgwqDCoMKgwqAgLnNlY19yZWcgPSAweDA2LA0KPj4gK8Kg wqDCoMKgwqDCoMKgIC5hbGFybTFfc2VjX3JlZyA9IDB4MEQsDQo+PiArwqDCoMKgwqDCoMKgwqAg LnJhbV9yZWcgPSAweDIyLA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5yYW1fc2l6ZSA9IDY0LA0KPj4g K8KgwqDCoMKgwqDCoMKgIC50cmlja2xlX3JlZyA9IDB4MTksDQo+PiArwqDCoMKgwqDCoMKgwqAg LmNsa291dCA9ICZtYXgzMTMyOV9jbGtvdXQsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmNsa291dF9u YW1lID0gIm1heDMxMzI5LWNsa291dCIsDQo+PiArwqDCoMKgIH0sDQo+PiArwqDCoMKgIFtJRF9N QVgzMTMzMV0gPSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgLmludF9lbl9yZWcgPSAweDAxLA0KPj4g K8KgwqDCoMKgwqDCoMKgIC5pbnRfc3RhdHVzX3JlZyA9IDB4MDAsDQo+PiArwqDCoMKgwqDCoMKg wqAgLnNlY19yZWcgPSAweDA4LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5hbGFybTFfc2VjX3JlZyA9 IDB4MEYsDQo+PiArwqDCoMKgwqDCoMKgwqAgLnJhbV9yZWcgPSAweDIwLA0KPj4gK8KgwqDCoMKg wqDCoMKgIC5yYW1fc2l6ZSA9IDMyLA0KPj4gK8KgwqDCoMKgwqDCoMKgIC50cmlja2xlX3JlZyA9 IDB4MUIsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmNsa291dCA9ICZtYXgzMTMzeF9jbGtvdXQsDQo+ PiArwqDCoMKgwqDCoMKgwqAgLmNsa291dF9uYW1lID0gIm1heDMxMzMxLWNsa291dCIsDQo+PiAr wqDCoMKgIH0sDQo+PiArwqDCoMKgIFtJRF9NQVgzMTMzNF0gPSB7DQo+PiArwqDCoMKgwqDCoMKg wqAgLmludF9lbl9yZWcgPSAweDAxLA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5pbnRfc3RhdHVzX3Jl ZyA9IDB4MDAsDQo+PiArwqDCoMKgwqDCoMKgwqAgLnNlY19yZWcgPSAweDA5LA0KPj4gK8KgwqDC oMKgwqDCoMKgIC5hbGFybTFfc2VjX3JlZyA9IDB4MTAsDQo+PiArwqDCoMKgwqDCoMKgwqAgLnJh bV9yZWcgPSAweDMwLA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5yYW1fc2l6ZSA9IDMyLA0KPj4gK8Kg wqDCoMKgwqDCoMKgIC50cmlja2xlX3JlZyA9IDB4MUUsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmNs a291dCA9ICZtYXgzMTMzeF9jbGtvdXQsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmNsa291dF9uYW1l ID0gIm1heDMxMzM0LWNsa291dCIsDQo+PiArwqDCoMKgIH0sDQo+PiArwqDCoMKgIFtJRF9NQVgz MTM0MV0gPSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgLmludF9lbl9yZWcgPSAweDA0LA0KPj4gK8Kg wqDCoMKgwqDCoMKgIC5pbnRfc3RhdHVzX3JlZyA9IDB4MDUsDQo+PiArwqDCoMKgwqDCoMKgwqAg LnNlY19yZWcgPSAweDA2LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5hbGFybTFfc2VjX3JlZyA9IDB4 MEQsDQo+PiArwqDCoMKgwqDCoMKgwqAgLnJhbV9yZWcgPSAweDE2LA0KPj4gK8KgwqDCoMKgwqDC oMKgIC5yYW1fc2l6ZSA9IDY0LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC50cmlja2xlX3JlZyA9IDB4 NTcsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmNsa291dCA9ICZtYXgzMTM0MV80Ml9jbGtvdXQsDQo+ PiArwqDCoMKgwqDCoMKgwqAgLmNsa291dF9uYW1lID0gIm1heDMxMzQxLWNsa291dCIsDQo+PiAr wqDCoMKgIH0sDQo+PiArwqDCoMKgIFtJRF9NQVgzMTM0Ml0gPSB7DQo+PiArwqDCoMKgwqDCoMKg wqAgLmludF9lbl9yZWcgPSAweDA0LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5pbnRfc3RhdHVzX3Jl ZyA9IDB4MDUsDQo+PiArwqDCoMKgwqDCoMKgwqAgLnNlY19yZWcgPSAweDA2LA0KPj4gK8KgwqDC oMKgwqDCoMKgIC5hbGFybTFfc2VjX3JlZyA9IDB4MEQsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmNs a291dCA9ICZtYXgzMTM0MV80Ml9jbGtvdXQsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmNsa291dF9u YW1lID0gIm1heDMxMzQyLWNsa291dCIsDQo+PiArwqDCoMKgIH0sDQo+PiArwqDCoMKgIFtJRF9N QVgzMTM0M10gPSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgLmludF9lbl9yZWcgPSAweDAxLA0KPj4g K8KgwqDCoMKgwqDCoMKgIC5pbnRfc3RhdHVzX3JlZyA9IDB4MDAsDQo+PiArwqDCoMKgwqDCoMKg wqAgLnNlY19yZWcgPSAweDA2LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5hbGFybTFfc2VjX3JlZyA9 IDB4MEQsDQo+PiArwqDCoMKgwqDCoMKgwqAgLnJhbV9yZWcgPSAweDIyLA0KPj4gK8KgwqDCoMKg wqDCoMKgIC5yYW1fc2l6ZSA9IDY0LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC50ZW1wX3JlZyA9IDB4 MUEsDQo+PiArwqDCoMKgwqDCoMKgwqAgLnRyaWNrbGVfcmVnID0gMHgxOSwNCj4+ICvCoMKgwqDC oMKgwqDCoCAuY2xrb3V0ID0gJm1heDMxMzQzX2Nsa291dCwNCj4+ICvCoMKgwqDCoMKgwqDCoCAu Y2xrb3V0X25hbWUgPSAibWF4MzEzNDMtY2xrbyIsDQo+PiArwqDCoMKgIH0sDQo+PiArfTsNCj4+ ICsNCj4+ICtzdGF0aWMgY29uc3QgdTMyIG1heDMxM3h4X3RyaWNrbGVfb2htc1tdID0geyAzMDAw LCA2MDAwLCAxMTAwMCB9Ow0KPj4gKw0KPj4gK3N0YXRpYyBib29sIG1heDMxM3h4X3ZvbGF0aWxl X3JlZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByZWcpDQo+PiArew0KPj4gK8Kg wqDCoCBzdHJ1Y3QgbWF4MzEzeHggKnJ0YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPj4gK8Kg wqDCoCBjb25zdCBzdHJ1Y3QgY2hpcF9kZXNjICpjaGlwID0gcnRjLT5jaGlwOw0KPj4gKw0KPj4g K8KgwqDCoCAvKiB0aW1lIGtlZXBpbmcgcmVnaXN0ZXJzICovDQo+PiArwqDCoMKgIGlmIChyZWcg Pj0gY2hpcC0+c2VjX3JlZyAmJiByZWcgPCBjaGlwLT5zZWNfcmVnICsgDQo+PiBNQVgzMTNYWF9U SU1FX1NJWkUpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7DQo+PiArDQo+PiArwqDC oMKgIC8qIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIgKi8NCj4+ICvCoMKgwqAgaWYgKHJlZyA9 PSBjaGlwLT5pbnRfc3RhdHVzX3JlZykNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsN Cj4+ICsNCj4+ICvCoMKgwqAgLyogdGVtcGVyYXR1cmUgcmVnaXN0ZXJzICovDQo+PiArwqDCoMKg IHJldHVybiBjaGlwLT50ZW1wX3JlZyAmJg0KPj4gK8KgwqDCoMKgwqDCoMKgIChyZWcgPT0gY2hp cC0+dGVtcF9yZWcgfHwgcmVnID09IGNoaXAtPnRlbXBfcmVnICsgMSk7DQo+PiArfQ0KPj4gKw0K Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByZWdtYXBfY29uZmlnID0gew0K Pj4gK8KgwqDCoCAucmVnX2JpdHMgPSA4LA0KPj4gK8KgwqDCoCAudmFsX2JpdHMgPSA4LA0KPj4g K8KgwqDCoCAuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX1JCVFJFRSwNCj4+ICvCoMKgwqAgLnZvbGF0 aWxlX3JlZyA9IG1heDMxM3h4X3ZvbGF0aWxlX3JlZywNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRp YyBpbnQgbWF4MzEzeHhfZ2V0X2hvdXIodTggaG91cl9yZWcpDQo+PiArew0KPj4gK8KgwqDCoCBp bnQgaG91cjsNCj4+ICsNCj4+ICvCoMKgwqAgLyogMjRIciBtb2RlICovDQo+PiArwqDCoMKgIGlm ICghRklFTERfR0VUKE1BWDMxM1hYX0hSU19GXzEyXzI0LCBob3VyX3JlZykpDQo+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIGJjZDJiaW4oaG91cl9yZWcgJiAweDNmKTsNCj4+ICsNCj4+ICvCoMKg wqAgLyogMTJIciBtb2RlICovDQo+PiArwqDCoMKgIGhvdXIgPSBiY2QyYmluKGhvdXJfcmVnICYg MHgxZik7DQo+PiArwqDCoMKgIGlmIChob3VyID09IDEyKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIGhv dXIgPSAwOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoRklFTERfR0VUKE1BWDMxM1hYX0hSU19GX0FN X1BNLCBob3VyX3JlZykpDQo+PiArwqDCoMKgwqDCoMKgwqAgaG91ciArPSAxMjsNCj4+ICsNCj4+ ICvCoMKgwqAgcmV0dXJuIGhvdXI7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbWF4MzEz eHhfcmVhZF90aW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJ0Y190aW1lICp0KQ0KPj4g K3sNCj4+ICvCoMKgwqAgc3RydWN0IG1heDMxM3h4ICpydGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsNCj4+ICvCoMKgwqAgdTggcmVnc1s3XTsNCj4+ICvCoMKgwqAgaW50IHJldDsNCj4+ICsNCj4+ ICvCoMKgwqAgcmV0ID0gcmVnbWFwX2J1bGtfcmVhZChydGMtPnJlZ21hcCwgcnRjLT5jaGlwLT5z ZWNfcmVnLCByZWdzLCA3KTsNCj4+ICvCoMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCB0LT50bV9zZWMgPSBiY2QyYmluKHJlZ3Nb MF0gJiAweDdmKTsNCj4+ICvCoMKgwqAgdC0+dG1fbWluID0gYmNkMmJpbihyZWdzWzFdICYgMHg3 Zik7DQo+PiArwqDCoMKgIHQtPnRtX2hvdXIgPSBtYXgzMTN4eF9nZXRfaG91cihyZWdzWzJdKTsN Cj4+ICvCoMKgwqAgdC0+dG1fd2RheSA9IGJjZDJiaW4ocmVnc1szXSAmIDB4MDcpIC0gMTsNCj4+ ICvCoMKgwqAgdC0+dG1fbWRheSA9IGJjZDJiaW4ocmVnc1s0XSAmIDB4M2YpOw0KPj4gK8KgwqDC oCB0LT50bV9tb24gPSBiY2QyYmluKHJlZ3NbNV0gJiAweDFmKSAtIDE7DQo+PiArwqDCoMKgIHQt PnRtX3llYXIgPSBiY2QyYmluKHJlZ3NbNl0pICsgMTAwOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAo RklFTERfR0VUKE1BWDMxM1hYX01PTlRIX0NFTlRVUlksIHJlZ3NbNV0pKQ0KPj4gK8KgwqDCoMKg wqDCoMKgIHQtPnRtX3llYXIgKz0gMTAwOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+ ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBtYXgzMTN4eF9wcmVfc2V0X3RpbWUoc3RydWN0IG1h eDMxM3h4ICpydGMpDQo+PiArew0KPj4gK8KgwqDCoCBpZiAoIXJ0Yy0+Y2xraW4pDQo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+PiArDQo+PiArwqDCoMKgIC8qIENsa2luIG5lZWRzIHRv IGJlIGRpc2FibGVkIGJlZm9yZSBzZXR0aW5nIHRpbWUuICovDQo+PiArwqDCoMKgIHN3aXRjaCAo cnRjLT5pZCkgew0KPj4gK8KgwqDCoCBjYXNlIElEX01BWDMxMzQxOg0KPj4gK8KgwqDCoCBjYXNl IElEX01BWDMxMzQyOg0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZWdtYXBfY2xlYXJfYml0 cyhydGMtPnJlZ21hcCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIE1BWDMxMzQxXzQyX0NPTkZJRzFfUkVHLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgTUFYMzEzNDFfNDJfQ09ORklHMV9DTEtJTl9FTik7DQo+PiArwqDC oMKgIGRlZmF1bHQ6DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+PiArwqDCoMKgIH0N Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBtYXgzMTN4eF9wb3N0X3NldF90aW1lKHN0cnVj dCBtYXgzMTN4eCAqcnRjKQ0KPj4gK3sNCj4+ICvCoMKgwqAgaW50IHJldDsNCj4+ICsNCj4+ICvC oMKgwqAgc3dpdGNoIChydGMtPmlkKSB7DQo+PiArwqDCoMKgIGNhc2UgSURfTUFYMzEzNDE6DQo+ PiArwqDCoMKgIGNhc2UgSURfTUFYMzEzNDI6DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gcmVn bWFwX3NldF9iaXRzKHJ0Yy0+cmVnbWFwLCBNQVgzMTM0WF9DRkcyX1JFRywNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTUFYMzEzNFhfQ0ZHMl9TRVRfUlRD KTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBmc2xlZXAoMTAwMDApOw0K Pj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IHJlZ21hcF9jbGVhcl9iaXRzKHJ0Yy0+cmVn bWFwLCBNQVgzMTM0WF9DRkcyX1JFRywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBNQVgzMTM0WF9DRkcyX1NFVF9SVEMpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGlm IChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4g K8KgwqDCoMKgwqDCoMKgIGlmIChydGMtPmNsa2luKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0ID0gcmVnbWFwX3NldF9iaXRzKHJ0Yy0+cmVnbWFwLA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1BWDMxMzQxXzQyX0NPTkZJRzFf UkVHLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIE1BWDMxMzQxXzQyX0NPTkZJRzFfQ0xLSU5fRU4pOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDC oMKgIGJyZWFrOw0KPj4gK8KgwqDCoCBkZWZhdWx0Og0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biAwOw0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiByZXQ7DQo+PiArfQ0K Pj4gKw0KPj4gK3N0YXRpYyBpbnQgbWF4MzEzeHhfc2V0X3RpbWUoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgcnRjX3RpbWUgKnQpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgbWF4MzEzeHgg KnJ0YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPj4gK8KgwqDCoCB1OCByZWdzWzddOw0KPj4g K8KgwqDCoCBpbnQgcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCByZWdzWzBdID0gYmluMmJjZCh0LT50 bV9zZWMpOw0KPj4gK8KgwqDCoCByZWdzWzFdID0gYmluMmJjZCh0LT50bV9taW4pOw0KPj4gK8Kg wqDCoCByZWdzWzJdID0gYmluMmJjZCh0LT50bV9ob3VyKTsNCj4+ICvCoMKgwqAgcmVnc1szXSA9 IGJpbjJiY2QodC0+dG1fd2RheSArIDEpOw0KPj4gK8KgwqDCoCByZWdzWzRdID0gYmluMmJjZCh0 LT50bV9tZGF5KTsNCj4+ICvCoMKgwqAgcmVnc1s1XSA9IGJpbjJiY2QodC0+dG1fbW9uICsgMSk7 DQo+PiArwqDCoMKgIHJlZ3NbNl0gPSBiaW4yYmNkKHQtPnRtX3llYXIgJSAxMDApOw0KPj4gKw0K Pj4gK8KgwqDCoCBpZiAodC0+dG1feWVhciA+PSAyMDApDQo+PiArwqDCoMKgwqDCoMKgwqAgcmVn c1s1XSB8PSBGSUVMRF9QUkVQKE1BWDMxM1hYX01PTlRIX0NFTlRVUlksIDEpOw0KPj4gKw0KPj4g K8KgwqDCoCByZXQgPSBtYXgzMTN4eF9wcmVfc2V0X3RpbWUocnRjKTsNCj4+ICvCoMKgwqAgaWYg KHJldCkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCBy ZXQgPSByZWdtYXBfYnVsa193cml0ZShydGMtPnJlZ21hcCwgcnRjLT5jaGlwLT5zZWNfcmVnLCBy ZWdzLCA3KTsNCj4+ICvCoMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g cmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gbWF4MzEzeHhfcG9zdF9zZXRfdGltZShydGMp Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IG1heDMxM3h4X3JlYWRfYWxhcm0oc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgcnRjX3drYWxybSANCj4+ICp0KQ0KPj4gK3sNCj4+ICvCoMKg wqAgc3RydWN0IG1heDMxM3h4ICpydGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4+ICvCoMKg wqAgdW5zaWduZWQgaW50IHN0YXR1cywgaW50X2VuOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgcnRjX3Rp bWUgdGltZTsNCj4+ICvCoMKgwqAgdTggcmVnc1s2XTsNCj4+ICvCoMKgwqAgaW50IHJldDsNCj4+ ICsNCj4+ICvCoMKgwqAgcmV0ID0gcmVnbWFwX2J1bGtfcmVhZChydGMtPnJlZ21hcCwgcnRjLT5j aGlwLT5hbGFybTFfc2VjX3JlZywgDQo+PiByZWdzLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzaXplb2YocmVncykpOw0KPj4gK8KgwqDCoCBpZiAocmV0KQ0KPj4g K8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArDQo+PiArwqDCoMKgIHQtPnRpbWUudG1f c2VjID0gYmNkMmJpbihyZWdzWzBdICYgMHg3Zik7DQo+PiArwqDCoMKgIHQtPnRpbWUudG1fbWlu ID0gYmNkMmJpbihyZWdzWzFdICYgMHg3Zik7DQo+PiArwqDCoMKgIHQtPnRpbWUudG1faG91ciA9 IGJjZDJiaW4ocmVnc1syXSAmIDB4M2YpOw0KPj4gK8KgwqDCoCB0LT50aW1lLnRtX21kYXkgPSBi Y2QyYmluKHJlZ3NbM10gJiAweDNmKTsNCj4+ICvCoMKgwqAgdC0+dGltZS50bV9tb24gPSBiY2Qy YmluKHJlZ3NbNF0gJiAweDFmKSAtIDE7DQo+PiArwqDCoMKgIHQtPnRpbWUudG1feWVhciA9IGJj ZDJiaW4ocmVnc1s1XSkgKyAxMDA7DQo+PiArDQo+PiArwqDCoMKgIHJldCA9IG1heDMxM3h4X3Jl YWRfdGltZShkZXYsICZ0aW1lKTsNCj4+ICvCoMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKg wqDCoCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCBpZiAodGltZS50bV95ZWFyID49IDIw MCkNCj4+ICvCoMKgwqDCoMKgwqDCoCB0LT50aW1lLnRtX3llYXIgKz0gMTAwOw0KPj4gKw0KPj4g K8KgwqDCoCByZXQgPSByZWdtYXBfcmVhZChydGMtPnJlZ21hcCwgcnRjLT5jaGlwLT5pbnRfc3Rh dHVzX3JlZywgJnN0YXR1cyk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0ID0gcmVnbWFwX3JlYWQocnRjLT5y ZWdtYXAsIHJ0Yy0+Y2hpcC0+aW50X2VuX3JlZywgJmludF9lbik7DQo+PiArwqDCoMKgIGlmIChy ZXQpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgdC0+ ZW5hYmxlZCA9IEZJRUxEX0dFVChNQVgzMTNYWF9JTlRfQUxBUk0xLCBpbnRfZW4pOw0KPj4gK8Kg wqDCoCB0LT5wZW5kaW5nID0gRklFTERfR0VUKE1BWDMxM1hYX0lOVF9BTEFSTTEsIHN0YXR1cyk7 DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50 IG1heDMxM3h4X3NldF9hbGFybShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBydGNfd2thbHJt ICp0KQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IG1heDMxM3h4ICpydGMgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsNCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IHJlZzsNCj4+ICvCoMKgwqAgdTgg cmVnc1s2XTsNCj4+ICvCoMKgwqAgaW50IHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgcmVnc1swXSA9 IGJpbjJiY2QodC0+dGltZS50bV9zZWMpOw0KPj4gK8KgwqDCoCByZWdzWzFdID0gYmluMmJjZCh0 LT50aW1lLnRtX21pbik7DQo+PiArwqDCoMKgIHJlZ3NbMl0gPSBiaW4yYmNkKHQtPnRpbWUudG1f aG91cik7DQo+PiArwqDCoMKgIHJlZ3NbM10gPSBiaW4yYmNkKHQtPnRpbWUudG1fbWRheSk7DQo+ PiArwqDCoMKgIHJlZ3NbNF0gPSBiaW4yYmNkKHQtPnRpbWUudG1fbW9uICsgMSk7DQo+PiArwqDC oMKgIHJlZ3NbNV0gPSBiaW4yYmNkKHQtPnRpbWUudG1feWVhciAlIDEwMCk7DQo+PiArDQo+PiAr wqDCoMKgIHJldCA9IHJlZ21hcF9idWxrX3dyaXRlKHJ0Yy0+cmVnbWFwLCBydGMtPmNoaXAtPmFs YXJtMV9zZWNfcmVnLCANCj4+IHJlZ3MsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHNpemVvZihyZWdzKSk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgcmVnID0gRklFTERfUFJFUChNQVgzMTNY WF9JTlRfQUxBUk0xLCB0LT5lbmFibGVkKTsNCj4+ICvCoMKgwqAgcmV0ID0gcmVnbWFwX3VwZGF0 ZV9iaXRzKHJ0Yy0+cmVnbWFwLCBydGMtPmNoaXAtPmludF9lbl9yZWcsDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTUFYMzEzWFhfSU5UX0FMQVJNMSwgcmVnKTsNCj4+ICvC oMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4g K8KgwqDCoCAvKiBDbGVhciBzdGF0dXMgcmVnaXN0ZXIgKi8NCj4+ICvCoMKgwqAgcmV0dXJuIHJl Z21hcF9yZWFkKHJ0Yy0+cmVnbWFwLCBydGMtPmNoaXAtPmludF9zdGF0dXNfcmVnLCAmcmVnKTsN Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBtYXgzMTN4eF9hbGFybV9pcnFfZW5hYmxlKHN0 cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgDQo+PiBpbnQgZW5hYmxlZCkNCj4+ICt7DQo+PiAr wqDCoMKgIHN0cnVjdCBtYXgzMTN4eCAqcnRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+PiAr DQo+PiArwqDCoMKgIHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocnRjLT5yZWdtYXAsIHJ0Yy0+ Y2hpcC0+aW50X2VuX3JlZywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IE1BWDMxM1hYX0lOVF9BTEFSTTEsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBGSUVMRF9QUkVQKE1BWDMxM1hYX0lOVF9BTEFSTTEsIGVuYWJsZWQpKTsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBydGNfY2xhc3Nfb3BzIG1heDMxMzN4X3J0Y19v cHMgPSB7DQo+PiArwqDCoMKgIC5yZWFkX3RpbWXCoMKgwqAgPSBtYXgzMTN4eF9yZWFkX3RpbWUs DQo+PiArwqDCoMKgIC5zZXRfdGltZcKgwqDCoCA9IG1heDMxM3h4X3NldF90aW1lLA0KPj4gK8Kg wqDCoCAucmVhZF9hbGFybcKgwqDCoCA9IG1heDMxM3h4X3JlYWRfYWxhcm0sDQo+PiArwqDCoMKg IC5zZXRfYWxhcm3CoMKgwqAgPSBtYXgzMTN4eF9zZXRfYWxhcm0sDQo+PiArwqDCoMKgIC5hbGFy bV9pcnFfZW5hYmxlID0gbWF4MzEzeHhfYWxhcm1faXJxX2VuYWJsZSwNCj4+ICt9Ow0KPj4gKw0K Pj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBtYXgzMTN4eF9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lk KQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IG1heDMxM3h4wqDCoMKgICpydGMgPSBkZXZfaWQ7 DQo+PiArwqDCoMKgIHN0cnVjdCBtdXRleCAqbG9jayA9ICZydGMtPnJ0Yy0+b3BzX2xvY2s7DQo+ PiArwqDCoMKgIGludCBzdGF0LCByZXQ7DQo+PiArDQo+PiArwqDCoMKgIG11dGV4X2xvY2sobG9j ayk7DQo+PiArwqDCoMKgIHJldCA9IHJlZ21hcF9yZWFkKHJ0Yy0+cmVnbWFwLCBydGMtPmNoaXAt PmludF9zdGF0dXNfcmVnLCAmc3RhdCk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKg wqDCoMKgwqAgZ290byBvdXQ7DQo+PiArDQo+PiArwqDCoMKgIGlmIChGSUVMRF9HRVQoTUFYMzEz WFhfSU5UX0FMQVJNMSwgc3RhdCkpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSByZWdtYXBf dXBkYXRlX2JpdHMocnRjLT5yZWdtYXAsIHJ0Yy0+Y2hpcC0+aW50X2VuX3JlZywNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1BWDMxM1hYX0lOVF9BTEFSTTEs IDApOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIG91dDsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBydGNfdXBkYXRlX2lycShy dGMtPnJ0YywgMSwgUlRDX0FGIHwgUlRDX0lSUUYpOw0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiAr b3V0Og0KPj4gK8KgwqDCoCBtdXRleF91bmxvY2sobG9jayk7DQo+PiArDQo+PiArwqDCoMKgIHJl dHVybiBJUlFfSEFORExFRDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBtYXgzMTN4eF9u dm1lbV9yZWdfcmVhZCh2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICp2YWwsIHNpemVfdCBieXRlcykN Cj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBtYXgzMTN4eCAqcnRjID0gcHJpdjsNCj4+ICvCoMKg wqAgdW5zaWduZWQgaW50IHJlZyA9IHJ0Yy0+Y2hpcC0+cmFtX3JlZyArIG9mZnNldDsNCj4+ICsN Cj4+ICvCoMKgwqAgcmV0dXJuIHJlZ21hcF9idWxrX3JlYWQocnRjLT5yZWdtYXAsIHJlZywgdmFs LCBieXRlcyk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbWF4MzEzeHhfbnZtZW1fcmVn X3dyaXRlKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBvZmZzZXQsDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm9pZCAqdmFsLCBzaXplX3QgYnl0ZXMpDQo+PiAr ew0KPj4gK8KgwqDCoCBzdHJ1Y3QgbWF4MzEzeHggKnJ0YyA9IHByaXY7DQo+PiArwqDCoMKgIHVu c2lnbmVkIGludCByZWcgPSBydGMtPmNoaXAtPnJhbV9yZWcgKyBvZmZzZXQ7DQo+PiArDQo+PiAr wqDCoMKgIHJldHVybiByZWdtYXBfYnVsa193cml0ZShydGMtPnJlZ21hcCwgcmVnLCB2YWwsIGJ5 dGVzKTsNCj4+ICt9DQo+PiArDQo+PiArc3RydWN0IG52bWVtX2NvbmZpZyBtYXgzMTN4eF9udm1l bV9jZmcgPSB7DQo+PiArwqDCoMKgIC5yZWdfcmVhZCA9IG1heDMxM3h4X252bWVtX3JlZ19yZWFk LA0KPj4gK8KgwqDCoCAucmVnX3dyaXRlID0gbWF4MzEzeHhfbnZtZW1fcmVnX3dyaXRlLA0KPj4g K8KgwqDCoCAud29yZF9zaXplID0gOCwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyB1bnNpZ25l ZCBsb25nIG1heDMxM3h4X2Nsa291dF9yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWdu ZWQgbG9uZyBwYXJlbnRfcmF0ZSkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBtYXgzMTN4eCAq cnRjID0gY2xrX2h3X3RvX21heDMxM3h4KGh3KTsNCj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IGNs a291dF9jZmcgKmNsa291dCA9IHJ0Yy0+Y2hpcC0+Y2xrb3V0Ow0KPj4gK8KgwqDCoCB1bnNpZ25l ZCBpbnQgZnJlcV9tYXNrOw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgcmVnOw0KPj4gK8KgwqDC oCBpbnQgcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSByZWdtYXBfcmVhZChydGMtPnJlZ21h cCwgY2xrb3V0LT5yZWcsICZyZWcpOw0KPj4gK8KgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiAwOw0KPj4gKw0KPj4gK8KgwqDCoCBmcmVxX21hc2sgPSBfX3JvdW5kdXBf cG93X29mX3R3byhjbGtvdXQtPmZyZXFfc2l6ZSkgLSAxOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1 cm4gY2xrb3V0LT5mcmVxX2F2YWlsWyhyZWcgPj4gY2xrb3V0LT5mcmVxX3BvcykgJiBmcmVxX21h c2tdOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgbG9uZyBtYXgzMTN4eF9jbGtvdXRfcm91bmRf cmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgDQo+PiBsb25nIHJhdGUsDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyAq cHJhdGUpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgbWF4MzEzeHggKnJ0YyA9IGNsa19od190 b19tYXgzMTN4eChodyk7DQo+PiArwqDCoMKgIHN0cnVjdCBjbGtvdXRfY2ZnICpjbGtvdXQgPSBy dGMtPmNoaXAtPmNsa291dDsNCj4+ICvCoMKgwqAgaW50IGluZGV4Ow0KPj4gKw0KPj4gK8KgwqDC oCBpbmRleCA9IGZpbmRfY2xvc2VzdChyYXRlLCBjbGtvdXQtPmZyZXFfYXZhaWwsIGNsa291dC0+ ZnJlcV9zaXplKTsNCj4+ICvCoMKgwqAgcmV0dXJuIGNsa291dC0+ZnJlcV9hdmFpbFtpbmRleF07 DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbWF4MzEzeHhfY2xrb3V0X3NldF9yYXRlKHN0 cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIA0KPj4gcmF0ZSwNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQ0K Pj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IG1heDMxM3h4ICpydGMgPSBjbGtfaHdfdG9fbWF4MzEz eHgoaHcpOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgY2xrb3V0X2NmZyAqY2xrb3V0ID0gcnRjLT5jaGlw LT5jbGtvdXQ7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBmcmVxX21hc2s7DQo+PiArwqDCoMKg IGludCBpbmRleDsNCj4+ICsNCj4+ICvCoMKgwqAgaW5kZXggPSBmaW5kX2Nsb3Nlc3QocmF0ZSwg Y2xrb3V0LT5mcmVxX2F2YWlsLCBjbGtvdXQtPmZyZXFfc2l6ZSk7DQo+PiArwqDCoMKgIGZyZXFf bWFzayA9IF9fcm91bmR1cF9wb3dfb2ZfdHdvKGNsa291dC0+ZnJlcV9zaXplKSAtIDE7DQo+PiAr DQo+PiArwqDCoMKgIHJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMocnRjLT5yZWdtYXAsIGNsa291 dC0+cmVnLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJlcV9tYXNr IDw8IGNsa291dC0+ZnJlcV9wb3MsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpbmRleCA8PCBjbGtvdXQtPmZyZXFfcG9zKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGlj IGludCBtYXgzMTN4eF9jbGtvdXRfZW5hYmxlKHN0cnVjdCBjbGtfaHcgKmh3KQ0KPj4gK3sNCj4+ ICvCoMKgwqAgc3RydWN0IG1heDMxM3h4ICpydGMgPSBjbGtfaHdfdG9fbWF4MzEzeHgoaHcpOw0K Pj4gK8KgwqDCoCBzdHJ1Y3QgY2xrb3V0X2NmZyAqY2xrb3V0ID0gcnRjLT5jaGlwLT5jbGtvdXQ7 DQo+PiArDQo+PiArwqDCoMKgIGlmIChjbGtvdXQtPmVuX2ludmVydCkNCj4+ICvCoMKgwqDCoMKg wqDCoCByZXR1cm4gcmVnbWFwX2NsZWFyX2JpdHMocnRjLT5yZWdtYXAsIGNsa291dC0+cmVnLA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrb3V0LT5lbl9i aXQpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gcmVnbWFwX3NldF9iaXRzKHJ0Yy0+cmVnbWFw LCBjbGtvdXQtPnJlZywgY2xrb3V0LT5lbl9iaXQpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg dm9pZCBtYXgzMTN4eF9jbGtvdXRfZGlzYWJsZShzdHJ1Y3QgY2xrX2h3ICpodykNCj4+ICt7DQo+ PiArwqDCoMKgIHN0cnVjdCBtYXgzMTN4eCAqcnRjID0gY2xrX2h3X3RvX21heDMxM3h4KGh3KTsN Cj4+ICvCoMKgwqAgc3RydWN0IGNsa291dF9jZmcgKmNsa291dCA9IHJ0Yy0+Y2hpcC0+Y2xrb3V0 Ow0KPj4gKw0KPj4gK8KgwqDCoCBzd2l0Y2ggKHJ0Yy0+aWQpIHsNCj4+ICvCoMKgwqAgY2FzZSBJ RF9NQVgzMTMzMToNCj4+ICvCoMKgwqAgY2FzZSBJRF9NQVgzMTMzNDoNCj4+ICvCoMKgwqDCoMKg wqDCoCBpZiAocnRjLT5pcnEgPiAwKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZf ZXJyKHJ0Yy0+cnRjLT5kZXYucGFyZW50LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAiY2xrb3V0IGNhbm5vdCBiZSBkaXNhYmxlZCB3aGVuIElSUSBpcyByZXF1ZXN0ZWQiKTsN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsNCj4+ICvCoMKgwqDCoMKgwqDCoCB9 DQo+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+PiArwqDCoMKgIGRlZmF1bHQ6DQo+PiArwqDC oMKgwqDCoMKgwqAgYnJlYWs7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgaWYgKGNs a291dC0+ZW5faW52ZXJ0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJlZ21hcF9zZXRfYml0cyhydGMt PnJlZ21hcCwgY2xrb3V0LT5yZWcsIGNsa291dC0+ZW5fYml0KTsNCj4+ICvCoMKgwqAgZWxzZQ0K Pj4gK8KgwqDCoMKgwqDCoMKgIHJlZ21hcF9jbGVhcl9iaXRzKHJ0Yy0+cmVnbWFwLCBjbGtvdXQt PnJlZywgY2xrb3V0LT5lbl9iaXQpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IG1heDMx M3h4X2Nsa291dF9pc19lbmFibGVkKHN0cnVjdCBjbGtfaHcgKmh3KQ0KPj4gK3sNCj4+ICvCoMKg wqAgc3RydWN0IG1heDMxM3h4ICpydGMgPSBjbGtfaHdfdG9fbWF4MzEzeHgoaHcpOw0KPj4gK8Kg wqDCoCBzdHJ1Y3QgY2xrb3V0X2NmZyAqY2xrb3V0ID0gcnRjLT5jaGlwLT5jbGtvdXQ7DQo+PiAr wqDCoMKgIHVuc2lnbmVkIGludCByZWc7DQo+PiArwqDCoMKgIGludCByZXQ7DQo+PiArDQo+PiAr wqDCoMKgIHJldCA9IHJlZ21hcF9yZWFkKHJ0Yy0+cmVnbWFwLCBjbGtvdXQtPnJlZywgJnJlZyk7 DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ ICsNCj4+ICvCoMKgwqAgcmV0dXJuICEhKHJlZyAmIGNsa291dC0+ZW5fYml0KSBeIGNsa291dC0+ ZW5faW52ZXJ0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMg bWF4MzEzeHhfY2xrb3V0X29wcyA9IHsNCj4+ICvCoMKgwqAgLnJlY2FsY19yYXRlID0gbWF4MzEz eHhfY2xrb3V0X3JlY2FsY19yYXRlLA0KPj4gK8KgwqDCoCAucm91bmRfcmF0ZSA9IG1heDMxM3h4 X2Nsa291dF9yb3VuZF9yYXRlLA0KPj4gK8KgwqDCoCAuc2V0X3JhdGUgPSBtYXgzMTN4eF9jbGtv dXRfc2V0X3JhdGUsDQo+PiArwqDCoMKgIC5lbmFibGUgPSBtYXgzMTN4eF9jbGtvdXRfZW5hYmxl LA0KPj4gK8KgwqDCoCAuZGlzYWJsZSA9IG1heDMxM3h4X2Nsa291dF9kaXNhYmxlLA0KPj4gK8Kg wqDCoCAuaXNfZW5hYmxlZCA9IG1heDMxM3h4X2Nsa291dF9pc19lbmFibGVkLA0KPj4gK307DQo+ PiArDQo+PiArc3RydWN0IGNsa19pbml0X2RhdGEgbWF4MzEzeHhfY2xrX2luaXQgPSB7DQo+PiAr wqDCoMKgIC5uYW1lID0gIm1heDMxM3h4LWNsa291dCIsDQo+PiArwqDCoMKgIC5vcHMgPSAmbWF4 MzEzeHhfY2xrb3V0X29wcywNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbWF4MzEzeHhf cmVhZF90ZW1wKHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSANCj4+IGh3bW9uX3NlbnNvcl90eXBl cyB0eXBlLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGF0dHIs IGludCBjaGFubmVsLCBsb25nICp2YWwpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgbWF4MzEz eHggKnJ0YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPj4gK8KgwqDCoCB1OCByZWdbMl07DQo+ PiArwqDCoMKgIHMxNiB0ZW1wOw0KPj4gK8KgwqDCoCBpbnQgcmV0Ow0KPj4gKw0KPj4gK8KgwqDC oCBpZiAodHlwZSAhPSBod21vbl90ZW1wIHx8IGF0dHIgIT0gaHdtb25fdGVtcF9pbnB1dCkNCj4+ ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVPUE5PVFNVUFA7DQo+PiArDQo+PiArwqDCoMKgIHJl dCA9IHJlZ21hcF9idWxrX3JlYWQocnRjLT5yZWdtYXAsIHJ0Yy0+Y2hpcC0+dGVtcF9yZWcsIHJl ZywgMik7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJl dDsNCj4+ICsNCj4+ICvCoMKgwqAgdGVtcCA9IGdldF91bmFsaWduZWRfYmUxNihyZWcpOw0KPj4g Kw0KPj4gK8KgwqDCoCAqdmFsID0gKHRlbXAgLyA2NCkgKiAyNTA7DQo+PiArDQo+PiArwqDCoMKg IHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdW1vZGVfdCBtYXgzMTN4eF9pc192 aXNpYmxlKGNvbnN0IHZvaWQgKmRhdGEsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGVudW0gaHdtb25fc2Vuc29yX3R5cGVzIHR5cGUsDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBhdHRyLCBpbnQgY2hhbm5lbCkNCj4+ICt7DQo+ PiArwqDCoMKgIGlmICh0eXBlID09IGh3bW9uX3RlbXAgJiYgYXR0ciA9PSBod21vbl90ZW1wX2lu cHV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwNDQ0Ow0KPj4gKw0KPj4gK8KgwqDCoCBy ZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGFu bmVsX2luZm8gKm1heDMxM3h4X2luZm9bXSA9IHsNCj4+ICvCoMKgwqAgSFdNT05fQ0hBTk5FTF9J TkZPKHRlbXAsIEhXTU9OX1RfSU5QVVQpLA0KPj4gK8KgwqDCoCBOVUxMDQo+PiArfTsNCj4+ICsN Cj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGh3bW9uX29wcyBtYXgzMTN4eF9od21vbl9vcHMgPSB7 DQo+PiArwqDCoMKgIC5pc192aXNpYmxlID0gbWF4MzEzeHhfaXNfdmlzaWJsZSwNCj4+ICvCoMKg wqAgLnJlYWQgPSBtYXgzMTN4eF9yZWFkX3RlbXAsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGh3bW9uX2NoaXBfaW5mbyBtYXgzMTN4eF9jaGlwX2luZm8gPSB7DQo+PiAr wqDCoMKgIC5vcHMgPSAmbWF4MzEzeHhfaHdtb25fb3BzLA0KPj4gK8KgwqDCoCAuaW5mbyA9IG1h eDMxM3h4X2luZm8sDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgaW50IG1heDMxM3h4X2luaXQo c3RydWN0IG1heDMxM3h4ICpydGMpDQo+PiArew0KPj4gK8KgwqDCoCBpbnQgcmV0Ow0KPj4gKw0K Pj4gK8KgwqDCoCBzd2l0Y2ggKHJ0Yy0+aWQpIHsNCj4+ICvCoMKgwqAgY2FzZSBJRF9NQVgzMTM0 MToNCj4+ICvCoMKgwqAgY2FzZSBJRF9NQVgzMTM0MjoNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXQg PSByZWdtYXBfY2xlYXJfYml0cyhydGMtPnJlZ21hcCwgTUFYMzEzNDFfNDJfQ09ORklHMV9SRUcs DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTUFYMzEzNDFfNDJf Q09ORklHMV9PU0NfRElTQUJMRSk7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJlZ21hcF9zZXRfYml0cyhydGMtPnJlZ21hcCwgTUFYMzEzNDFfNDJfQ09ORklH MV9SRUcsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg TUFYMzEzNDFfNDJfQ09ORklHMV9TV1JTVCk7DQo+PiArwqDCoMKgIGRlZmF1bHQ6DQo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+PiArwqDCoMKgIH0NCj4+ICt9DQo+PiArDQo+PiArc3Rh dGljIGludCBtYXgzMTN4eF9jbGtvdXRfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4g K3sNCj4+ICvCoMKgwqAgc3RydWN0IG1heDMxM3h4ICpydGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsNCj4+ICvCoMKgwqAgaW50IHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKCFkZXZpY2VfcHJv cGVydHlfcHJlc2VudChkZXYsICIjY2xvY2stY2VsbHMiKSkNCj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gMDsNCj4+ICsNCj4+ICvCoMKgwqAgbWF4MzEzeHhfY2xrX2luaXQubmFtZSA9IHJ0Yy0+ Y2hpcC0+Y2xrb3V0X25hbWU7DQo+PiArwqDCoMKgIGRldmljZV9wcm9wZXJ0eV9yZWFkX3N0cmlu ZyhkZXYsICJjbG9jay1vdXRwdXQtbmFtZXMiLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICZtYXgzMTN4eF9jbGtfaW5pdC5uYW1lKTsNCj4+ICvCoMKgwqAgcnRj LT5jbGtvdXQuaW5pdCA9ICZtYXgzMTN4eF9jbGtfaW5pdDsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0 ID0gZGV2bV9jbGtfaHdfcmVnaXN0ZXIoZGV2LCAmcnRjLT5jbGtvdXQpOw0KPj4gK8KgwqDCoCBp ZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0 LCAiY2Fubm90IHJlZ2lzdGVyIGNsb2NrXG4iKTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIGRl dm1fb2ZfY2xrX2FkZF9od19wcm92aWRlcihkZXYsIG9mX2Nsa19od19zaW1wbGVfZ2V0LA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZydGMtPmNsa291 dCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbWF4MzEzeHhfdHJpY2tsZV9jaGFyZ2Vy X3NldHVwKHN0cnVjdCBkZXZpY2UgKmRldikNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBtYXgz MTN4eCAqcnRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+PiArwqDCoMKgIGJvb2wgdHJpY2ts ZV9kaW9kZV9lbjsNCj4+ICvCoMKgwqAgdTMyIGNoYXJnZXJfZW4gPSAwOw0KPj4gK8KgwqDCoCBp bnQgaW5kZXgsIHJlZzsNCj4+ICvCoMKgwqAgdTMyIG9obXMgPSAwOw0KPj4gK8KgwqDCoCBpbnQg cmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCBkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoZGV2LCAiYXV4 LXZvbHRhZ2UtY2hhcmdlYWJsZSIsIA0KPj4gJmNoYXJnZXJfZW4pOw0KPj4gK8KgwqDCoCBzd2l0 Y2ggKGNoYXJnZXJfZW4pIHsNCj4+ICvCoMKgwqAgY2FzZSAwOg0KPj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybiAwOw0KPj4gK8KgwqDCoCBjYXNlIDE6DQo+PiArwqDCoMKgwqDCoMKgwqAgdHJpY2ts ZV9kaW9kZV9lbiA9IDA7DQo+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+PiArwqDCoMKgIGNh c2UgMjoNCj4+ICvCoMKgwqDCoMKgwqDCoCB0cmlja2xlX2Rpb2RlX2VuID0gMTsNCj4+ICvCoMKg wqDCoMKgwqDCoCBicmVhazsNCj4+ICvCoMKgwqAgZGVmYXVsdDoNCj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gLUVJTlZBTDsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCBkZXZpY2Vf cHJvcGVydHlfcmVhZF91MzIoZGV2LCAidHJpY2tsZS1yZXNpc3Rvci1vaG1zIiwgJm9obXMpOw0K Pj4gKw0KPj4gK8KgwqDCoCBpZiAoIXJ0Yy0+Y2hpcC0+dHJpY2tsZV9yZWcpDQo+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIDA7DQo+PiArDQo+PiArwqDCoMKgIGluZGV4ID0gZmluZF9jbG9zZXN0 KG9obXMsIG1heDMxM3h4X3RyaWNrbGVfb2htcywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBBUlJBWV9TSVpFKG1heDMxM3h4X3RyaWNrbGVfb2htcykpICsgMTsNCj4+ICsN Cj4+ICvCoMKgwqAgc3dpdGNoIChydGMtPmlkKSB7DQo+PiArwqDCoMKgIGNhc2UgSURfTUFYMzEz Mjk6DQo+PiArwqDCoMKgwqDCoMKgwqAgcmVnID0gRklFTERfUFJFUChNQVgzMTMyOV9UUklDS0xF X0VOQUJMRV9CSVQsIDEpIHwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9Q UkVQKE1BWDMxMzI5XzQzX1RSSUNLTEVfUkVTX01BU0ssIGluZGV4KSB8DQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChNQVgzMTMyOV80M19UUklDS0xFX0RJT0RFX0VO LCANCj4+IHRyaWNrbGVfZGlvZGVfZW4pOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4g K8KgwqDCoCBjYXNlIElEX01BWDMxMzMxOg0KPj4gK8KgwqDCoCBjYXNlIElEX01BWDMxMzM0Og0K Pj4gK8KgwqDCoMKgwqDCoMKgIHJlZyA9IEZJRUxEX1BSRVAoTUFYMzEzM1hfVFJJQ0tMRV9FTkFC TEVfQklULCAxKSB8DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChN QVgzMTMzWF9UUklDS0xFX1JFU19NQVNLLCBpbmRleCkgfA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEZJRUxEX1BSRVAoTUFYMzEzM1hfVFJJQ0tMRV9ESU9ERV9FTiwgdHJpY2tsZV9k aW9kZV9lbik7DQo+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+PiArwqDCoMKgIGNhc2UgSURf TUFYMzEzNDE6DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGluZGV4ID09IDEpDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpbmRleCA9IDA7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgcmVn ID0gRklFTERfUFJFUChNQVgzMTM0MV9UUklDS0xFX0VOQUJMRV9CSVQsIDEpIHwNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKE1BWDMxMzQxX1RSSUNLTEVfUkVTX01B U0ssIGluZGV4KSB8DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChN QVgzMTM0MV9UUklDS0xFX0RJT0RFX0VOLCB0cmlja2xlX2Rpb2RlX2VuKTsNCj4+ICsNCj4+ICvC oMKgwqDCoMKgwqDCoCByZXQgPSByZWdtYXBfc2V0X2JpdHMocnRjLT5yZWdtYXAsIE1BWDMxMzQx X1BPV0VSX01HTVRfUkVHLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBNQVgzMTM0MV9QT1dFUl9NR01UX1RSSUNLTEVfQklUKTsNCj4+ICvCoMKgwqDCoMKg wqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+ICvCoMKgwqAgY2FzZSBJRF9NQVgzMTM0 MzoNCj4+ICvCoMKgwqDCoMKgwqDCoCByZWcgPSBGSUVMRF9QUkVQKE1BWDMxMzI5XzQzX1RSSUNL TEVfUkVTX01BU0ssIGluZGV4KSB8DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklF TERfUFJFUChNQVgzMTMyOV80M19UUklDS0xFX0RJT0RFX0VOLCANCj4+IHRyaWNrbGVfZGlvZGVf ZW4pIHwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKE1BWDMxMzQz X1RSSUNLTEVfRU5BQkxFX01BU0ssDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgTUFYMzEzNDNfVFJJQ0tMRV9FTkFCTEVfQ09ERSk7DQo+PiArwqDCoMKgwqDCoMKgwqAgYnJl YWs7DQo+PiArwqDCoMKgIGRlZmF1bHQ6DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FT1BO T1RTVVBQOw0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiByZWdtYXBfd3Jp dGUocnRjLT5yZWdtYXAsIHJ0Yy0+Y2hpcC0+dHJpY2tsZV9yZWcsIHJlZyk7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBpbnQgbWF4MzEzeHhfZmluZF9jbGtpbl9mcmVxX2luZGV4KHN0cnVjdCBj bGsgKmNsaykNCj4+ICt7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcgcmF0ZSA9IGNsa19nZXRf cmF0ZShjbGspOw0KPj4gK8KgwqDCoCBpbnQgZnJlcTsNCj4+ICvCoMKgwqAgaW50IGk7DQo+PiAr DQo+PiArwqDCoMKgIGkgPSBmaW5kX2Nsb3Nlc3QocmF0ZSwgbWF4MzEzeHhfY2xraW5fZnJlcSwN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVJSQVlfU0laRShtYXgzMTN4eF9jbGtpbl9m cmVxKSk7DQo+PiArwqDCoMKgIGlmIChtYXgzMTN4eF9jbGtpbl9mcmVxW2ldID09IHJhdGUpDQo+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGk7DQo+PiArDQo+PiArwqDCoMKgIGZvciAoaSA9IEFS UkFZX1NJWkUobWF4MzEzeHhfY2xraW5fZnJlcSkgLSAxOyBpID49IDA7IGktLSkgew0KPj4gK8Kg wqDCoMKgwqDCoMKgIGZyZXEgPSBtYXgzMTN4eF9jbGtpbl9mcmVxW2ldOw0KPj4gK8KgwqDCoMKg wqDCoMKgIGlmIChmcmVxID09IGNsa19yb3VuZF9yYXRlKGNsaywgZnJlcSkpDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gaTsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDC oCAvKiBzdXBwbGllZCBjbG9jayBjYW5ub3QgcHJvZHVjZSBvbmUgb2YgZGVzaXJlZCBmcmVxdWVu Y3kgcmF0ZSAqLw0KPj4gK8KgwqDCoCByZXR1cm4gLUVOT0RFVjsNCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIGludCBtYXgzMTN4eF9jbGtpbl9pbml0KHN0cnVjdCBkZXZpY2UgKmRldikNCj4+ICt7 DQo+PiArwqDCoMKgIHN0cnVjdCBtYXgzMTN4eCAqcnRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7 DQo+PiArwqDCoMKgIGludCByYXRlOw0KPj4gK8KgwqDCoCBpbnQgcmV0Ow0KPj4gKw0KPj4gK8Kg wqDCoCBydGMtPmNsa2luID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoZGV2LCBOVUxMKTsNCj4+ICvC oMKgwqAgaWYgKElTX0VSUihydGMtPmNsa2luKSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChQ VFJfRVJSKHJ0Yy0+Y2xraW4pID09IC1FTk9FTlQpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBydGMtPmNsa2luID0gTlVMTDsNCj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocnRjLT5j bGtpbiksDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJlcnJvciB3aGlsZSBjbGtpbiBzZXR1cFxuIik7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ ICvCoMKgwqAgaWYgKCFydGMtPmNsa2luKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChy dGMtPmlkKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSBJRF9NQVgzMTMyOToNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZWdtYXBfY2xlYXJfYml0cyhydGMtPnJlZ21hcCwN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTUFY MzEzMjlfQ09ORklHMl9SRUcsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIE1BWDMxMzI5X0NPTkZJRzJfQ0xLSU5fRU4pOw0KPj4gK8KgwqDCoMKg wqDCoMKgIGNhc2UgSURfTUFYMzEzNDE6DQo+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSBJRF9NQVgz MTM0MjoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZWdtYXBfY2xlYXJfYml0 cyhydGMtPnJlZ21hcCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgTUFYMzEzNDFfNDJfQ09ORklHMV9SRUcsDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1BWDMxMzQxXzQyX0NPTkZJRzFfQ0xL SU5fRU4pOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGRlZmF1bHQ6DQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gMDsNCj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+PiArwqDCoMKgIH0NCj4+ ICsNCj4+ICvCoMKgwqAgcmF0ZSA9IG1heDMxM3h4X2ZpbmRfY2xraW5fZnJlcV9pbmRleChydGMt PmNsa2luKTsNCj4+ICvCoMKgwqAgaWYgKHJhdGUgPCAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmF0ZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICJjbGtpbiBjYW5ub3QgcHJvZHVjZSByZXF1aXJlZCBmcmVxdWVu Y3lcbiIpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBjbGtfc2V0X3JhdGUocnRjLT5jbGtpbiwg bWF4MzEzeHhfY2xraW5fZnJlcVtyYXRlXSk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgc3dpdGNoIChydGMtPmlk KSB7DQo+PiArwqDCoMKgIGNhc2UgSURfTUFYMzEzMjk6DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0 ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHJ0Yy0+cmVnbWFwLCBNQVgzMTMyOV9DT05GSUcyX1JFRywN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1BWDMxMzI5X0NP TkZJRzJfQ0xLSU5fRlJFUSwgcmF0ZSk7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArDQo+PiArwqDCoMKgwqDC oMKgwqAgcmV0dXJuIHJlZ21hcF9zZXRfYml0cyhydGMtPnJlZ21hcCwgTUFYMzEzMjlfQ09ORklH Ml9SRUcsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg TUFYMzEzMjlfQ09ORklHMl9DTEtJTl9FTik7DQo+PiArwqDCoMKgIGNhc2UgSURfTUFYMzEzNDE6 DQo+PiArwqDCoMKgIGNhc2UgSURfTUFYMzEzNDI6DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0g cmVnbWFwX3VwZGF0ZV9iaXRzKHJ0Yy0+cmVnbWFwLCBNQVgzMTM0MV80Ml9DT05GSUcxX1JFRywN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1BWDMxMzQxXzQy X0NPTkZJRzFfQ0xLSU5fRlJFUSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEZJRUxEX1BSRVAoTUFYMzEzNDFfNDJfQ09ORklHMV9DTEtJTl9GUkVRLCByYXRl KSk7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiByZXQ7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJlZ21hcF9z ZXRfYml0cyhydGMtPnJlZ21hcCwgTUFYMzEzNDFfNDJfQ09ORklHMV9SRUcsDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTUFYMzEzNDFfNDJfQ09ORklH MV9DTEtJTl9FTik7DQo+PiArwqDCoMKgIGRlZmF1bHQ6DQo+PiArwqDCoMKgwqDCoMKgwqAgcnRj LT5jbGtpbiA9IE5VTEw7DQo+PiArwqDCoMKgwqDCoMKgwqAgZGV2X3dhcm4oZGV2LCAiZGV2aWNl IGRvZXMgbm90IGhhdmUgY2xvY2sgaW5wdXRcbiIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biAwOw0KPj4gK8KgwqDCoCB9DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbWF4MzEzeHhf aXJxX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpkZXZuYW1lKQ0KPj4gK3sN Cj4+ICvCoMKgwqAgc3RydWN0IG1heDMxM3h4ICpydGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsN Cj4+ICvCoMKgwqAgaW50IHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgc3dpdGNoIChydGMtPmlkKSB7 DQo+PiArwqDCoMKgIGNhc2UgSURfTUFYMzEzMjg6DQo+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7 DQo+PiArwqDCoMKgIGNhc2UgSURfTUFYMzEzMzE6DQo+PiArwqDCoMKgIGNhc2UgSURfTUFYMzEz MzQ6DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHJ0Yy0+Y2xrb3V0LmNsaykgew0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLyoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBpbnRl cnJ1cHQgbXV4aW5nIGRlcGVuZHMgb24gY2xrb3V0IHNvIGVuYWJsZSBjbGtvdXQNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBpZiBjb25maWd1cmVkIGJlZm9yZSByZXF1ZXN0aW5nIGlu dGVycnVwdA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHJ0Yy0+Y2xrb3V0LmNsayk7DQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiY2Fubm90 IGVuYWJsZSBjbGtvdXRcbiIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+ICvCoMKgwqDCoMKg wqDCoCBicmVhazsNCj4+ICvCoMKgwqAgZGVmYXVsdDoNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo cnRjLT5jbGtpbikgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJ0Yy0+Y2xrb3V0 LmNsayAmJiBydGMtPmlycSA+IDApDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVPUE5PVFNVUFAsDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImlycSBub3QgcG9z c2libGUgd2hlbiBib3RoIGNsa2luIGFuZCANCj4+IGNsa291dCBhcmUgY29uZmlndXJlZFxuIik7 DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocnRjLT5pcnEgPD0gMCkNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+PiArDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAvKiBjbGtvdXQgbmVlZHMgdG8gYmUgZGlzYWJsZWQgZm9yIGludGVy cnVwdCAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJ0Yy0+Y2hpcC0+Y2xrb3V0 LT5lbl9pbnZlcnQpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IHJl Z21hcF9zZXRfYml0cyhydGMtPnJlZ21hcCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ0Yy0+Y2hpcC0+Y2xrb3V0LT5yZWcs DQo+PiArIHJ0Yy0+Y2hpcC0+Y2xrb3V0LT5lbl9iaXQpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZWxzZQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSByZWdt YXBfY2xlYXJfYml0cyhydGMtPnJlZ21hcCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnRjLT5jaGlwLT5jbGtvdXQtPnJlZywNCj4+ ICsgcnRjLT5jaGlwLT5jbGtvdXQtPmVuX2JpdCk7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcmV0Ow0KPj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsN Cj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCBpZiAocnRjLT5pcnEgPiAwKSB7DQo+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBydGMt PmlycSwgTlVMTCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgJm1heDMxM3h4X2lycSwgSVJRRl9PTkVTSE9ULA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZuYW1lLCBydGMpOw0KPj4gK8Kg wqDCoCB9IGVsc2UgaWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCAid2FrZXVwLXNv dXJjZSIpKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgY2xlYXJfYml0KFJUQ19GRUFUVVJFX1VQREFU RV9JTlRFUlJVUFQsIHJ0Yy0+cnRjLT5mZWF0dXJlcyk7DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIGRldmljZV9pbml0X3dha2V1cChkZXYsIHRydWUpOw0KPj4gK8KgwqDCoCB9DQo+PiArDQo+ PiArwqDCoMKgIGNsZWFyX2JpdChSVENfRkVBVFVSRV9BTEFSTSwgcnRjLT5ydGMtPmZlYXR1cmVz KTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBp bnQgbWF4MzEzeHhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpDQo+PiAr ew0KPj4gK8KgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7DQo+PiArwqDC oMKgIHN0cnVjdCBtYXgzMTN4eCAqbWF4MzEzeHg7DQo+PiArwqDCoMKgIHN0cnVjdCBkZXZpY2Ug Kmh3bW9uOw0KPj4gK8KgwqDCoCBjb25zdCB2b2lkICptYXRjaDsNCj4+ICvCoMKgwqAgaW50IHJl dDsNCj4+ICsNCj4+ICvCoMKgwqAgbWF4MzEzeHggPSBkZXZtX2t6YWxsb2MoJmNsaWVudC0+ZGV2 LCBzaXplb2YoKm1heDMxM3h4KSwgDQo+PiBHRlBfS0VSTkVMKTsNCj4+ICvCoMKgwqAgaWYgKCFt YXgzMTN4eCkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsNCj4+ICsNCj4+ICvC oMKgwqAgZGV2X3NldF9kcnZkYXRhKCZjbGllbnQtPmRldiwgbWF4MzEzeHgpOw0KPj4gKw0KPj4g K8KgwqDCoCBtYXgzMTN4eC0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAm cmVnbWFwX2NvbmZpZyk7DQo+PiArwqDCoMKgIGlmIChJU19FUlIobWF4MzEzeHgtPnJlZ21hcCkp IHsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIo bWF4MzEzeHgtPnJlZ21hcCksDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAicmVnbWFwIGluaXQgZmFpbGVkXG4iKTsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4g K8KgwqDCoCBpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBtYXgzMTN4eCk7DQo+PiArDQo+PiAr wqDCoMKgIG1hdGNoID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7DQo+PiArwqDCoMKgIGlm IChtYXRjaCkNCj4+ICvCoMKgwqDCoMKgwqDCoCBtYXgzMTN4eC0+Y2hpcCA9IG1hdGNoOw0KPj4g K8KgwqDCoCBlbHNlIGlmIChpZCkNCj4+ICvCoMKgwqDCoMKgwqDCoCBtYXgzMTN4eC0+Y2hpcCA9 IChzdHJ1Y3QgY2hpcF9kZXNjICopaWQtPmRyaXZlcl9kYXRhOw0KPj4gK8KgwqDCoCBlbHNlDQo+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7DQo+PiArDQo+PiArwqDCoMKgIG1heDMx M3h4LT5pZCA9IG1heDMxM3h4LT5jaGlwIC0gY2hpcDsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0ID0g bWF4MzEzeHhfaW5pdChtYXgzMTN4eCk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgbWF4MzEzeHgtPnJ0YyA9IGRl dm1fcnRjX2FsbG9jYXRlX2RldmljZShkZXYpOw0KPj4gK8KgwqDCoCBpZiAoSVNfRVJSKG1heDMx M3h4LT5ydGMpKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBQVFJfRVJSKG1heDMxM3h4LT5y dGMpOw0KPj4gKw0KPj4gK8KgwqDCoCBtYXgzMTN4eC0+cnRjLT5vcHMgPSAmbWF4MzEzM3hfcnRj X29wczsNCj4+ICvCoMKgwqAgbWF4MzEzeHgtPnJ0Yy0+cmFuZ2VfbWluID0gUlRDX1RJTUVTVEFN UF9CRUdJTl8yMDAwOw0KPj4gK8KgwqDCoCBtYXgzMTN4eC0+cnRjLT5yYW5nZV9tYXggPSBSVENf VElNRVNUQU1QX0VORF8yMTk5Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBkZXZtX3J0Y19yZWdp c3Rlcl9kZXZpY2UobWF4MzEzeHgtPnJ0Yyk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgbWF4MzEzeHgtPmlycSA9 IGNsaWVudC0+aXJxOw0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBtYXgzMTN4eF9jbGtvdXRfcmVn aXN0ZXIoZGV2KTsNCj4+ICvCoMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBtYXgzMTN4eF9jbGtpbl9pbml0KGRldik7 DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ ICsNCj4+ICvCoMKgwqAgLyogSVJRIHdpcmluZyBkZXBlbmRzIG9uIHRoZSBjbG9jayBjb25maWd1 cmF0aW9uIHNvIHBhcnNlIHRoZW0gDQo+PiBmaXJzdCAqLw0KPj4gK8KgwqDCoCByZXQgPSBtYXgz MTN4eF9pcnFfaW5pdChkZXYsIGNsaWVudC0+bmFtZSk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKG1heDMx M3h4LT5jaGlwLT5yYW1fc2l6ZSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIG1heDMxM3h4X252bWVt X2NmZy5zaXplID0gbWF4MzEzeHgtPmNoaXAtPnJhbV9zaXplOw0KPj4gK8KgwqDCoMKgwqDCoMKg IG1heDMxM3h4X252bWVtX2NmZy5wcml2ID0gbWF4MzEzeHg7DQo+PiArDQo+PiArwqDCoMKgwqDC oMKgwqAgcmV0ID0gZGV2bV9ydGNfbnZtZW1fcmVnaXN0ZXIobWF4MzEzeHgtPnJ0YywgDQo+PiAm bWF4MzEzeHhfbnZtZW1fY2ZnKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X3dhcm4oZGV2LCAiY2Fubm90IHJlZ2lzdGVyIHJ0YyBu dm1lbVxuIik7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgaWYgKG1heDMxM3h4LT5j aGlwLT50ZW1wX3JlZykgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGh3bW9uID0gZGV2bV9od21vbl9k ZXZpY2VfcmVnaXN0ZXJfd2l0aF9pbmZvKGRldiwgY2xpZW50LT5uYW1lLA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bWF4MzEzeHgsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbWF4MzEzeHhfY2hpcF9pbmZvLA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg TlVMTCk7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKElTX0VSUihod21vbikpDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkZXZfd2FybihkZXYsICJjYW5ub3QgcmVnaXN0ZXIgaHdtb24gZGV2 aWNlOiAlbGlcbiIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUFRSX0VS Uihod21vbikpOw0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiBtYXgzMTN4 eF90cmlja2xlX2NoYXJnZXJfc2V0dXAoZGV2KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWF4MzEzeHhfb2ZfaWRbXSA9IHsNCj4+ICvCoMKgwqAg eyAuY29tcGF0aWJsZSA9ICJhZGksbWF4MzEzMjgiLCAuZGF0YSA9ICZjaGlwW0lEX01BWDMxMzI4 XSB9LA0KPj4gK8KgwqDCoCB7IC5jb21wYXRpYmxlID0gImFkaSxtYXgzMTMyOSIsIC5kYXRhID0g JmNoaXBbSURfTUFYMzEzMjldIH0sDQo+PiArwqDCoMKgIHsgLmNvbXBhdGlibGUgPSAiYWRpLG1h eDMxMzMxIiwgLmRhdGEgPSAmY2hpcFtJRF9NQVgzMTMzMV0gfSwNCj4+ICvCoMKgwqAgeyAuY29t cGF0aWJsZSA9ICJhZGksbWF4MzEzMzQiLCAuZGF0YSA9ICZjaGlwW0lEX01BWDMxMzM0XSB9LA0K Pj4gK8KgwqDCoCB7IC5jb21wYXRpYmxlID0gImFkaSxtYXgzMTM0MSIsIC5kYXRhID0gJmNoaXBb SURfTUFYMzEzNDFdIH0sDQo+PiArwqDCoMKgIHsgLmNvbXBhdGlibGUgPSAiYWRpLG1heDMxMzQy IiwgLmRhdGEgPSAmY2hpcFtJRF9NQVgzMTM0Ml0gfSwNCj4+ICvCoMKgwqAgeyAuY29tcGF0aWJs ZSA9ICJhZGksbWF4MzEzNDMiLCAuZGF0YSA9ICZjaGlwW0lEX01BWDMxMzQzXSB9LA0KPj4gK8Kg wqDCoCB7IH0NCj4+ICt9Ow0KPj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1heDMxM3h4X29m X2lkKTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbWF4MzEz eHhfaWRbXSA9IHsNCj4+ICvCoMKgwqAgeyAibWF4MzEzMjgiLCAoa2VybmVsX3Vsb25nX3QpJmNo aXBbSURfTUFYMzEzMjhdIH0sDQo+PiArwqDCoMKgIHsgIm1heDMxMzI5IiwgKGtlcm5lbF91bG9u Z190KSZjaGlwW0lEX01BWDMxMzI5XSB9LA0KPj4gK8KgwqDCoCB7ICJtYXgzMTMzMSIsIChrZXJu ZWxfdWxvbmdfdCkmY2hpcFtJRF9NQVgzMTMzMV0gfSwNCj4+ICvCoMKgwqAgeyAibWF4MzEzMzQi LCAoa2VybmVsX3Vsb25nX3QpJmNoaXBbSURfTUFYMzEzMzRdIH0sDQo+PiArwqDCoMKgIHsgIm1h eDMxMzQxIiwgKGtlcm5lbF91bG9uZ190KSZjaGlwW0lEX01BWDMxMzQxXSB9LA0KPj4gK8KgwqDC oCB7ICJtYXgzMTM0MiIsIChrZXJuZWxfdWxvbmdfdCkmY2hpcFtJRF9NQVgzMTM0Ml0gfSwNCj4+ ICvCoMKgwqAgeyAibWF4MzEzNDMiLCAoa2VybmVsX3Vsb25nX3QpJmNoaXBbSURfTUFYMzEzNDNd IH0sDQo+PiArwqDCoMKgIHsgfQ0KPj4gK307DQo+PiArTU9EVUxFX0RFVklDRV9UQUJMRShpMmMs IG1heDMxM3h4X2lkKTsNCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4MzEz eHhfZHJpdmVyID0gew0KPj4gK8KgwqDCoCAuZHJpdmVyID0gew0KPj4gK8KgwqDCoMKgwqDCoMKg IC5uYW1lwqDCoMKgID0gInJ0Yy1tYXgzMTN4eCIsDQo+PiArwqDCoMKgwqDCoMKgwqAgLm9mX21h dGNoX3RhYmxlID0gbWF4MzEzeHhfb2ZfaWQsDQo+PiArwqDCoMKgIH0sDQo+PiArwqDCoMKgIC5w cm9iZcKgwqDCoMKgwqDCoMKgID0gbWF4MzEzeHhfcHJvYmUsDQo+PiArwqDCoMKgIC5pZF90YWJs ZcKgwqDCoCA9IG1heDMxM3h4X2lkLA0KPj4gK307DQo+PiArbW9kdWxlX2kyY19kcml2ZXIobWF4 MzEzeHhfZHJpdmVyKTsNCj4+ICsNCj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFuYWxvZyBEZXZp Y2VzIE1BWDMxM1hYIFJUQ3MiKTsNCj4+ICtNT0RVTEVfQVVUSE9SKCJaZXluZXAgQXJzbGFuYmVu emVyIDxaZXluZXAuQXJzbGFuYmVuemVyQGFuYWxvZy5jb20+Iik7DQo+PiArTU9EVUxFX0FVVEhP UigiSWJyYWhpbSBUaWxraSA8SWJyYWhpbS5UaWxraUBhbmFsb2cuY29tPiIpOw0KPj4gK01PRFVM RV9TT0ZUREVQKCJwcmU6IHJlZ21hcC1pMmMiKTsNCj4+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7 DQo+PiArTU9EVUxFX1ZFUlNJT04oIjEuMCIpOw==