Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp1043420iob; Fri, 13 May 2022 20:50:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwk7De2zOnJgOIcdht++Cl1ttJW2wSx94VHy/MIATyI7Nboo0h0NJWwvDUtTLcTqxkCZhgE X-Received: by 2002:adf:d1e9:0:b0:20c:6c76:14d5 with SMTP id g9-20020adfd1e9000000b0020c6c7614d5mr6396185wrd.375.1652500215053; Fri, 13 May 2022 20:50:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652500215; cv=none; d=google.com; s=arc-20160816; b=YtP1yyz7WmXxbO5BteKxLLjx97UW0KtLQuedwBADoBzvJePrksEQglGMwPtohMT4kX 3TnqR/mTFfzhYiIqBuJlTNfYRuNsCB4Jk6KGc+LShmYEIRWRRU1GrCihJVn3TujnkJL3 J69Z7Thjrk0wDVTxae12Hx4eaqscAIPZDxhrTkY/anX7p+bHfBWkoJ6wGbPjqkrakqCY JRXifAOsJk1k9la1c78aMXvryAbYEZ4nPYKhXlimj+xuFNOj1THyHhkJsR52J65Pkifs G+83vcL87fdU1rV8aVligXWgWzOcOQsbbyxYT7H+7Ur1afcdvkf8r7/HQx0bBaC/a2xo tneQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :dkim-signature:dkim-signature; bh=xCJ5r4IwNoktWezGd0ybOAK8DljB/j1XCLh/nYaztSY=; b=lfT2/s5hxtG9teZveg/GU+RGJjnh0eudl5mlrfUaHoGZrt/HM35CNf9FUfCjGzb4X6 Nv3YA5SQJn83dNg4ShjAo9HbZRyFo5ikbX0GQEKkzN3c6MZ+HPAjQLE/ea8Utfy/hIJe qrrotgLt76QPZPzyBjaqOCPc/Sbi2apFKeuQ/cbOyFYiSzz1NM+H3yUwNdtQ8smTKiKN ayq4fuzaht2+h5MnY3NooKpuJrOkO8CjaTzKqbyFQCbJHi3FfEaxuajK80F+avC0kWRe Gc1mmlLyAnKtcTSUKD75yTCXyejXpRdp9V/ko3NijN+3U1xJYBUTM6Xt5H+id75mFhKW AeoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b="u3Ov/OCf"; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=ORHSf0BB; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id 184-20020a1c19c1000000b00394803e574asi7118469wmz.5.2022.05.13.20.50.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 May 2022 20:50:15 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b="u3Ov/OCf"; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=ORHSf0BB; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 8843BB8BE6; Fri, 13 May 2022 17:23:08 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379350AbiEMKVZ (ORCPT + 99 others); Fri, 13 May 2022 06:21:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47088 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379357AbiEMKVF (ORCPT ); Fri, 13 May 2022 06:21:05 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 96F1D2D1CA for ; Fri, 13 May 2022 03:21:00 -0700 (PDT) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id EE98221A9B; Fri, 13 May 2022 10:20:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1652437258; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=xCJ5r4IwNoktWezGd0ybOAK8DljB/j1XCLh/nYaztSY=; b=u3Ov/OCfzPcCfDzmXeJ1PzvjaosxXxDiNDmial3hQ59b+FSx1rAxjXPi9EPEqSYAp1uBlx ZiSHK9z6RQAqGjpZaXQvqtXgbtVGg9kzPEwdCtvo2Ie4EapO75UBsEj54b5kM4RNloRoln ThuHufwbhLVyH8+3RbkwoiYSfVKfLys= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1652437258; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=xCJ5r4IwNoktWezGd0ybOAK8DljB/j1XCLh/nYaztSY=; b=ORHSf0BB6k+5wtnlx5e+hCGD5XyU48ZlLeAfj8Oda5m0vXlmD8xzI4zL5ysGAGPGfnNUn7 k/sUXKs6Tm9RvjDA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id ADC6D13446; Fri, 13 May 2022 10:20:58 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id wxtYKQoxfmJYGAAAMHmgww (envelope-from ); Fri, 13 May 2022 10:20:58 +0000 Message-ID: <12fcba08-a2ad-ea50-ed63-029b5068800e@suse.de> Date: Fri, 13 May 2022 12:20:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 Subject: Re: [PATCH v4] drm/ast: Create the driver for ASPEED proprietory Display-Port Content-Language: en-US To: Kuo-Hsiang Chou , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" Cc: Hungju Huang , "airlied@linux.ie" , Tommy Huang , "airlied@redhat.com" , Arc Sung , Luke Chen References: <872e0d4b-411a-594f-a194-428986e18c3d@suse.de> <20220428075603.20904-1-kuohsiang_chou@aspeedtech.com> <43be719f-9149-abf0-fc5a-95b8d1c6761d@suse.de> From: Thomas Zimmermann In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------0KhABT8f901b0javwNOmwnBs" X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,NICE_REPLY_A,RDNS_NONE,SPF_HELO_NONE, 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 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------0KhABT8f901b0javwNOmwnBs Content-Type: multipart/mixed; boundary="------------vwTk7KZM0aUsUf0ZLQslBywK"; protected-headers="v1" From: Thomas Zimmermann To: Kuo-Hsiang Chou , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" Cc: Hungju Huang , "airlied@linux.ie" , Tommy Huang , "airlied@redhat.com" , Arc Sung , Luke Chen Message-ID: <12fcba08-a2ad-ea50-ed63-029b5068800e@suse.de> Subject: Re: [PATCH v4] drm/ast: Create the driver for ASPEED proprietory Display-Port References: <872e0d4b-411a-594f-a194-428986e18c3d@suse.de> <20220428075603.20904-1-kuohsiang_chou@aspeedtech.com> <43be719f-9149-abf0-fc5a-95b8d1c6761d@suse.de> In-Reply-To: --------------vwTk7KZM0aUsUf0ZLQslBywK Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMTMuMDUuMjIgdW0gMTE6MDcgc2NocmllYiBLdW8tSHNpYW5nIENob3U6DQo+ IA0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVGhvbWFzIFpp bW1lcm1hbm4gW21haWx0bzp0emltbWVybWFubkBzdXNlLmRlXQ0KPiBTZW50OiBUdWVzZGF5 LCBNYXkgMTAsIDIwMjIgNjo1NiBQTQ0KPiBUbzogS3VvLUhzaWFuZyBDaG91IDxrdW9oc2lh bmdfY2hvdUBhc3BlZWR0ZWNoLmNvbT47IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRD SCB2NF0gZHJtL2FzdDogQ3JlYXRlIHRoZSBkcml2ZXIgZm9yIEFTUEVFRCBwcm9wcmlldG9y eSBEaXNwbGF5LVBvcnQNCj4gDQo+IEhpDQo+IA0KPiBBbSAwNC4wNS4yMiB1bSAxMDo0OSBz Y2hyaWViIEt1by1Ic2lhbmcgQ2hvdToNCj4+IEhpIFRob21hcywNCj4+DQo+PiBUaGFua3Mg Zm9yIHlvdXIgZWZmb3J0cyB0byByZXZpZXcgdGhpcyBwYXRjaC4NCj4+DQo+PiBOb3csIEkg b2JzZXJ2ZSBhIGNoYW5nZSB0aGF0IGFmdGVyIERQIHVucGx1Z2dlZCBhbmQgdGhlbiB0aGUg c3lzdGVtIGlzDQo+PiB1bmFibGUgdG8gZ2V0IEVESUQgZnJvbSBELXN1YiBjb25uZWN0aW5n Lg0KPj4NCj4+IFRoZSByZWFzb24gc2VlbXMgdGhhdCBUWHMgYXJlIG1lcmdlZCBpbnRvIHVu aW9uIHN0cnVjdHVyZSBpbg0KPj4gL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oDQo+ PiAgIMKgKGE1OWIwMjY0MTlmMzMwNDBkN2QyOGI4ZTNiMWNlYTY4MWI5Y2U3YTcNCj4+IDxo dHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYy9jb21taXQvP2lkPWE1 OWIwMjY0MTlmMzMwNDANCj4+IGQ3ZDI4YjhlM2IxY2VhNjgxYjljZTdhNz4pDQo+IA0KPiBJ IGhhdmUgcG9zdGVkIGEgcGF0Y2ggdGhhdCBlbmFibGVzIG11bHRpcGxlIHBhcmFsbGVsIG91 dHB1dHMuIFNlZQ0KPiANCj4gICANCj4gPGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2RyaS1k ZXZlbC8yMDIyMDUxMDEwNTAxMC4yMDcxMi0xLXR6aW1tZXJtYW5uQHN1c2UuZGUvVC8jdT4N Cj4gDQo+IElmIHlvdSBoYXZlIHRoZSB0aW1lLCBJJ2QgYXBwcmVjaWF0ZSBpZiB5b3UgY291 bGQgdGVzdCBpdC4NCj4gDQo+IEhpIFRob21hcywNCj4gRmlyc3QsIHRoYW5rcyBmb3IgeW91 ciBlZmZvcnRzIG9uIHRoaXMgcGF0Y2ggb2YgIiBlbmFibGVzIG11bHRpcGxlIHBhcmFsbGVs IG91dHB1dHMgIi4NCj4gQnV0IGl0IGRvZXNuJ3Qgd29yay4gVGhlcmUgaXMgc3RpbGwgTk8g RURJRCBnb3QgZnJvbSBELXN1YiBhZnRlciBEUCB1bnBsdWdnZWQuDQo+IA0KPiBCYXNlIG9u IHlvdXIgcGF0Y2gsIEkgYW0gdHJ5aW5nIHRvIGZpbmQgb3V0IHRoZSBzb2x1dGlvbiBhbHNv Lg0KPiBGaW5hbCwgdGhhbmtzIGZvciB5b3VyIGhlbHAgYWdhaW4hDQoNCkxldCdzIHRyeSB0 byBmaW5kIGEgc29sdXRpb24uIEkgbWlnaHQgYmUgYWJsZSB0byBjb21lIHVwIHdpdGggc29t ZXRoaW5nIA0KaWYgSSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbi4NCg0KSG93IGFyZSB0aGVz ZSBvdXRwdXRzIGNvbm5lY3RlZCB0byBlYWNoIGVhY2ggb3RoZXI/DQoNClRoZXkgYXJlIGJv dGggc2VydmVkIGJ5IHRoZSBzYW1lIENSVEMuIENhbiB0aGV5IGJlIHVzZWQgYXQgdGhlIHNh bWUgDQp0aW1lPyAgQXJlIHRoZXkgbXV0dWFsbHkgZXhjbHVzaXZlPw0KDQpCZXN0IHJlZ2Fy ZHMNClRob21hcw0KDQo+IA0KPiBSZWdhcmRzLA0KPiAJS3VvLUhzaWFuZyBDaG91DQo+IA0K PiBCZXN0IHJlZ2FyZHMNCj4gVGhvbWFzDQo+IA0KPj4NCj4+IEFub3RoZXIsIGRvIHlvdSBu ZWVkIHRoZSBhc3QyNjAwIEVWQiB0byBlYXNlIHZlcmlmaWNhdGlvbiBvbiAiZHJtL2FzdCIg Pw0KPj4NCj4+IFJlZ2FyZHMsDQo+Pg0KPj4gICDCoMKgwqDCoMKgwqDCoCBLdW8tSHNpYW5n IENob3UNCj4+DQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gRnJvbTogVGhv bWFzIFppbW1lcm1hbm4gW21haWx0bzp0emltbWVybWFubkBzdXNlLmRlXQ0KPj4gU2VudDog V2VkbmVzZGF5LCBNYXkgMDQsIDIwMjIgMzoyOCBQTQ0KPj4gVG86IEt1by1Ic2lhbmcgQ2hv dSA8a3VvaHNpYW5nX2Nob3VAYXNwZWVkdGVjaC5jb20+Ow0KPj4gZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZw0KPj4gU3Vi amVjdDogUmU6IFtQQVRDSCB2NF0gZHJtL2FzdDogQ3JlYXRlIHRoZSBkcml2ZXIgZm9yIEFT UEVFRA0KPj4gcHJvcHJpZXRvcnkgRGlzcGxheS1Qb3J0DQo+Pg0KPj4gSGkNCj4+DQo+PiBB bSAyOC4wNC4yMiB1bSAwOTo1NiBzY2hyaWViIEt1b0hzaWFuZyBDaG91Og0KPj4NCj4+PiBW MToNCj4+DQo+Pj4gMS4gVGhlIE1DVSBGVyBjb250cm9saW5nIEFTUEVFRCBEUCBpcyBsb2Fk ZWQgYnkgQk1DIGJvb3QgbG9hZGVyLg0KPj4NCj4+PiAyLiBEcml2ZXIgc3RhcnRzIGFmdGVy IENSWzM6MV0gPT0gMTExYiB0aGF0IGluZGljYXRlcyBUeCBpcyBBU1REUCwNCj4+DQo+Pj4g IMKgwqDCoMKgIGFuZCBDUkQxWzVdIGhhcyBiZWVuIGFzc2VydGVkIGJ5IEJNVkMgYm9vdCBs b2FkZXIuDQo+Pg0KPj4+IDMuIEVESUQgaXMgcHJpb3JpdGl6ZWQgYnkgRFAgbW9uaXRvci4N Cj4+DQo+Pj4gNC4gRFAncyBFRElEIGhhcyBoaWdoIHByaW9yaXR5IHRvIGRlY2lkZSByZXNv bHV0aW9uIHN1cHBvcnRpbmcuDQo+Pg0KPj4+DQo+Pg0KPj4+IFYyOg0KPj4NCj4+PiBNb2R1 bGVzIGRlc2NyaXB0aW9uOg0KPj4NCj4+PiAxLiBBU1REUCAoQVNQRUVEIERpc3BsYXlQb3J0 KSBpcyBjb250cm9sbGVkIGJ5IGRlZGljYXRlZA0KPj4NCj4+PiAgwqDCoMKgwqAgQVNULU1D VSAoQVNQRUVEIHByb3ByaWF0YXJ5IE1DVSkuDQo+Pg0KPj4+IDIuIE1DVSBpcyBsb29waW5n IGluIGNoYXJnZWQgb2YgSFBELCBSZWFkIEVESUQsIExpbmsgVHJhaW5pbmcgd2l0aA0KPj4N Cj4+PiAgwqDCoMKgwqAgRFAgc2luay4NCj4+DQo+Pj4gMy4gQVNURFAgYW5kIEFTVC1NVUMg cmVzaWRlIGluIEJNQyAoQmFzZWJvYXJkIE1hbmFnZW1lbnQgY29udHJvbGxlcikNCj4+DQo+ Pj4gIMKgwqDCoMKgIGFkZHJlc3Npbmctc3BhY2UuDQo+Pg0KPj4+IDQuIEFTUEVFRCBEUk0g ZHJpdmVyIHJlcXVlc3RzIE1DVSB0byBnZXQgSFBEIGFuZCBFRElEIGJ5IENSLXNjcmF0Y2hl ZA0KPj4NCj4+PiAgwqDCoMKgwqAgcmVnaXN0ZXIuDQo+Pg0KPj4+DQo+Pg0KPj4+IEJvb3Rp bmcgc2VxdWVuY2U6DQo+Pg0KPj4+IDEuIENoZWNrIGlmIFRYIGlzIEFTVERQwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8vDQo+Pj4gYXN0X2RwX2xhdW5jaCgpDQo+Pg0KPj4+IDIuIENo ZWNrIGlmIERQLU1DVSBGVyBoYXMgbG9hZGVkDQo+Pj4gLy8gYXN0X2RwX2xhdW5jaCgpDQo+ Pg0KPj4+IDMuIFJlYWQgRURJRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLw0KPj4+IGFz dF9kcF9yZWFkX2VkaWQoKQ0KPj4NCj4+PiA0LiBSZXNvbHV0aW9uIHN3aXRjaMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAvLw0KPj4+IGFzdF9kcF9TZXRPdXRwdXQoKQ0KPj4NCj4+Pg0KPj4NCj4+ PiBWMzoNCj4+DQo+Pj4gMS4gUmVtb3ZlIHVubmVlZGVkIHNlbWljb2xvbi4NCj4+DQo+Pj4g Mi4gQXBwbHkgdG8gZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZHJtL2RybSwgaW5z dGVhZCBvZg0KPj4NCj4+PiAgwqDCoMKgwqAgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5v cmcvZHJtL2RybS1taXNjDQo+Pg0KPj4+IDMuIFJlc29sdmUgYXV0byBidWlsZCB0ZXN0IFdB Uk5JTkdzIG9uIFYxIHBhdGNoLg0KPj4NCj4+Pg0KPj4NCj4+PiBWNDoNCj4+DQo+Pj4gMS4g U3luYyBjb2RlLWJhc2Ugd2l0aCBrZXJuZWwgNS4xN19yYzYgMi4gUmVtb3ZlIHRoZSBkZWZp bmUgb2YNCj4+DQo+Pj4gRFBDb250cm9sUG93ZXIsIGJlY2F1c2UgRFAgY2hpcHMgbmVlZCB0 byBiZQ0KPj4NCj4+PiAgwqDCoMKgwqAgcG93ZXJlZCBvbiB0byBiZSB1c2VkLg0KPj4NCj4+ PiAzLiBSZW1vdmUgdGhlIHN3aXRjaGVzIG9mIFBIWSBhbmQgRGlzcGxheSBmcm9tIEVESUQg cHJvY2VkdXJlLg0KPj4NCj4+PiA0LiBSZXZpc2UgaW5jcmVhaW5nIGRlbGF5IHRvIGZpeGVk IGRlbGF5LCBiZWNhdXNlIHRoaXMgdmVyc2lvbiBrZXJuZWwNCj4+DQo+Pj4gIMKgwqDCoMKg IGRvZXNuJ3QgZGV0ZWN0IG1pbml0b3IgY29uc2lzdGVubnRseS4NCj4+DQo+Pj4gNS4gQ3Jl YXRlIGNsZWFuLXVwIGNvZGUgdXNlZCBmb3IgcmVzZXQgb2YgcG93ZXIgc3RhdGUgb24gZXJy b3JzIHdpdGgNCj4+DQo+Pj4gIMKgwqDCoMKgIC1FSU8gbWFubmVyLg0KPj4NCj4+PiA2LiBS ZXZpc2UgdGhlIERQIGRldGVjdGlvbiBieSBUWCB0eXBlIGFuZCBpdHMgRFAtRlcgc3RhdHVz IGR1cmluZw0KPj4NCj4+PiAgwqDCoMKgwqAgYm9vdGluZyBhbmQgcmVzdW1lLg0KPj4NCj4+ PiA3LiBDb3JyZWN0IHRoZSBDYW1lbENhc2UgU3R5bGUuDQo+Pg0KPj4+IDguIFVzZSByZWdp c3RlciByZWFkaW5nIHdoaWxlIG5lZWRpbmcsIGFuZCByZW1vdmUgdG8gaG9sZCBmdWxsDQo+ Pg0KPj4+ICDCoMKgwqDCoCByZWdpc3Rlci4NCj4+DQo+Pj4gOS4gSW5zdGVhZCBvZiAndTgn LCByZXZpc2UgdG8gJ2Jvb2wnIG9uIHN3d2l0Y2ggb2YgUEhZIGFuZCB2aWRlby4NCj4+DQo+ Pj4gMTAuQ29ycmVjdCB0eXBvDQo+Pg0KPj4+IDExLlJlbW92ZSB0aGUgZHVwbGljYXRlZCBj b3B5IG9mIFRYIGRlZmluaXRpb24uDQo+Pg0KPj4+IDEyLlVzZSBFRElEX0xFTkdUSCBhcyB0 aGUgY29uc3RhbnQgb2YgMTI4Lg0KPj4NCj4+Pg0KPj4NCj4+PiBTaWduZWQtb2ZmLWJ5OiBL dW9Ic2lhbmcgQ2hvdSA8a3VvaHNpYW5nX2Nob3VAYXNwZWVkdGVjaC5jb20NCj4+PiA8bWFp bHRvOmt1b2hzaWFuZ19jaG91QGFzcGVlZHRlY2guY29tPj4NCj4+DQo+PiBSZXZpZXdlZC1i eTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGUNCj4+IDxtYWlsdG86 dHppbW1lcm1hbm5Ac3VzZS5kZT4+DQo+Pg0KPj4gSSd2ZSBtZWFud2hpbGUgYWRkZWQgeW91 ciBwYXRjaCB0byBkcm0tbWlzYy1uZXh0LiBJdCBzaG91bGQgc2hvdyB1cCBpbg0KPj4gb25l IG9mIHRoZSBuZXh0IGtlcm5lbCByZWxlYXNlcy7CoCBUaGFua3MgYSBsb3QuDQo+Pg0KPj4g QmVzdCByZWdhcmRzDQo+Pg0KPj4gVGhvbWFzDQo+Pg0KPj4+IC0tLQ0KPj4NCj4+PiAgwqDC oCBkcml2ZXJzL2dwdS9kcm0vYXN0L01ha2VmaWxlwqDCoCB8wqDCoCAyICstDQo+Pg0KPj4+ ICDCoMKgIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmPCoMKgIHwgMjgyDQo+Pj4gKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+Pg0KPj4+ICDCoMKgIGRyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X2Rydi5owqAgfCAxMTUgKysrKysrKysrKysrKysNCj4+DQo+Pj4g IMKgwqAgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jIHzCoMKgIDUgKy0NCj4+DQo+ Pj4gIMKgwqAgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jIHwgMTI0ICsrKysrKysr KysrKysrLQ0KPj4NCj4+PiAgwqDCoCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMg fMKgwqAgNCArLQ0KPj4NCj4+PiAgwqDCoCA2IGZpbGVzIGNoYW5nZWQsIDUyNCBpbnNlcnRp b25zKCspLCA4IGRlbGV0aW9ucygtKQ0KPj4NCj4+PiAgwqDCoCBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHAuYw0KPj4NCj4+Pg0KPj4NCj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9NYWtlZmlsZQ0KPj4NCj4+PiBiL2RyaXZl cnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUgaW5kZXggMjFmNzExNjBiLi41YTUzY2U1MWYgMTAw NjQ0DQo+Pg0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUNCj4+DQo+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9NYWtlZmlsZQ0KPj4NCj4+PiBAQCAtMyw2 ICszLDYgQEANCj4+DQo+Pj4gIMKgwqAgIyBNYWtlZmlsZSBmb3IgdGhlIGRybSBkZXZpY2Ug ZHJpdmVyLsKgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQNCj4+PiBmb3IgdGhlDQo+ Pg0KPj4+ICDCoMKgICMgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKSBp biBYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIuDQo+Pg0KPj4+DQo+Pg0KPj4+IC1hc3QteSA6 PSBhc3RfZHJ2Lm8gYXN0X2kyYy5vIGFzdF9tYWluLm8gYXN0X21tLm8gYXN0X21vZGUubw0K Pj4NCj4+PiBhc3RfcG9zdC5vIGFzdF9kcDUwMS5vDQo+Pg0KPj4+ICthc3QteSA6PSBhc3Rf ZHJ2Lm8gYXN0X2kyYy5vIGFzdF9tYWluLm8gYXN0X21tLm8gYXN0X21vZGUubw0KPj4NCj4+ PiArYXN0X3Bvc3QubyBhc3RfZHA1MDEubyBhc3RfZHAubw0KPj4NCj4+Pg0KPj4NCj4+PiAg wqDCoCBvYmotJChDT05GSUdfRFJNX0FTVCkgOj0gYXN0Lm8NCj4+DQo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMNCj4+DQo+Pj4gYi9kcml2ZXJzL2dw dS9kcm0vYXN0L2FzdF9kcC5jIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+Pg0KPj4+ IDAwMDAwMDAwMC4uNDU1MWJjOGEzDQo+Pg0KPj4+IC0tLSAvZGV2L251bGwNCj4+DQo+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHAuYw0KPj4NCj4+PiBAQCAtMCwwICsx LDI4MiBAQA0KPj4NCj4+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAN Cj4+DQo+Pj4gKy8vIENvcHlyaWdodCAoYykgMjAyMSwgQVNQRUVEIFRlY2hub2xvZ3kgSW5j Lg0KPj4NCj4+PiArLy8gQXV0aG9yczogS3VvSHNpYW5nIENob3UgPGt1b2hzaWFuZ19jaG91 QGFzcGVlZHRlY2guY29tDQo+Pj4gKzxtYWlsdG86a3VvaHNpYW5nX2Nob3VAYXNwZWVkdGVj aC5jb20+Pg0KPj4NCj4+PiArDQo+Pg0KPj4+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUu aD4NCj4+DQo+Pj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPj4NCj4+PiArI2luY2x1 ZGUgPGRybS9kcm1fcHJpbnQuaD4NCj4+DQo+Pj4gKyNpbmNsdWRlICJhc3RfZHJ2LmgiDQo+ Pg0KPj4+ICsNCj4+DQo+Pj4gK2ludCBhc3RfYXN0ZHBfcmVhZF9lZGlkKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHU4ICplZGlkZGF0YSkgew0KPj4NCj4+PiArwqDCoCBzdHJ1Y3QgYXN0 X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2YXRlKGRldik7DQo+Pg0KPj4+ICvCoMKgIHU4 IGkgPSAwLCBqID0gMDsNCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoCAvKg0KPj4NCj4+PiAr wqDCoCAqIENSRDFbYjVdOiBEUCBNQ1UgRlcgaXMgZXhlY3V0aW5nDQo+Pg0KPj4+ICvCoMKg ICogQ1JEQ1tiMF06IERQIGxpbmsgc3VjY2Vzcw0KPj4NCj4+PiArwqDCoCAqIENSREZbYjBd OiBEUCBIUEQNCj4+DQo+Pj4gK8KgwqAgKiBDUkU1W2IwXTogSG9zdCByZWFkaW5nIEVESUQg cHJvY2VzcyBpcyBkb25lDQo+Pg0KPj4+ICvCoMKgICovDQo+Pg0KPj4+ICvCoMKgIGlmICgh KGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEQxLA0K Pj4+ICtBU1REUF9NQ1VfRldfRVhFQ1VUSU5HKSAmJg0KPj4NCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQs IDB4REMsDQo+Pj4gK0FTVERQX0xJTktfU1VDQ0VTUykgJiYNCj4+DQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgIGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19Q T1JULCAweERGLA0KPj4+ICtBU1REUF9IUEQpICYmDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoCBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwg MHhFNSwNCj4+DQo+Pj4gKw0KPj4+ICtBU1REUF9IT1NUX0VESURfUkVBRF9ET05FX01BU0sp KSkgew0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfYXN0ZHBfZWRp ZF9ub3RfcmVhZHk7DQo+Pg0KPj4+ICvCoMKgIH0NCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDC oCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFNSwg KHU4KQ0KPj4+ICt+QVNURFBfSE9TVF9FRElEX1JFQURfRE9ORV9NQVNLLA0KPj4NCj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDAwKTsN Cj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoCBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgew0K Pj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoNCj4+DQo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgICogQ1JFNFs3OjBdOiBSZWFkLVBvaW50ZXIgZm9yIEVESUQgKFVuaXQ6IDRi eXRlcyk7IHZhbGlkDQo+Pj4gK3JhbmdlOiAwfjY0DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoCAqLw0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9pbmRl eF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTQsDQo+Pg0KPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAodTgpDQo+Pj4gK35BU1REUF9FRElEX1JFQURfUE9JTlRFUl9NQVNLLCAo dTgpIGkpOw0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaiA9IDA7DQo+Pg0KPj4+ ICsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+Pg0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoCAqIENSRDdbYjBdOiB2YWxpZCBmbGFnIGZvciBFRElEDQo+Pg0KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIENSRDZbYjBdOiBtaXJyb3IgcmVhZCBwb2ludGVy IGZvciBFRElEDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4NCj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqAgd2hpbGUgKChhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFz dCwgQVNUX0lPX0NSVENfUE9SVCwNCj4+PiArMHhENywNCj4+DQo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVNURFBfRURJRF9W QUxJRF9GTEFHX01BU0spICE9IDB4MDEpIHx8DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1Rf SU9fQ1JUQ19QT1JULA0KPj4+ICsweEQ2LA0KPj4NCj4+PiArDQo+Pj4gK0FTVERQX0VESURf UkVBRF9QT0lOVEVSX01BU0spICE9IGkpKSB7DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqIERlbGF5IGFyZSBnZXR0aW5nIGxvbmdlciB3aXRoIGVhY2gg cmV0cnkuDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KiAxLiBUaGUgRGVsYXlzIGFyZSBvZnRlbiAyIGxvb3BzIHdoZW4gdXNlcnMgcmVxdWVzdCAi RGlzcGxheSBTZXR0aW5ncyINCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqwqDCoMKgIMKgIG9mIHJpZ2h0LWNsaWNrIG9mIG1vdXNlLg0KPj4NCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogMi4gVGhlIERlbGF5 cyBhcmUgb2Z0ZW4gbG9uZ2VyIGEgbG90IHdoZW4gc3lzdGVtIHJlc3VtZSBmcm9tIFMzL1M0 Lg0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+ Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWRlbGF5KGor MSk7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoIShhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwNCj4+PiArQVNUX0lP X0NSVENfUE9SVCwgMHhEMSwNCj4+DQo+Pj4gKw0KPj4+ICtBU1REUF9NQ1VfRldfRVhFQ1VU SU5HKSAmJg0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwNCj4+PiArQVNU X0lPX0NSVENfUE9SVCwgMHhEQywNCj4+DQo+Pj4gKw0KPj4+ICtBU1REUF9MSU5LX1NVQ0NF U1MpICYmDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LA0KPj4+ICtBU1Rf SU9fQ1JUQ19QT1JULCAweERGLCBBU1REUF9IUEQpKSkgew0KPj4NCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9h c3RkcF9qdW1wX291dF9sb29wX29mX2VkaWQ7DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4NCj4+PiArDQo+Pg0KPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaisrOw0KPj4NCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChqID4gMjAwKQ0KPj4NCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVy cl9hc3RkcF9qdW1wX291dF9sb29wX29mX2VkaWQ7DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoCB9DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICoo ZWRpZGRhdGEpID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsDQo+Pj4gK0FTVF9JT19D UlRDX1BPUlQsDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDB4RDgsDQo+Pj4gK0FTVERQX0VESURfUkVBRF9EQVRBX01BU0spOw0K Pj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKihlZGlkZGF0YSArIDEpID0gYXN0X2dl dF9pbmRleF9yZWdfbWFzayhhc3QsDQo+Pj4gK0FTVF9JT19DUlRDX1BPUlQsIDB4RDksDQo+ Pg0KPj4+ICsNCj4+PiArQVNURFBfRURJRF9SRUFEX0RBVEFfTUFTSyk7DQo+Pg0KPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCAqKGVkaWRkYXRhICsgMikgPSBhc3RfZ2V0X2luZGV4X3Jl Z19tYXNrKGFzdCwNCj4+PiArQVNUX0lPX0NSVENfUE9SVCwgMHhEQSwNCj4+DQo+Pj4gKw0K Pj4+ICtBU1REUF9FRElEX1JFQURfREFUQV9NQVNLKTsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgICooZWRpZGRhdGEgKyAzKSA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0 LA0KPj4+ICtBU1RfSU9fQ1JUQ19QT1JULCAweERCLA0KPj4NCj4+PiArDQo+Pj4gK0FTVERQ X0VESURfUkVBRF9EQVRBX01BU0spOw0KPj4NCj4+PiArDQo+Pg0KPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoaSA9PSAzMSkgew0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKiBGb3IgMTI4LWJ5dGVzIEVESURfMS4zLA0KPj4NCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogMS4gQWRkIHRoZSB2YWx1ZSBv ZiBCeXRlcy0xMjYgdG8gQnl0ZXMtMTI3Lg0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRoZSBCeXRlcy0x MjcgaXMgQ2hlY2tzdW0uIFN1bSBvZg0KPj4+ICthbGwgMTI4Ynl0ZXMgc2hvdWxkDQo+Pg0K Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZXF1YWwgMMKgwqDCoCAobW9kIDI1NikuDQo+Pg0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAyLiBNb2RpZnkgQnl0ZXMtMTI2IHRv IGJlIDAuDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVGhlIEJ5dGVzLTEyNiBpbmRpY2F0ZXMgdGhlIE51 bWJlcg0KPj4+ICtvZiBleHRlbnNpb25zIHRvDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9sbG93LiAw IHJlcHJlc2VudHMgbm9leHRlbnNpb25zLg0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKihlZGlkZGF0YSArIDMpID0gKihlZGlkZGF0YSArIDMpICsgKihl ZGlkZGF0YSArDQo+Pj4gKzIpOw0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICooZWRpZGRhdGEgKyAyKSA9IDA7DQo+Pg0KPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCB9DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg IGVkaWRkYXRhICs9IDQ7DQo+Pg0KPj4+ICvCoMKgIH0NCj4+DQo+Pj4gKw0KPj4NCj4+PiAr wqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhF NSwgKHU4KQ0KPj4+ICt+QVNURFBfSE9TVF9FRElEX1JFQURfRE9ORV9NQVNLLA0KPj4NCj4+ PiArDQo+Pj4gK0FTVERQX0hPU1RfRURJRF9SRUFEX0RPTkUpOw0KPj4NCj4+PiArDQo+Pg0K Pj4+ICvCoMKgIHJldHVybiAwOw0KPj4NCj4+PiArDQo+Pg0KPj4+ICtlcnJfYXN0ZHBfanVt cF9vdXRfbG9vcF9vZl9lZGlkOg0KPj4NCj4+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19t YXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFNSwNCj4+DQo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHU4KQ0KPj4+ICt+QVNURFBf SE9TVF9FRElEX1JFQURfRE9ORV9NQVNLLA0KPj4NCj4+PiArDQo+Pj4gK0FTVERQX0hPU1Rf RURJRF9SRUFEX0RPTkUpOw0KPj4NCj4+PiArwqDCoCByZXR1cm4gKH4oaisyNTYpICsgMSk7 DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK2Vycl9hc3RkcF9lZGlkX25vdF9yZWFkeToNCj4+DQo+ Pj4gK8KgwqAgaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRD X1BPUlQsIDB4RDEsDQo+Pj4gK0FTVERQX01DVV9GV19FWEVDVVRJTkcpKSkNCj4+DQo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAofjB4RDEgKyAxKTsNCj4+DQo+Pj4gK8Kg wqAgaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQs IDB4REMsDQo+Pj4gK0FTVERQX0xJTktfU1VDQ0VTUykpKQ0KPj4NCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuICh+MHhEQyArIDEpOw0KPj4NCj4+PiArwqDCoCBpZiAoIShh c3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhERiwNCj4+ PiArQVNURFBfSFBEKSkpDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g KH4weERGICsgMSk7DQo+Pg0KPj4+ICvCoMKgIGlmICghKGFzdF9nZXRfaW5kZXhfcmVnX21h c2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEU1LA0KPj4+ICtBU1REUF9IT1NUX0VESURf UkVBRF9ET05FX01BU0spKSkNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biAofjB4RTUgKyAxKTsNCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoCByZXR1cm7CoMKgwqDC oMKgIDA7DQo+Pg0KPj4+ICt9DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gKy8qDQo+Pg0KPj4+ICsg KiBMYXVuY2ggQXNwZWVkIERQDQo+Pg0KPj4+ICsgKi8NCj4+DQo+Pj4gK3ZvaWQgYXN0X2Rw X2xhdW5jaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1OCBiUG93ZXIpIHsNCj4+DQo+Pj4g K8KgwqAgdTMyIGkgPSAwLCBqID0gMCwgV2FpdENvdW50ID0gMTsNCj4+DQo+Pj4gK8KgwqAg dTggYkRQVFggPSAwOw0KPj4NCj4+PiArwqDCoCB1OCBiRFBFeGVjdXRlID0gMTsNCj4+DQo+ Pj4gKw0KPj4NCj4+PiArwqDCoCBzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9w cml2YXRlKGRldik7DQo+Pg0KPj4+ICvCoMKgIC8vIFMzIGNvbWUgYmFjaywgbmVlZCBtb3Jl IHRpbWUgdG8gd2FpdCBCTUMgcmVhZHkuDQo+Pg0KPj4+ICvCoMKgIGlmIChiUG93ZXIpDQo+ Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBXYWl0Q291bnQgPSAzMDA7DQo+Pg0KPj4+ ICsNCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoCAvLyBXYWl0IHRvdGFsIGNvdW50IGJ5IGRp ZmZlcmVudCBjb25kaXRpb24uDQo+Pg0KPj4+ICvCoMKgIGZvciAoaiA9IDA7IGogPCBXYWl0 Q291bnQ7IGorKykgew0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYkRQVFggPSBh c3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwNCj4+PiArMHhE MSwNCj4+DQo+Pj4gK1RYX1RZUEVfTUFTSyk7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChiRFBUWCkNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqAgbXNsZWVwKDEwMCk7DQo+Pg0KPj4+ICvCoMKgIH0NCj4+DQo+Pj4g Kw0KPj4NCj4+PiArwqDCoCAvLyAweEUgOiBBU1REUCB3aXRoIERQTUNVIEZXIGhhbmRsaW5n DQo+Pg0KPj4+ICvCoMKgIGlmIChiRFBUWCA9PSBBU1REUF9EUE1DVV9UWCkgew0KPj4NCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gV2FpdCBvbmUgc2Vjb25kIHRoZW4gdGltZW91 dC4NCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGkgPSAwOw0KPj4NCj4+PiArDQo+ Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoYXN0X2dldF9pbmRleF9yZWdf bWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsDQo+Pj4gKzB4RDEsIENPUFJPQ0VTU09SX0xB VU5DSCkgIT0NCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBDT1BST0NFU1NPUl9MQVVOQ0gpIHsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpKys7DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLy8gd2FpdCAxMDAgbXMNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtc2xlZXAoMTAwKTsNCj4+DQo+Pj4gKw0KPj4NCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpID49IDEwKSB7 DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8vIERQIHdvdWxkIG5vdCBiZSByZWFkeS4NCj4+DQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYkRQRXhlY3V0 ZSA9IDA7DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIH0NCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+ DQo+Pj4gKw0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGJEUEV4ZWN1dGUp DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0LT50 eF9jaGlwX3R5cGUgPSBBU1RfVFhfQVNURFA7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JU Q19QT1JULCAweEU1LA0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAodTgpDQo+Pj4gK35BU1REUF9IT1NUX0VESURfUkVBRF9ET05F X01BU0ssDQo+Pg0KPj4+ICsNCj4+PiArQVNURFBfSE9TVF9FRElEX1JFQURfRE9ORSk7DQo+ Pg0KPj4+ICvCoMKgIH0gZWxzZQ0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0 LT50eF9jaGlwX3R5cGUgPSBBU1RfVFhfTk9ORTsNCj4+DQo+Pj4gK30NCj4+DQo+Pj4gKw0K Pj4NCj4+PiArDQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK3ZvaWQgYXN0X2RwX3Bvd2VyX29uX29m ZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIG9uKSB7DQo+Pg0KPj4+ICvCoMKgIHN0 cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoZGV2KTsNCj4+DQo+Pj4g K8KgwqAgLy8gUmVhZCBhbmQgVHVybiBvZmYgRFAgUEhZIHNsZWVwDQo+Pg0KPj4+ICvCoMKg IHU4IGJFMyA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JU LCAweEUzLA0KPj4NCj4+PiArQVNUX0RQX1ZJREVPX0VOQUJMRSk7DQo+Pg0KPj4+ICsNCj4+ DQo+Pj4gK8KgwqAgLy8gVHVybiBvbiBEUCBQSFkgc2xlZXANCj4+DQo+Pj4gK8KgwqAgaWYg KCFvbikNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJFMyB8PSBBU1RfRFBfUEhZ X1NMRUVQOw0KPj4NCj4+PiArDQo+Pg0KPj4+ICvCoMKgIC8vIERQIFBvd2VyIG9uL29mZg0K Pj4NCj4+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENf UE9SVCwgMHhFMywgKHU4KQ0KPj4NCj4+PiArfkFTVF9EUF9QSFlfU0xFRVAsIGJFMyk7IH0N Cj4+DQo+Pj4gKw0KPj4NCj4+PiArDQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK3ZvaWQgYXN0X2Rw X3NldF9vbl9vZmYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBvbikgew0KPj4NCj4+ PiArwqDCoCBzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2YXRlKGRldik7 DQo+Pg0KPj4+ICvCoMKgIHU4IHZpZGVvX29uX29mZiA9IG9uOw0KPj4NCj4+PiArDQo+Pg0K Pj4+ICvCoMKgIC8vIFZpZGVvIE9uL09mZg0KPj4NCj4+PiArwqDCoCBhc3Rfc2V0X2luZGV4 X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFMywgKHU4KQ0KPj4NCj4+PiAr fkFTVF9EUF9WSURFT19FTkFCTEUsIG9uKTsNCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoCAv LyBJZiBEUCBwbHVnIGluIGFuZCBsaW5rIHN1Y2Nlc3NmdWwgdGhlbiBjaGVjayB2aWRlbyBv biAvIG9mZg0KPj4+ICtzdGF0dXMNCj4+DQo+Pj4gK8KgwqAgaWYgKGFzdF9nZXRfaW5kZXhf cmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERDLA0KPj4+ICtBU1REUF9MSU5L X1NVQ0NFU1MpICYmDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZ2V0X2lu ZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhERiwNCj4+PiArQVNURFBf SFBEKSkgew0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmlkZW9fb25fb2ZmIDw8 PSA0Ow0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2hpbGUgKGFzdF9nZXRfaW5k ZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULA0KPj4+ICsweERGLA0KPj4NCj4+ PiArDQo+Pj4gK0FTVERQX01JUlJPUl9WSURFT19FTkFCTEUpICE9IHZpZGVvX29uX29mZikg ew0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIHdh aXQgMSBtcw0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IG1kZWxheSgxKTsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+DQo+Pj4g K8KgwqAgfQ0KPj4NCj4+PiArfQ0KPj4NCj4+PiArDQo+Pg0KPj4+ICt2b2lkIGFzdF9kcF9z ZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdA0KPj4NCj4+PiArYXN0X3Zi aW9zX21vZGVfaW5mbyAqdmJpb3NfbW9kZSkgew0KPj4NCj4+PiArwqDCoCBzdHJ1Y3QgYXN0 X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2YXRlKGNydGMtPmRldik7DQo+Pg0KPj4+ICsN Cj4+DQo+Pj4gK8KgwqAgdTMyIHVsUmVmcmVzaFJhdGVJbmRleDsNCj4+DQo+Pj4gK8KgwqAg dTggTW9kZUlkeDsNCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoCB1bFJlZnJlc2hSYXRlSW5k ZXggPSB2Ymlvc19tb2RlLT5lbmhfdGFibGUtPnJlZnJlc2hfcmF0ZV9pbmRleCAtDQo+Pj4g KzE7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqAgc3dpdGNoIChjcnRjLT5tb2RlLmNydGNf aGRpc3BsYXkpIHsNCj4+DQo+Pj4gK8KgwqAgY2FzZSAzMjA6DQo+Pg0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNURFBfMzIweDI0MF82MDsNCj4+DQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4NCj4+PiArwqDCoCBjYXNlIDQwMDoNCj4+ DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSBBU1REUF80MDB4MzAwXzYw Ow0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pg0KPj4+ICvCoMKg IGNhc2UgNTEyOg0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IEFT VERQXzUxMngzODRfNjA7DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsN Cj4+DQo+Pj4gK8KgwqAgY2FzZSA2NDA6DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oCBNb2RlSWR4ID0gKEFTVERQXzY0MHg0ODBfNjAgKyAodTgpIHVsUmVmcmVzaFJhdGVJbmRl eCk7DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+DQo+Pj4gK8Kg wqAgY2FzZSA4MDA6DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0g KEFTVERQXzgwMHg2MDBfNTYgKyAodTgpIHVsUmVmcmVzaFJhdGVJbmRleCk7DQo+Pg0KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+DQo+Pj4gK8KgwqAgY2FzZSAxMDI0 Og0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IChBU1REUF8xMDI0 eDc2OF82MCArICh1OCkgdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4+DQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4NCj4+PiArwqDCoCBjYXNlIDExNTI6DQo+Pg0KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNURFBfMTE1Mng4NjRfNzU7DQo+ Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+DQo+Pj4gK8KgwqAgY2Fz ZSAxMjgwOg0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNydGMtPm1vZGUu Y3J0Y192ZGlzcGxheSA9PSA4MDApDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IChBU1REUF8xMjgweDgwMF82MF9SQiAtICh1OCkN Cj4+PiArdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgIGVsc2XCoMKgwqDCoMKgwqDCoMKgwqAgLy8gMTAyNA0KPj4NCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSAoQVNURFBfMTI4MHgxMDI0 XzYwICsgKHU4KQ0KPj4+ICt1bFJlZnJlc2hSYXRlSW5kZXgpOw0KPj4NCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pg0KPj4+ICvCoMKgIGNhc2UgMTM2MDoNCj4+DQo+ Pj4gK8KgwqAgY2FzZSAxMzY2Og0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9k ZUlkeCA9IEFTVERQXzEzNjZ4NzY4XzYwOw0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgYnJlYWs7DQo+Pg0KPj4+ICvCoMKgIGNhc2UgMTQ0MDoNCj4+DQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgIE1vZGVJZHggPSAoQVNURFBfMTQ0MHg5MDBfNjBfUkIgLSAodTgpDQo+ Pj4gK3VsUmVmcmVzaFJhdGVJbmRleCk7DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oCBicmVhazsNCj4+DQo+Pj4gK8KgwqAgY2FzZSAxNjAwOg0KPj4NCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqAgaWYgKGNydGMtPm1vZGUuY3J0Y192ZGlzcGxheSA9PSA5MDApDQo+Pg0K Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IChB U1REUF8xNjAweDkwMF82MF9SQiAtICh1OCkNCj4+PiArdWxSZWZyZXNoUmF0ZUluZGV4KTsN Cj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2XCoMKgwqDCoMKgwqDCoMKgwqAg Ly8xMjAwDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg TW9kZUlkeCA9IEFTVERQXzE2MDB4MTIwMF82MDsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGJyZWFrOw0KPj4NCj4+PiArwqDCoCBjYXNlIDE2ODA6DQo+Pg0KPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gKEFTVERQXzE2ODB4MTA1MF82MF9SQiAtICh1 OCkNCj4+PiArdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGJyZWFrOw0KPj4NCj4+PiArwqDCoCBjYXNlIDE5MjA6DQo+Pg0KPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAoY3J0Yy0+bW9kZS5jcnRjX3ZkaXNwbGF5ID09IDEwODAp DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlk eCA9IEFTVERQXzE5MjB4MTA4MF82MDsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg IGVsc2XCoMKgwqDCoMKgwqDCoMKgwqAgLy8xMjAwDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IEFTVERQXzE5MjB4MTIwMF82MDsN Cj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4NCj4+PiArwqDCoCBk ZWZhdWx0Og0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOw0KPj4NCj4+ PiArwqDCoCB9DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqAgLyoNCj4+DQo+Pj4gK8KgwqAg KiBDUkUwWzc6MF06IE1JU0MwICgoMHgwMDogMTgtYnBwKSBvciAoMHgyMDogMjQtYnBwKQ0K Pj4NCj4+PiArwqDCoCAqIENSRTFbNzowXTogTUlTQzEgKGRlZmF1bHQ6IDB4MDApDQo+Pg0K Pj4+ICvCoMKgICogQ1JFMls3OjBdOiB2aWRlbyBmb3JtYXQgaW5kZXggKDB4MDAgfiAweDIw IG9yIDB4NDAgfiAweDUwKQ0KPj4NCj4+PiArwqDCoCAqLw0KPj4NCj4+PiArwqDCoCBhc3Rf c2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFMCwgKHU4KQ0K Pj4+ICt+QVNURFBfQ0xFQVJfTUFTSywNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVNURFBfTUlTQzBfMjRicHApOw0K Pj4NCj4+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENf UE9SVCwgMHhFMSwgKHU4KQ0KPj4+ICt+QVNURFBfQ0xFQVJfTUFTSywgQVNURFBfTUlTQzEp Ow0KPj4NCj4+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NS VENfUE9SVCwgMHhFMiwgKHU4KQ0KPj4NCj4+PiArfkFTVERQX0NMRUFSX01BU0ssIE1vZGVJ ZHgpOyB9DQo+Pg0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9k cnYuaA0KPj4NCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oIGluZGV4IGEx OTMxNWIyZi4uZmYxYWUzMTRiIDEwMDY0NA0KPj4NCj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9kcnYuaA0KPj4NCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2Fz dF9kcnYuaA0KPj4NCj4+PiBAQCAtNzAsNiArNzAsNyBAQCBlbnVtIGFzdF90eF9jaGlwIHsN Cj4+DQo+Pj4gIMKgwqAgwqDCoMKgwqDCoMKgwqAgQVNUX1RYX05PTkUsDQo+Pg0KPj4+ICDC oMKgIMKgwqDCoMKgwqDCoMKgIEFTVF9UWF9TSUwxNjQsDQo+Pg0KPj4+ICDCoMKgIMKgwqDC oMKgwqDCoMKgIEFTVF9UWF9EUDUwMSwNCj4+DQo+Pj4gK8KgwqAgQVNUX1RYX0FTVERQLA0K Pj4NCj4+PiAgwqDCoCB9Ow0KPj4NCj4+Pg0KPj4NCj4+PiAgwqDCoCAjZGVmaW5lIEFTVF9E UkFNXzUxMk14MTYgMA0KPj4NCj4+PiBAQCAtMTg0LDYgKzE4NSwxMCBAQCBzdHJ1Y3QgYXN0 X3ByaXZhdGUgew0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOw0KPj4NCj4+ PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsNCj4+DQo+Pj4gIMKgwqAgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0gZHA1MDE7DQo+Pg0KPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3Qgew0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOw0KPj4NCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fY29ubmVjdG9y IGNvbm5lY3RvcjsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0gYXN0ZHA7DQo+ Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgIH0gb3V0cHV0Ow0KPj4NCj4+Pg0KPj4NCj4+ PiAgwqDCoCDCoMKgwqDCoMKgwqDCoCBib29sIHN1cHBvcnRfd2lkZV9zY3JlZW47DQo+Pg0K Pj4+IEBAIC0zNTcsMTAgKzM2MiwxMTMgQEAgaW50IGFzdF9tb2RlX2NvbmZpZ19pbml0KHN0 cnVjdCBhc3RfcHJpdmF0ZQ0KPj4+ICphc3QpOw0KPj4NCj4+PiAgwqDCoCAjZGVmaW5lIEFT VF9EUDUwMV9FRElEX0RBVEHCoMKgwqAgMHhmMDIwDQo+Pg0KPj4+DQo+Pg0KPj4+ICDCoMKg IC8qIERlZmluZSBmb3IgU29jIHNjcmF0Y2hlZCByZWcgKi8NCj4+DQo+Pj4gKyNkZWZpbmUg Q09QUk9DRVNTT1JfTEFVTkNIwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBCSVQoNSkNCj4+DQo+Pj4gKw0KPj4NCj4+PiArLyoNCj4+DQo+Pj4gKyAqIERpc3Bs YXkgVHJhbnNtaXR0ZXIgVHlwZToNCj4+DQo+Pj4gKyAqLw0KPj4NCj4+PiArI2RlZmluZSBU WF9UWVBFX01BU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgR0VOTUFTSygzLCAxKQ0KPj4NCj4+PiArI2RlZmluZSBOT19UWMKgwqDC oO+/ve+/vcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDAgPDwgMSkNCj4+DQo+Pj4gKyNkZWZp bmUgSVRFNjYxMjFfVkJJT1NfVFjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICgxIDw8IDEpDQo+Pg0KPj4+ICsjZGVmaW5lIFNJMTY0X1ZCSU9TX1RYwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMiA8PCAx KQ0KPj4NCj4+PiArI2RlZmluZSBDSDcwMDNfVkJJT1NfVFjCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMyA8PCAxKQ0KPj4NCj4+PiArI2RlZmluZSBE UDUwMV9WQklPU19UWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAoNCA8PCAxKQ0KPj4NCj4+PiArI2RlZmluZSBBTlg5ODA3X1ZCSU9TX1RYwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoNSA8PCAxKQ0KPj4NCj4+ PiArI2RlZmluZSBUWF9GV19FTUJFRERFRF9GV19UWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAoNiA8PCAxKQ0KPj4NCj4+PiArI2RlZmluZSBBU1REUF9EUE1DVV9UWMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAoNyA8PCAxKQ0KPj4NCj4+PiArDQo+Pg0KPj4+ICDCoMKgICNkZWZpbmUgQVNUX1ZSQU1f SU5JVF9TVEFUVVNfTUFTS8KgwqDCoMKgwqDCoCBHRU5NQVNLKDcsIDYpDQo+Pg0KPj4+ICDC oMKgIC8vI2RlZmluZSBBU1RfVlJBTV9JTklUX0JZX0JNQ8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBCSVQoNykNCj4+DQo+Pj4gIMKgwqAgLy8jZGVmaW5lIEFTVF9WUkFNX0lOSVRfUkVB RFnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDYpDQo+Pg0KPj4+DQo+Pg0K Pj4+ICsvKiBEZWZpbmUgZm9yIFNvYyBzY3JhdGNoZWQgcmVnIHVzZWQgb24gQVNURFAgKi8N Cj4+DQo+Pj4gKyNkZWZpbmUgQVNUX0RQX1BIWV9TTEVFUMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDQpDQo+Pg0KPj4+ICsjZGVmaW5lIEFTVF9EUF9W SURFT19FTkFCTEXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMCkNCj4+DQo+Pj4g Kw0KPj4NCj4+PiArI2RlZmluZSBBU1RfRFBfUE9XRVJfT07CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB0cnVlDQo+Pg0KPj4+ICsjZGVmaW5lIEFTVF9EUF9QT1dF Ul9PRkbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmFsc2UNCj4+DQo+ Pj4gKw0KPj4NCj4+PiArLyoNCj4+DQo+Pj4gKyAqIENSRDFbYjVdOiBEUCBNQ1UgRlcgaXMg ZXhlY3V0aW5nDQo+Pg0KPj4+ICsgKiBDUkRDW2IwXTogRFAgbGluayBzdWNjZXNzDQo+Pg0K Pj4+ICsgKiBDUkRGW2IwXTogRFAgSFBEDQo+Pg0KPj4+ICsgKiBDUkU1W2IwXTogSG9zdCBy ZWFkaW5nIEVESUQgcHJvY2VzcyBpcyBkb25lwqAgKi8NCj4+DQo+Pj4gKyNkZWZpbmUgQVNU RFBfTUNVX0ZXX0VYRUNVVElOR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQklUKDUpDQo+Pg0KPj4+ICsjZGVmaW5lIEFTVERQX0xJTktfU1VDQ0VTU8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0K Pj4NCj4+PiArI2RlZmluZSBBU1REUF9IUETCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEJJVCgwKQ0KPj4NCj4+PiArI2RlZmluZSBBU1REUF9IT1NUX0VESURfUkVBRF9ET05FwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPj4NCj4+PiArI2RlZmluZSBB U1REUF9IT1NUX0VESURfUkVBRF9ET05FX01BU0vCoMKgwqAgR0VOTUFTSygwLCAwKQ0KPj4N Cj4+PiArDQo+Pg0KPj4+ICsvKg0KPj4NCj4+PiArICogQ1JCOFtiMV06IEVuYWJsZSBWU1lO QyBvZmYNCj4+DQo+Pj4gKyAqIENSQjhbYjBdOiBFbmFibGUgSFNZTkMgb2ZmDQo+Pg0KPj4+ ICsgKi8NCj4+DQo+Pj4gKyNkZWZpbmUgQVNUX0RQTVNfVlNZTkNfT0ZGwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgx KQ0KPj4NCj4+PiArI2RlZmluZSBBU1RfRFBNU19IU1lOQ19PRkbCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDApDQo+ Pg0KPj4+ICsNCj4+DQo+Pj4gKy8qDQo+Pg0KPj4+ICsgKiBDUkRGW2I0XTogTWlycm9yIG9m IEFTVF9EUF9WSURFT19FTkFCTEUNCj4+DQo+Pj4gKyAqIFByZWNvbmRpdGlvbjrCoCBBLiB+ QVNUX0RQX1BIWV9TTEVFUMKgICYmDQo+Pg0KPj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQi4gRFBfSFBEICYmDQo+Pg0KPj4+ICsgKsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQy4gRFBfTElO S19TVUNDRVNTDQo+Pg0KPj4+ICsgKi8NCj4+DQo+Pj4gKyNkZWZpbmUgQVNURFBfTUlSUk9S X1ZJREVPX0VOQUJMRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoNCkNCj4+ DQo+Pj4gKw0KPj4NCj4+PiArI2RlZmluZSBBU1REUF9FRElEX1JFQURfUE9JTlRFUl9NQVNL wqAgR0VOTUFTSyg3LCAwKQ0KPj4NCj4+PiArI2RlZmluZSBBU1REUF9FRElEX1ZBTElEX0ZM QUdfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDAsIDApDQo+ Pg0KPj4+ICsjZGVmaW5lIEFTVERQX0VESURfUkVBRF9EQVRBX01BU0vCoMKgwqDCoMKgwqDC oCBHRU5NQVNLKDcsIDApDQo+Pg0KPj4+ICsNCj4+DQo+Pj4gKy8qDQo+Pg0KPj4+ICsgKiBB U1REUCBzZXRtb2RlIHJlZ2lzdGVyczoNCj4+DQo+Pj4gKyAqIENSRTBbNzowXTogTUlTQzAg KCgweDAwOiAxOC1icHApIG9yICgweDIwOiAyNC1icHApDQo+Pg0KPj4+ICsgKiBDUkUxWzc6 MF06IE1JU0MxIChkZWZhdWx0OiAweDAwKQ0KPj4NCj4+PiArICogQ1JFMls3OjBdOiB2aWRl byBmb3JtYXQgaW5kZXggKDB4MDAgfiAweDIwIG9yIDB4NDAgfiAweDUwKcKgICovDQo+Pg0K Pj4+ICsjZGVmaW5lIEFTVERQX01JU0MwXzI0YnBwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEJJVCg1KQ0KPj4NCj4+PiArI2RlZmluZSBBU1REUF9NSVNDMcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAwDQo+Pg0KPj4+ICsjZGVmaW5lIEFTVERQX0NMRUFSX01BU0vCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VOTUFTSyg3LCAwKQ0KPj4NCj4+PiArDQo+Pg0KPj4+ ICsvKg0KPj4NCj4+PiArICogQVNURFAgcmVzb3VsdGlvbiB0YWJsZToNCj4+DQo+Pj4gKyAq IEVYOsKgIEFTVERQX0FfQl9DOg0KPj4NCj4+PiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgQTogUmVzb2x1dGlvbg0KPj4NCj4+PiArICrCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQjogUmVmcmVzaCBSYXRlDQo+Pg0KPj4+ICsgKsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBDOiBNaXNjIGluZm9ybWF0aW9uLCBzdWNoIGFzIENWVCwgUmVk dWNlIEJsYW5rZWQNCj4+DQo+Pj4gKyAqLw0KPj4NCj4+PiArI2RlZmluZSBBU1REUF82NDB4 NDgwXzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMA0KPj4NCj4+PiArI2RlZmlu ZSBBU1REUF82NDB4NDgwXzcywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMQ0KPj4N Cj4+PiArI2RlZmluZSBBU1REUF82NDB4NDgwXzc1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMHgwMg0KPj4NCj4+PiArI2RlZmluZSBBU1REUF82NDB4NDgwXzg1wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMHgwMw0KPj4NCj4+PiArI2RlZmluZSBBU1REUF84MDB4NjAwXzU2 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwNA0KPj4NCj4+PiArI2RlZmluZSBBU1RE UF84MDB4NjAwXzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwNQ0KPj4NCj4+PiAr I2RlZmluZSBBU1REUF84MDB4NjAwXzcywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgw Ng0KPj4NCj4+PiArI2RlZmluZSBBU1REUF84MDB4NjAwXzc1wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMHgwNw0KPj4NCj4+PiArI2RlZmluZSBBU1REUF84MDB4NjAwXzg1wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOA0KPj4NCj4+PiArI2RlZmluZSBBU1REUF8xMDI0 eDc2OF82MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOQ0KPj4NCj4+PiArI2RlZmluZSBB U1REUF8xMDI0eDc2OF83MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwQQ0KPj4NCj4+PiAr I2RlZmluZSBBU1REUF8xMDI0eDc2OF83NcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwQg0K Pj4NCj4+PiArI2RlZmluZSBBU1REUF8xMDI0eDc2OF84NcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMHgwQw0KPj4NCj4+PiArI2RlZmluZSBBU1REUF8xMjgweDEwMjRfNjDCoMKgwqDCoMKg wqDCoMKgwqAgMHgwRA0KPj4NCj4+PiArI2RlZmluZSBBU1REUF8xMjgweDEwMjRfNzXCoMKg wqDCoMKgwqDCoMKgwqAgMHgwRQ0KPj4NCj4+PiArI2RlZmluZSBBU1REUF8xMjgweDEwMjRf ODXCoMKgwqDCoMKgwqDCoMKgwqAgMHgwRg0KPj4NCj4+PiArI2RlZmluZSBBU1REUF8xNjAw eDEyMDBfNjDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxMA0KPj4NCj4+PiArI2RlZmluZSBBU1RE UF8zMjB4MjQwXzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxMQ0KPj4NCj4+PiAr I2RlZmluZSBBU1REUF80MDB4MzAwXzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgx Mg0KPj4NCj4+PiArI2RlZmluZSBBU1REUF81MTJ4Mzg0XzYwwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMHgxMw0KPj4NCj4+PiArI2RlZmluZSBBU1REUF8xOTIweDEyMDBfNjDCoMKg wqDCoMKgwqDCoMKgwqAgMHgxNA0KPj4NCj4+PiArI2RlZmluZSBBU1REUF8xOTIweDEwODBf NjDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNQ0KPj4NCj4+PiArI2RlZmluZSBBU1REUF8xMjgw eDgwMF82MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNg0KPj4NCj4+PiArI2RlZmluZSBB U1REUF8xMjgweDgwMF82MF9SQsKgwqDCoMKgIDB4MTcNCj4+DQo+Pj4gKyNkZWZpbmUgQVNU RFBfMTQ0MHg5MDBfNjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTgNCj4+DQo+Pj4gKyNk ZWZpbmUgQVNURFBfMTQ0MHg5MDBfNjBfUkLCoMKgwqDCoCAweDE5DQo+Pg0KPj4+ICsjZGVm aW5lIEFTVERQXzE2ODB4MTA1MF82MMKgwqDCoMKgwqDCoMKgwqDCoCAweDFBDQo+Pg0KPj4+ ICsjZGVmaW5lIEFTVERQXzE2ODB4MTA1MF82MF9SQsKgwqAgMHgxQg0KPj4NCj4+PiArI2Rl ZmluZSBBU1REUF8xNjAweDkwMF82MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxQw0KPj4N Cj4+PiArI2RlZmluZSBBU1REUF8xNjAweDkwMF82MF9SQsKgwqDCoMKgIDB4MUQNCj4+DQo+ Pj4gKyNkZWZpbmUgQVNURFBfMTM2Nng3NjhfNjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4 MUUNCj4+DQo+Pj4gKyNkZWZpbmUgQVNURFBfMTE1Mng4NjRfNzXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MUYNCj4+DQo+Pj4gKw0KPj4NCj4+PiAgwqDCoCBpbnQgYXN0X21tX2luaXQo c3RydWN0IGFzdF9wcml2YXRlICphc3QpOw0KPj4NCj4+Pg0KPj4NCj4+PiAgwqDCoCAvKiBh c3QgcG9zdCAqLw0KPj4NCj4+PiBAQCAtMzgxLDQgKzQ4OSwxMSBAQCB2b2lkIGFzdF9pbml0 XzNyZHR4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOw0KPj4NCj4+PiAgwqDCoCAvKiBhc3Rf aTJjLmMgKi8NCj4+DQo+Pj4gIMKgwqBzdHJ1Y3QgYXN0X2kyY19jaGFuICphc3RfaTJjX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsNCj4+DQo+Pj4NCj4+DQo+Pj4gKy8qIGFz cGVlZCBEUCAqLw0KPj4NCj4+PiAraW50IGFzdF9hc3RkcF9yZWFkX2VkaWQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdTggKmVkaWRkYXRhKTsgdm9pZA0KPj4NCj4+PiArYXN0X2RwX2xh dW5jaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1OCBiUG93ZXIpOyB2b2lkDQo+Pg0KPj4+ ICthc3RfZHBfcG93ZXJfb25fb2ZmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgbm8p OyB2b2lkDQo+Pg0KPj4+ICthc3RfZHBfc2V0X29uX29mZihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBib29sIG5vKTsgdm9pZA0KPj4NCj4+PiArYXN0X2RwX3NldF9tb2RlKHN0cnVjdCBk cm1fY3J0YyAqY3J0Yywgc3RydWN0IGFzdF92Ymlvc19tb2RlX2luZm8NCj4+DQo+Pj4gKyp2 Ymlvc19tb2RlKTsNCj4+DQo+Pj4gKw0KPj4NCj4+PiAgwqDCoCAjZW5kaWYNCj4+DQo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYw0KPj4NCj4+PiBi L2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYyBpbmRleCAyMmU5ZTJkM2MuLjExMTNl ZTFjYiAxMDA2NDQNCj4+DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFp bi5jDQo+Pg0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYw0KPj4N Cj4+PiBAQCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlwKHN0 cnVjdCBkcm1fZGV2aWNlDQo+Pj4gKmRldiwgYm9vbCAqbmVlZF9wb3N0KQ0KPj4NCj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0 LT50eF9jaGlwX3R5cGUgPSBBU1RfVFhfU0lMMTY0Ow0KPj4NCj4+PiAgwqDCoCDCoMKgwqDC oMKgwqDCoCB9DQo+Pg0KPj4+DQo+Pg0KPj4+IC3CoMKgwqAgaWYgKChhc3QtPmNoaXAgPT0g QVNUMjMwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSkgew0KPj4NCj4+PiArwqDCoCBp ZiAoKGFzdC0+Y2hpcCA9PSBBU1QyMzAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI0MDApIHx8 DQo+Pj4gKyhhc3QtPmNoaXANCj4+DQo+Pj4gKz09IEFTVDI1MDApKSB7DQo+Pg0KPj4+ICDC oMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKg0KPj4NCj4+PiAgwqDCoCDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAqIE9uIEFTVDIzMDAgYW5kIDI0MDAs IGxvb2sgdGhlIGNvbmZpZ3VyYXRpb24gc2V0DQo+Pj4gYnkgdGhlIFNvQyBpbg0KPj4NCj4+ PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAqIHRoZSBTT0Mgc2Ny YXRjaCByZWdpc3RlciAjMSBiaXRzIDExOjgNCj4+PiAoaW50ZXJlc3RpbmdseSBtYXJrZWQg QEANCj4+DQo+Pj4gLTI1Niw3ICsyNTYsOCBAQCBzdGF0aWMgaW50IGFzdF9kZXRlY3RfY2hp cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPj4+IGJvb2wgKm5lZWRfcG9zdCkNCj4+DQo+ Pj4gIMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgMHgwYzoNCj4+ DQo+Pj4gIMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhc3QtPnR4X2NoaXBfdHlwZSA9IEFTVF9UWF9EUDUwMTsNCj4+DQo+Pj4gIMKgwqAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+DQo+Pj4gLcKgwqDCoCB9DQo+ Pg0KPj4+ICvCoMKgIH0gZWxzZSBpZiAoYXN0LT5jaGlwID09IEFTVDI2MDApDQo+Pg0KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBfbGF1bmNoKCZhc3QtPmJhc2UsIDApOw0K Pj4NCj4+Pg0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoCAvKiBQcmludCBzdHVmZiBm b3IgZGlhZ25vc3RpYyBwdXJwb3NlcyAqLw0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDC oCBzd2l0Y2goYXN0LT50eF9jaGlwX3R5cGUpIHsNCj4+DQo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYw0KPj4NCj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9hc3QvYXN0X21vZGUuYyBpbmRleCA0NWI1NmIzOWEuLjQ3Mjg4MjViNyAxMDA2NDQNCj4+ DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jDQo+Pg0KPj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYw0KPj4NCj4+PiBAQCAtOTg4LDIx ICs5ODgsNDEgQEAgc3RhdGljIGludCBhc3RfY3Vyc29yX3BsYW5lX2luaXQoc3RydWN0DQo+ Pj4gYXN0X3ByaXZhdGUgKmFzdCkNCj4+DQo+Pj4gIMKgwqAgc3RhdGljIHZvaWQgYXN0X2Ny dGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCBtb2RlKQ0KPj4NCj4+PiAgwqDC oCB7DQo+Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhc3RfcHJpdmF0ZSAq YXN0ID0gdG9fYXN0X3ByaXZhdGUoY3J0Yy0+ZGV2KTsNCj4+DQo+Pj4gK8KgwqAgdTggY2gg PSBBU1RfRFBNU19WU1lOQ19PRkYgfCBBU1RfRFBNU19IU1lOQ19PRkY7DQo+Pg0KPj4+DQo+ Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgIC8qIFRPRE86IE1heWJlIGNvbnRyb2wgZGlz cGxheSBzaWduYWwgZ2VuZXJhdGlvbiB3aXRoDQo+Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDC oMKgIMKgKsKgwqDCoMKgwqDCoCBTeW5jIEVuYWJsZSAoYml0IENSMTcuNykuDQo+Pg0KPj4+ ICDCoMKgIMKgwqDCoMKgwqDCoMKgIMKgKi8NCj4+DQo+Pj4gIMKgwqAgwqDCoMKgwqDCoMKg wqAgc3dpdGNoIChtb2RlKSB7DQo+Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgIGNhc2Ug RFJNX01PREVfRFBNU19PTjoNCj4+DQo+Pj4gLcKgwqDCoCBjYXNlIERSTV9NT0RFX0RQTVNf U1RBTkRCWToNCj4+DQo+Pj4gLcKgwqDCoCBjYXNlIERSTV9NT0RFX0RQTVNfU1VTUEVORDoN Cj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2so YXN0LCBBU1RfSU9fU0VRX1BPUlQswqAgMHgwMSwgMHhkZiwNCj4+PiArMCk7DQo+Pg0KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNU X0lPX0NSVENfUE9SVCwgMHhiNiwgMHhmYywNCj4+PiArMCk7DQo+Pg0KPj4+ICDCoMKgIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYXN0LT50eF9jaGlwX3R5cGUgPT0g QVNUX1RYX0RQNTAxKQ0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfZHA1MDFfdmlkZW9fb3V0cHV0KGNydGMt PmRldiwgMSk7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlm IChhc3QtPnR4X2NoaXBfdHlwZSA9PSBBU1RfVFhfQVNURFApIHsNCj4+DQo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBfcG93ZXJfb25fb2ZmKGNy dGMtPmRldiwgQVNUX0RQX1BPV0VSX09OKTsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rfd2FpdF9mb3JfdnJldHJhY2UoYXN0KTsNCj4+DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBfc2V0X29u X29mZihjcnRjLT5kZXYsIDEpOw0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0K Pj4NCj4+PiArDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfY3J0Y19sb2Fk X2x1dChhc3QsIGNydGMpOw0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYnJlYWs7DQo+Pg0KPj4+ICvCoMKgIGNhc2UgRFJNX01PREVfRFBNU19TVEFO REJZOg0KPj4NCj4+PiArwqDCoCBjYXNlIERSTV9NT0RFX0RQTVNfU1VTUEVORDoNCj4+DQo+ Pj4gIMKgwqAgwqDCoMKgwqDCoMKgwqAgY2FzZSBEUk1fTU9ERV9EUE1TX09GRjoNCj4+DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGNoID0gbW9kZTsNCj4+DQo+Pj4gIMKgwqAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhc3QtPnR4X2NoaXBfdHlwZSA9PSBB U1RfVFhfRFA1MDEpDQo+Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9kcDUwMV92aWRlb19vdXRwdXQoY3J0Yy0+ ZGV2LCAwKTsNCj4+DQo+Pj4gIMKgwqAgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqAg YnJlYWs7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChh c3QtPnR4X2NoaXBfdHlwZSA9PSBBU1RfVFhfQVNURFApIHsNCj4+DQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBfc2V0X29uX29mZihjcnRjLT5k ZXYsIDApOw0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGFzdF9kcF9wb3dlcl9vbl9vZmYoY3J0Yy0+ZGV2LCBBU1RfRFBfUE9XRVJfT0ZGKTsNCj4+ DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19T RVFfUE9SVCzCoCAweDAxLCAweGRmLA0KPj4+ICsweDIwKTsNCj4+DQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19Q T1JULCAweGI2LCAweGZjLA0KPj4+ICtjaCk7DQo+Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDC oMKgIH0NCj4+DQo+Pj4gIMKgwqAgfQ0KPj4NCj4+Pg0KPj4NCj4+PiBAQCAtMTAyNyw3ICsx MDQ3LDcgQEAgYXN0X2NydGNfaGVscGVyX21vZGVfdmFsaWQoc3RydWN0IGRybV9jcnRjDQo+ Pg0KPj4+ICpjcnRjLCBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZQ0KPj4NCj4+Pg0K Pj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKChhc3Qt PmNoaXAgPT0gQVNUMjEwMCkgfHwgKGFzdC0+Y2hpcCA9PQ0KPj4+IEFTVDIyMDApIHx8DQo+ Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoChh c3QtPmNoaXAgPT0gQVNUMjMwMCkgfHwgKGFzdC0+Y2hpcCA9PQ0KPj4+IEFTVDI0MDApIHx8 DQo+Pg0KPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCAoYXN0LT5jaGlwID09 IEFTVDI1MDApKSB7DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgKGFz dC0+Y2hpcCA9PSBBU1QyNTAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI2MDApKSB7DQo+Pg0K Pj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKChtb2RlLT5oZGlzcGxheSA9PSAxOTIwKSAmJg0KPj4+IChtb2RlLT52ZGlzcGxh eSA9PSAxMDgwKSkNCj4+DQo+Pj4gIMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE1PREVfT0s7DQo+ Pg0KPj4+DQo+Pg0KPj4+IEBAIC0xMTEwLDYgKzExMzAsNyBAQCBhc3RfY3J0Y19oZWxwZXJf YXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0Yw0KPj4+ICpjcnRjLA0KPj4NCj4+PiAgwqDC oCDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2 YXRlKGNydGMtPmRldik7DQo+Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBh c3RfY3J0Y19zdGF0ZSAqYXN0X2NydGNfc3RhdGUgPQ0KPj4+IHRvX2FzdF9jcnRjX3N0YXRl KGNydGNfc3RhdGUpOw0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYXN0 X2NydGNfc3RhdGUgKm9sZF9hc3RfY3J0Y19zdGF0ZSA9DQo+Pg0KPj4+IHRvX2FzdF9jcnRj X3N0YXRlKG9sZF9jcnRjX3N0YXRlKTsNCj4+DQo+Pj4gK8KgwqAgc3RydWN0IGFzdF92Ymlv c19tb2RlX2luZm8gKnZiaW9zX21vZGVfaW5mbyA9DQo+Pg0KPj4+ICsmYXN0X2NydGNfc3Rh dGUtPnZiaW9zX21vZGVfaW5mbzsNCj4+DQo+Pj4NCj4+DQo+Pj4gIMKgwqAgwqDCoMKgwqDC oMKgwqAgLyoNCj4+DQo+Pj4gIMKgwqAgwqDCoMKgwqDCoMKgwqAgwqAqIFRoZSBnYW1tYSBM VVQgaGFzIHRvIGJlIHJlbG9hZGVkIGFmdGVyIGNoYW5naW5nIHRoZQ0KPj4+IHByaW1hcnkg QEANCj4+DQo+Pj4gLTExMTcsNiArMTEzOCwxMCBAQCBhc3RfY3J0Y19oZWxwZXJfYXRvbWlj X2ZsdXNoKHN0cnVjdCBkcm1fY3J0Yw0KPj4+ICpjcnRjLA0KPj4NCj4+PiAgwqDCoCDCoMKg wqDCoMKgwqDCoCDCoCovDQo+Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgIGlmIChvbGRf YXN0X2NydGNfc3RhdGUtPmZvcm1hdCAhPSBhc3RfY3J0Y19zdGF0ZS0+Zm9ybWF0KQ0KPj4N Cj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X2NydGNfbG9h ZF9sdXQoYXN0LCBjcnRjKTsNCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoCAvL1NldCBBc3Bl ZWQgRGlzcGxheS1Qb3J0DQo+Pg0KPj4+ICvCoMKgIGlmIChhc3QtPnR4X2NoaXBfdHlwZSA9 PSBBU1RfVFhfQVNURFApDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBf c2V0X21vZGUoY3J0YywgdmJpb3NfbW9kZV9pbmZvKTsNCj4+DQo+Pj4gIMKgwqAgfQ0KPj4N Cj4+Pg0KPj4NCj4+PiAgwqDCoCBzdGF0aWMgdm9pZA0KPj4NCj4+PiBAQCAtMTUyNyw2ICsx NTUyLDkzIEBAIHN0YXRpYyBpbnQgYXN0X2RwNTAxX291dHB1dF9pbml0KHN0cnVjdA0KPj4+ IGFzdF9wcml2YXRlICphc3QpDQo+Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgIHJldHVy biAwOw0KPj4NCj4+PiAgwqDCoCB9DQo+Pg0KPj4+DQo+Pg0KPj4+ICsvKg0KPj4NCj4+PiAr ICogQVNQRUVEIERpc3BsYXktUG9ydCBDb25uZWN0b3INCj4+DQo+Pj4gKyAqLw0KPj4NCj4+ PiArDQo+Pg0KPj4+ICtzdGF0aWMgaW50IGFzdF9hc3RkcF9jb25uZWN0b3JfaGVscGVyX2dl dF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcg0KPj4NCj4+PiArKmNvbm5lY3Rvcikgew0K Pj4NCj4+PiArwqDCoCB2b2lkICplZGlkOw0KPj4NCj4+PiArDQo+Pg0KPj4+ICvCoMKgIGlu dCBzdWNjOw0KPj4NCj4+PiArwqDCoCBpbnQgY291bnQ7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4g K8KgwqAgZWRpZCA9IGttYWxsb2MoRURJRF9MRU5HVEgsIEdGUF9LRVJORUwpOw0KPj4NCj4+ PiArwqDCoCBpZiAoIWVkaWQpDQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3Rv IGVycl9kcm1fY29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5Ow0KPj4NCj4+PiArDQo+ Pg0KPj4+ICvCoMKgIHN1Y2MgPSBhc3RfYXN0ZHBfcmVhZF9lZGlkKGNvbm5lY3Rvci0+ZGV2 LCBlZGlkKTsNCj4+DQo+Pj4gK8KgwqAgaWYgKHN1Y2MgPCAwKQ0KPj4NCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byBlcnJfa2ZyZWU7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8Kg wqAgZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQp Ow0KPj4NCj4+PiArwqDCoCBjb3VudCA9IGRybV9hZGRfZWRpZF9tb2Rlcyhjb25uZWN0b3Is IGVkaWQpOw0KPj4NCj4+PiArwqDCoCBrZnJlZShlZGlkKTsNCj4+DQo+Pj4gKw0KPj4NCj4+ PiArwqDCoCByZXR1cm4gY291bnQ7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK2Vycl9rZnJlZToN Cj4+DQo+Pj4gK8KgwqAga2ZyZWUoZWRpZCk7DQo+Pg0KPj4+ICtlcnJfZHJtX2Nvbm5lY3Rv cl91cGRhdGVfZWRpZF9wcm9wZXJ0eToNCj4+DQo+Pj4gK8KgwqAgZHJtX2Nvbm5lY3Rvcl91 cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIE5VTEwpOw0KPj4NCj4+PiArwqDCoCBy ZXR1cm4gMDsNCj4+DQo+Pj4gK30NCj4+DQo+Pj4gKw0KPj4NCj4+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcw0KPj4+ICthc3RfYXN0ZHBfY29u bmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsNCj4+DQo+Pj4gK8KgwqAgLmdldF9tb2RlcyA9IGFz dF9hc3RkcF9jb25uZWN0b3JfaGVscGVyX2dldF9tb2RlcywNCj4+DQo+Pj4gK307DQo+Pg0K Pj4+ICsNCj4+DQo+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5j cyBhc3RfYXN0ZHBfY29ubmVjdG9yX2Z1bmNzID0NCj4+PiArew0KPj4NCj4+PiArwqDCoCAu cmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsDQo+Pg0KPj4+ICvC oMKgIC5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21v ZGVzLA0KPj4NCj4+PiArwqDCoCAuZGVzdHJveSA9IGRybV9jb25uZWN0b3JfY2xlYW51cCwN Cj4+DQo+Pj4gK8KgwqAgLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPQ0KPj4+ICtkcm1fYXRv bWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLA0KPj4NCj4+PiArwqDCoCAu YXRvbWljX2Rlc3Ryb3lfc3RhdGUgPQ0KPj4+ICtkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0 b3JfZGVzdHJveV9zdGF0ZSwNCj4+DQo+Pj4gK307DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK3N0 YXRpYyBpbnQgYXN0X2FzdGRwX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdA0KPj4NCj4+PiArZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKSB7DQo+Pg0K Pj4+ICvCoMKgIGludCByZXQ7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqAgcmV0ID0gZHJt X2Nvbm5lY3Rvcl9pbml0KGRldiwgY29ubmVjdG9yLA0KPj4+ICsmYXN0X2FzdGRwX2Nvbm5l Y3Rvcl9mdW5jcywNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KTsN Cj4+DQo+Pj4gK8KgwqAgaWYgKHJldCkNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiByZXQ7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqAgZHJtX2Nvbm5lY3Rvcl9o ZWxwZXJfYWRkKGNvbm5lY3RvciwNCj4+DQo+Pj4gKyZhc3RfYXN0ZHBfY29ubmVjdG9yX2hl bHBlcl9mdW5jcyk7DQo+Pg0KPj4+ICsNCj4+DQo+Pj4gK8KgwqAgY29ubmVjdG9yLT5pbnRl cmxhY2VfYWxsb3dlZCA9IDA7DQo+Pg0KPj4+ICvCoMKgIGNvbm5lY3Rvci0+ZG91Ymxlc2Nh bl9hbGxvd2VkID0gMDsNCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoCBjb25uZWN0b3ItPnBv bGxlZCA9IERSTV9DT05ORUNUT1JfUE9MTF9DT05ORUNUOw0KPj4NCj4+PiArDQo+Pg0KPj4+ ICvCoMKgIHJldHVybiAwOw0KPj4NCj4+PiArfQ0KPj4NCj4+PiArDQo+Pg0KPj4+ICtzdGF0 aWMgaW50IGFzdF9hc3RkcF9vdXRwdXRfaW5pdChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkg ew0KPj4NCj4+PiArwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmFzdC0+YmFzZTsN Cj4+DQo+Pj4gK8KgwqAgc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmFzdC0+Y3J0YzsNCj4+ DQo+Pj4gK8KgwqAgc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmFzdC0+b3V0cHV0 LmFzdGRwLmVuY29kZXI7DQo+Pg0KPj4+ICvCoMKgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IgPSAmYXN0LT5vdXRwdXQuYXN0ZHAuY29ubmVjdG9yOw0KPj4NCj4+PiArwqDC oCBpbnQgcmV0Ow0KPj4NCj4+PiArDQo+Pg0KPj4+ICvCoMKgIHJldCA9IGRybV9zaW1wbGVf ZW5jb2Rlcl9pbml0KGRldiwgZW5jb2RlciwNCj4+PiArRFJNX01PREVfRU5DT0RFUl9UTURT KTsNCj4+DQo+Pj4gK8KgwqAgaWYgKHJldCkNCj4+DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiByZXQ7DQo+Pg0KPj4+ICvCoMKgIGVuY29kZXItPnBvc3NpYmxlX2NydGNz ID0gZHJtX2NydGNfbWFzayhjcnRjKTsNCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoCByZXQg PSBhc3RfYXN0ZHBfY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3IpOw0KPj4NCj4+PiAr wqDCoCBpZiAocmV0KQ0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJl dDsNCj4+DQo+Pj4gKw0KPj4NCj4+PiArwqDCoCByZXQgPSBkcm1fY29ubmVjdG9yX2F0dGFj aF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7DQo+Pg0KPj4+ICvCoMKgIGlmIChyZXQp DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4NCj4+PiAr DQo+Pg0KPj4+ICvCoMKgIHJldHVybiAwOw0KPj4NCj4+PiArfQ0KPj4NCj4+PiArDQo+Pg0K Pj4+ICDCoMKgIC8qDQo+Pg0KPj4+ICDCoMKgwqAgKiBNb2RlIGNvbmZpZw0KPj4NCj4+PiAg wqDCoMKgICovDQo+Pg0KPj4+IEBAIC0xNTYzLDcgKzE2NzUsOCBAQCBpbnQgYXN0X21vZGVf Y29uZmlnX2luaXQoc3RydWN0IGFzdF9wcml2YXRlDQo+Pj4gKmFzdCkNCj4+DQo+Pj4gIMKg wqAgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqBhc3QtPmNoaXAgPT0gQVNUMjIwMCB8fA0KPj4N Cj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoGFzdC0+Y2hpcCA9PSBBU1QyMzAw IHx8DQo+Pg0KPj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgIMKgwqDCoMKgYXN0LT5jaGlwID09 IEFTVDI0MDAgfHwNCj4+DQo+Pj4gLcKgwqDCoCDCoMKgwqAgYXN0LT5jaGlwID09IEFTVDI1 MDApIHsNCj4+DQo+Pj4gK8KgwqAgwqDCoMKgIGFzdC0+Y2hpcCA9PSBBU1QyNTAwIHx8DQo+ Pg0KPj4+ICvCoMKgIMKgwqDCoCBhc3QtPmNoaXAgPT0gQVNUMjYwMCkgew0KPj4NCj4+PiAg wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2LT5tb2RlX2NvbmZpZy5t YXhfd2lkdGggPSAxOTIwOw0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gMjA0ODsNCj4+DQo+Pj4g IMKgwqAgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsNCj4+DQo+Pj4gQEAgLTE1OTQsNiArMTcw Nyw5IEBAIGludCBhc3RfbW9kZV9jb25maWdfaW5pdChzdHJ1Y3QgYXN0X3ByaXZhdGUNCj4+ PiAqYXN0KQ0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoCBjYXNlIEFTVF9UWF9EUDUw MToNCj4+DQo+Pj4gIMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9 IGFzdF9kcDUwMV9vdXRwdXRfaW5pdChhc3QpOw0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pg0KPj4+ICvCoMKgIGNhc2UgQVNUX1RY X0FTVERQOg0KPj4NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gYXN0X2FzdGRw X291dHB1dF9pbml0KGFzdCk7DQo+Pg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVh azsNCj4+DQo+Pj4gIMKgwqAgwqDCoMKgwqDCoMKgwqAgfQ0KPj4NCj4+PiAgwqDCoCDCoMKg wqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+DQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X3Bvc3QuYw0KPj4NCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X3Bvc3QuYyBpbmRleCBiNWQ5MmY2NTIuLjBhYTljZjBmYiAxMDA2NDQNCj4+DQo+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+Pg0KPj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYw0KPj4NCj4+PiBAQCAtMzc5LDcgKzM3OSw5 IEBAIHZvaWQgYXN0X3Bvc3RfZ3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+Pg0KPj4+ ICDCoMKgIMKgwqDCoMKgwqDCoMKgIGFzdF9lbmFibGVfbW1pbyhkZXYpOw0KPj4NCj4+PiAg wqDCoCDCoMKgwqDCoMKgwqDCoCBhc3Rfc2V0X2RlZl9leHRfcmVnKGRldik7DQo+Pg0KPj4+ DQo+Pg0KPj4+IC3CoMKgwqAgaWYgKGFzdC0+Y29uZmlnX21vZGUgPT0gYXN0X3VzZV9wMmEp IHsNCj4+DQo+Pj4gK8KgwqAgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyNjAwKSB7DQo+Pg0KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBfbGF1bmNoKGRldiwgMSk7DQo+Pg0KPj4+ ICvCoMKgIH0gZWxzZSBpZiAoYXN0LT5jb25maWdfbW9kZSA9PSBhc3RfdXNlX3AyYSkgew0K Pj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFzdC0+ Y2hpcCA9PSBBU1QyNTAwKQ0KPj4NCj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9wb3N0X2NoaXBfMjUwMChkZXYpOw0KPj4N Cj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAoYXN0 LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09DQo+Pj4gQVNUMjQwMCkNCj4+DQo+ Pj4NCj4+DQo+Pj4gYmFzZS1jb21taXQ6IGM1NGIzOWE1NjUyMjc1MzhjNTJlYWQyMzQ5ZWIx N2Q1NGFhZGQ2ZjcNCj4+DQo+Pj4gLS0NCj4+DQo+Pj4gMi4yNy4wDQo+Pg0KPj4+DQo+Pg0K Pj4gLS0NCj4+DQo+PiBUaG9tYXMgWmltbWVybWFubg0KPj4NCj4+IEdyYXBoaWNzIERyaXZl ciBEZXZlbG9wZXINCj4+DQo+PiBTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdt YkgNCj4+DQo+PiBNYXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJlcmcsIEdlcm1hbnkNCj4+ DQo+PiAoSFJCIDM2ODA5LCBBRyBOw7xybmJlcmcpDQo+Pg0KPj4gR2VzY2jDpGZ0c2bDvGhy ZXI6IEl2byBUb3Rldg0KPj4NCj4gDQo+IC0tDQo+IFRob21hcyBaaW1tZXJtYW5uDQo+IEdy YXBoaWNzIERyaXZlciBEZXZlbG9wZXINCj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2Vy bWFueSBHbWJIDQo+IE1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2VybWFueQ0K PiAoSFJCIDM2ODA5LCBBRyBOw7xybmJlcmcpDQo+IEdlc2Now6RmdHNmw7xocmVyOiBJdm8g VG90ZXYNCg0KLS0gDQpUaG9tYXMgWmltbWVybWFubg0KR3JhcGhpY3MgRHJpdmVyIERldmVs b3Blcg0KU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJIDQpNYXhmZWxkc3Ry LiA1LCA5MDQwOSBOw7xybmJlcmcsIEdlcm1hbnkNCihIUkIgMzY4MDksIEFHIE7DvHJuYmVy ZykNCkdlc2Now6RmdHNmw7xocmVyOiBJdm8gVG90ZXYNCg== --------------vwTk7KZM0aUsUf0ZLQslBywK-- --------------0KhABT8f901b0javwNOmwnBs Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmJ+MQoFAwAAAAAACgkQlh/E3EQov+AE Xw//cUqUnP3BSe1IsZu3cEiW5/16DTWffzRH29pvbfprwDGmw8oI9fhiBgIBl3OLbTqFhxceextq POCER+1Y3FWkP3KevzCmHyJVt6BbFEQzDxRlRxg2KoRO4xzinuA1UpVEqAouKV6Jx51pmYuNgY3C AS2gPbAL9PWshCAPk+NBvQYkHz8GyO98uGRRrTSXAOIu2Ey0rZYKWmZEBwXV1PnOsQVDn5FX5iRz n2Lx6zuSF3ZcYXYZ0D2HJBrlW6J5ukdFCqJxFT82Qbz3gTSMqXp4FaKIvnDUw5Y8uVmmsZMcSCXP rCTYhox3l+iXeqI9z7Kid+rxlIptD+GEZuwIBFKyxjSAGVn7u7mPB32kY2iXsVmE/7yBwalcW4Ql LTU6Dd8Of98YooACqvMQOQps5DZ9uYQZXxWJhoFIO+hwhDfxAYHp2EfyrMOnRpmaohIa9b+hyiP8 dvdM6jlq8K6ACK3l8pLhGtKOqH2Iw30H0N99MO423yzdkNXB73PXRov6eoMUe+wpnqA+ch1Z+axQ x/Y0yBMadco+LlLDyY1J/7Dp2mVbskTKjV04HAgjQTh2yS54XEHCG35LVfknPKZKex/HLjeXS4wP Hv9KwM4eobSTcA6ptN6vXkzoVzI6YmOmbSJPT9MznXEksA5Ci0tKG5JgazBLuRUkiBQhKMFnNofA w+A= =r1oX -----END PGP SIGNATURE----- --------------0KhABT8f901b0javwNOmwnBs--