From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 52579C433E7 for ; Mon, 19 Oct 2020 13:41:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B8E6A222EA for ; Mon, 19 Oct 2020 13:41:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=st.com header.i=@st.com header.b="QNJq680W" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728473AbgJSNlm (ORCPT ); Mon, 19 Oct 2020 09:41:42 -0400 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:53514 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727297AbgJSNlk (ORCPT ); Mon, 19 Oct 2020 09:41:40 -0400 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 09JDXm1D019143; Mon, 19 Oct 2020 15:41:15 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=STMicroelectronics; bh=qiDSJYG4JrUyHoJV+yGD2ruYz4GvgF/R6IP10ItzI/4=; b=QNJq680Wub6T84E/WWAdoSLnq07KwgmKSM99/Gd3WZ95LwTnyyoc+HslJZxA4OjPSHGC z9ClmIGwqXLwCz0K55BAXGDAakbgnuUl26hUJ2tZiHQq21LQHoSnn8DYy2pvgUZ2xE5g KDVcL07hoZTYaBJd88dBzQL3IE/FcXLUpqt5Fksw6eE5rF33PuXvTDTplvb84KUZBf/F Jh5uDEkGtXf+1QVvoFggHn+7hgiRqaEMYE4cpJngZE/7B0ipbPQn0uR6bZK+RWYj6LXF uhfCoOR47wed/Hgzv5Hb9qyHDzK4TXja7owo6O5TIx+CQZAcX7Xcp7AtnTH4m7UxE3X4 CA== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 347qgfus3h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 19 Oct 2020 15:41:15 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id E821C100034; Mon, 19 Oct 2020 15:41:14 +0200 (CEST) Received: from Webmail-eu.st.com (sfhdag1node3.st.com [10.75.127.3]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id C7A8A2CE4DB; Mon, 19 Oct 2020 15:41:14 +0200 (CEST) Received: from SFHDAG1NODE1.st.com (10.75.127.1) by SFHDAG1NODE3.st.com (10.75.127.3) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 19 Oct 2020 15:40:26 +0200 Received: from SFHDAG1NODE1.st.com ([fe80::91:9840:ca1f:420f]) by SFHDAG1NODE1.st.com ([fe80::91:9840:ca1f:420f%20]) with mapi id 15.00.1473.003; Mon, 19 Oct 2020 15:40:26 +0200 From: Hugues FRUCHET To: Jacopo Mondi , Sakari Ailus CC: Maxime Ripard , Steve Longerbeam , Hans Verkuil , "Mauro Carvalho Chehab" , "linux-media@vger.kernel.org" , "linux-stm32@st-md-mailman.stormreply.com" , Benjamin Gaignard , Laura Nao , "Sam Bobrowicz" Subject: Re: [PATCH v2] media: ov5640: add support of V4L2_CID_LINK_FREQ Thread-Topic: [PATCH v2] media: ov5640: add support of V4L2_CID_LINK_FREQ Thread-Index: AQHVLQJlOjCpwYSvfEindPL7LJBZs6a3ZHgAgEyO9wCAAekzgIAUdQGAgodtnYA= Date: Mon, 19 Oct 2020 13:40:26 +0000 Message-ID: References: <1561640224-24062-1-git-send-email-hugues.fruchet@st.com> <20190627160518.ylc2xfvqdw5w77xc@paasikivi.fi.intel.com> <5b43d59c-92d0-7234-71aa-b283e7462a84@st.com> <20190820091311.GB5123@paasikivi.fi.intel.com> <20190821142407.facveek5omjdide6@uno.localdomain> <3a54de53-6a9b-f0e9-f4bb-77ccbb1f8ede@st.com> In-Reply-To: <3a54de53-6a9b-f0e9-f4bb-77ccbb1f8ede@st.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.75.127.45] Content-Type: text/plain; charset="utf-8" Content-ID: <1649DD0D82353C41BC8404799A20FE8F@st.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235,18.0.687 definitions=2020-10-19_06:2020-10-16,2020-10-19 signatures=0 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org SGkgSmFjb3BvLCBhbGwsDQoNCkJhY2sgb24gdGhpcyBzdWJqZWN0IHJlY2VudGx5LCBJJ3ZlIGZv dW5kIGludGVyZXN0aW5nIHRoaW5ncyBhcm91bmQgDQpyZWdpc3RlciAweDQ4MzcgUENMSyBQRVJJ T0QgdGhhbmtzIHRvIFNhbXVlbCBCb2Jyb3dpY3ogd29yayBvbiBQTEwgDQpzZXR0aW5ncyBbMV0s IGJ1dCAweDQ4MzcgcmVnaXN0ZXIgdmFsdWUgY29tcHV0YXRpb24gZGlmZmVycyBmcm9tIHdoYXQg DQpJJ3ZlIHVuZGVyc3Rvb2QvbWVhc3VyZWQuDQoNClRoZSBPVjU2NDAgUENMS19QRVJJT0QgcmVn aXN0ZXIgdmFsdWUgbXVzdCBiZSBpbiBsaW5lIHdpdGggdGhlDQpTVCBNSVBJRDAyIENTSS0yIHJl Y2VpdmVyIENMT0NLX0xBTkVfMSByZWdpc3Rlciwgb3RoZXJ3aXNlIHJlY2VwdGlvbnMgDQppc3N1 ZXMgYXJlIGVuY291bnRlcmVkIGhhcyBzaG93biBpbiBteSBwcmV2aW91cyBtYWlsLg0KDQpDb25m aWd1cmluZyB0aG9zZSAyIHJlZ2lzdGVycyBhY2NvcmRpbmcgdG8gbWVhc3VyZWQgTUlQSSBjbG9j ayBmcmVxdWVuY3kNCmFsbG93cyB0byBjb3ZlciBhbG1vc3QgYWxsIHJlc29sdXRpb25zL2Zvcm1h dHMgKFJHQjU2NSwgWVVWNDIyLCBKUEVHKS4NCkkndmUgYWxzbyBtZWFzdXJlZCB3aXRoIG9zY2ls bG9zY29wZSB0aGUgTUlQSSBjbG9jay1sYW5lIGZyZXF1ZW5jeSBhbmQgDQp2ZXJpZmllZCB0aGF0 IHRoaXMgaXMgd2VsbCBtYXRjaGluZyBjb21wdXRlZCBvbmUgWzJdLg0KUGxlYXNlIG5vdGUgdGhh dCBkdWUgdG8gcGxhdGZvcm0gbGltaXRhdGlvbiwgSSBjb3VsZCBub3QgdGVzdCBsaW5rIA0KZnJl cXVlbmN5IGFib3ZlIDcyMHBAMTVmcHMsIHNvIGFkZGl0aW9uYWwgdGVzdHMgYXJlIG5lZWRlZCB3 aXRoIHBsYXRmb3JtIA0KdGhhdCBjb3VsZCBoYW5kbGUgNU1wQDE1ZnBzIChPVjU2NDAgbGltaXQp Lg0KDQpJbiB0ZXJtIG9mIGNvZGUsIHRoaXMgbWVhbjoNCg0KdjRsMl9jdHJsX25ld19pbnRfbWVu dShoZGwsIG9wcywgVjRMMl9DSURfTElOS19GUkVRLA0KICAgICAgICAJCSAgMCwgMCwgbGlua19m cmVxX21lbnVfaXRlbXMpOw0KDQpvdjU2NDBfc2V0X21pcGlfcGNsayhyYXRlKQ0Kew0KICAgbWlw aV9zY2xrID0gb3Y1NjQwX2NhbGNfc3lzX2NsayhzZW5zb3IsIHJhdGUsICZwcmVkaXYsICZtdWx0 LCAmc3lzZGl2KTsNCiAgIGxpbmtfZnJlcSA9IG1pcGlfc2NsayAvIDIgLyBtaXBpX2RpdjsgLyog dGhlIENTSS0yIGNsb2NrLWxhbmUgDQpmcmVxdWVuY3ksIG1lYXN1cmVtZW50cyBhcmUgbWF0Y2hp bmcgKi8NCg0KICAgX3BjbGtfcGVyaW9kID0gKHU4KSAoMjAwMDAwMDAwMFVMIC8gbGlua19mcmVx KTsvKiBleHByZXNzZWQgaW4gbnMgYW5kIA0Kd2l0aCAxLWJpdCBkZWNpbWFsOiAweDE9MC41bnMs IDB4Mj0xbnMsIDB4Mz0xLjVucyBhbmQgc28gb24uLi4gKi8NCiAgIG92NTY0MF93cml0ZV9yZWco c2Vuc29yLCBPVjU2NDBfUkVHX1BDTEtfUEVSSU9ELCBfcGNsa19wZXJpb2QpOw0KDQogICBsaW5r X2ZyZXFfbWVudV9pdGVtc1swXSA9IGxpbmtfZnJlcTsvKiBDdXJyZW50bHkgYSBoYWNrIHRvIGlu Zm9ybSANCnJlY2VpdmVyIGFib3V0IHRoZSBkeW5hbWljYWxseSBjb21wdXRlZCBjbG9jayBmcmVx dWVuY3ksIEkgZG9uJ3Qga25vdyANCnlldCBob3cgdG8gaGFuZGxlIHRoaXMgY29ycmVjdGx5LCBw bGVhc2UgYWR2aXNlLi4uICovDQoNCiAgIC4uLg0KfQ0KDQpBcyBleHBsYWluZWQgaW4gY29tbWVu dCwgSSBtaXNzIGEgVjRMMiB3YXkgdG8gc2V0IGR5bmFtaWNhbGx5IA0KVjRMMl9DSURfTElOS19G UkVRIGluIG9yZGVyIHRvIHByb3Bvc2UgYSBuZXcgcGF0Y2hzZXQuDQoNCg0KWzFdIA0KaHR0cHM6 Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL3BhdGNoLzE1Mzk3OTc1 MDgtMTI3NjI5LTEtZ2l0LXNlbmQtZW1haWwtc2FtQGVsaXRlLWVtYmVkZGVkLmNvbS8NCg0KWzJd IG1lYXN1cmUgb2YgdGhlIENTSS0yIGNsb2NrIGZyZXF1ZW5jeSwgdGVzdGVkIHdpdGggSlBFRyAo ZWFzaWVyIHRvIA0KY2hlY2sgdGhhdCBjYXB0dXJlIGlzIGZpbmUpIGFuZCB2YXJpb3VzIHJlc29s dXRpb25zOg0KDQoqKioqKioqKioqKioqKioqDQoqKiogIFFRVkdBICAqKioqDQoqKioqKioqKioq KioqKioqDQoqIEpQRUcgUVFWR0FAMTVmcHMNCnY0bDItY3RsIC0tc2V0LWN0cmw9dGVzdF9wYXR0 ZXJuPTE7djRsMi1jdGwgLS1zZXQtcGFybT0xNTt2NGwyLWN0bCANCi0tc2V0LWZtdC12aWRlbz13 aWR0aD0xNjAsaGVpZ2h0PTEyMCxwaXhlbGZvcm1hdD1KUEVHIC0tc3RyZWFtLW1tYXAgDQotLXN0 cmVhbS1jb3VudD0tMQ0KWyAgMzcxLjQ1OTYwN10gb3Y1NjQwIDEtMDAzYzogQmFuZHdpZHRoIFBl ciBMYW5lPTIyMzg3OTY4MCwgMTYweDEyMCBmcm9tIA0KMTg5Nng5ODQNClsgIDM3MS40NjU1MTZd IG92NTY0MCAxLTAwM2M6IG1pcGlfc2Nsaz0yMjQwMDAwMDAsIG1pcGlfZGl2PTIsIHByZWRpdj0z LCANCm11bHQ9MjgsIHN5c2Rpdj0xDQpbICAzNzEuNDczNzI3XSBvdjU2NDAgMS0wMDNjOiBsaW5r IGZyZXE9NTYwMDAwMDAgSHoNClsgIDM3MS40Nzg1MjldIG92NTY0MCAxLTAwM2M6IFBDTEsgUEVS SU9EIDB4NDgzNz0weDIzDQpbICAzNzEuNTM4MTkzXSBzdC1taXBpZDAyIDItMDAxNDogY2xrX2xh bmVfcmVnMT0weDhkDQo8PDw8PDw8PDw8PDw8PDw8PCAxNS4wOSBmcHMNCjw8PDw8PDw8PDw8PDw8 PCAxNS4wNCBmcHMNCjw8PDw8PDw8PDw8PDw8PCAxNS4wMyBmcHMNCjw8PDw8PDw8PDw8PDw8PCAx NS4wMiBmcHMNCjw8PDw8PDw8PDw8PDw8PCAxNS4wMSBmcHMNCkNsb2NrLWxhbmUgZnJlcXVlbmN5 IG1lYXN1cmVkIGF0ICMxOG5zICg1NS41TUh6KQ0KDQoNCiogUkdCNTY1IFFRVkdBQDE1ZnBzDQp2 NGwyLWN0bCAtLXNldC1jdHJsPXRlc3RfcGF0dGVybj0xO3Y0bDItY3RsIC0tc2V0LXBhcm09MTU7 djRsMi1jdGwgDQotLXNldC1mbXQtdmlkZW89d2lkdGg9MTYwLGhlaWdodD0xMjAscGl4ZWxmb3Jt YXQ9UkdCUCAtLXN0cmVhbS1tbWFwIA0KLS1zdHJlYW0tY291bnQ9LTENClsgMTIyOS40MjIwNzld IHN0LW1pcGlkMDIgMi0wMDE0OiBjbGtfbGFuZV9yZWcxPTB4OGQNClsgMTIyOS40MzE3NThdIG92 NTY0MCAxLTAwM2M6IEJhbmR3aWR0aCBQZXIgTGFuZT0yMjM4Nzk2ODAsIDE2MHgxMjAgZnJvbSAN CjE4OTZ4OTg0DQpbIDEyMjkuNDM3OTA1XSBvdjU2NDAgMS0wMDNjOiBtaXBpX3NjbGs9MjI0MDAw MDAwLCBtaXBpX2Rpdj0yLCBwcmVkaXY9MywgDQptdWx0PTI4LCBzeXNkaXY9MQ0KWyAxMjI5LjQ0 NTYyMF0gb3Y1NjQwIDEtMDAzYzogbGluayBmcmVxPTU2MDAwMDAwIEh6DQpbIDEyMjkuNDUwMzk3 XSBvdjU2NDAgMS0wMDNjOiBQQ0xLIFBFUklPRCAweDQ4Mzc9MHgyMw0KPDw8PDw8PDw8PDw8PDw8 PDwgMTUuMDkgZnBzDQo8PDw8PDw8PDw8PDw8PDwgMTUuMDQgZnBzDQo8PDw8PDw8PDw8PDw8PCAx NC43MCBmcHMNCjw8PDw8PDw8PDw8PDw8PCAxNC43NyBmcHMNCk1lYXN1cmVkICMxOG5zICg1NS41 TUh6KQ0KDQoNCioqKioqKioqKioqKioqDQoqKiogIFZHQSAgKioqKg0KKioqKioqKioqKioqKioN CiogSlBFRyBWR0FAMTVmcHMNCnY0bDItY3RsIC0tc2V0LWN0cmw9dGVzdF9wYXR0ZXJuPTE7djRs Mi1jdGwgLS1zZXQtcGFybT0xNTt2NGwyLWN0bCANCi0tc2V0LWZtdC12aWRlbz13aWR0aD02NDAs aGVpZ2h0PTQ4MCxwaXhlbGZvcm1hdD1KUEVHIC0tc3RyZWFtLW1tYXAgDQotLXN0cmVhbS1jb3Vu dD0tMQ0KWyAxMTA1LjYyMTg4NF0gb3Y1NjQwIDEtMDAzYzogQmFuZHdpZHRoIFBlciBMYW5lPTI0 NTcyMTYwMCwgNjQweDQ4MCBmcm9tIA0KMTg5NngxMDgwDQpbIDExMDUuNjI3OTI3XSBvdjU2NDAg MS0wMDNjOiBtaXBpX3NjbGs9MjQ2MDAwMDAwLCBtaXBpX2Rpdj0yLCBwcmVkaXY9MywgDQptdWx0 PTEyMywgc3lzZGl2PTQNClsgMTEwNS42NDEyNzNdIG92NTY0MCAxLTAwM2M6IGxpbmsgZnJlcT02 MTUwMDAwMCBIeg0KWyAxMTA1LjY0Njc4OV0gb3Y1NjQwIDEtMDAzYzogUENMSyBQRVJJT0QgMHg0 ODM3PTB4NDANClsgMTEwNS43MDk2MjZdIHN0LW1pcGlkMDIgMi0wMDE0OiBjbGtfbGFuZV9yZWcx PTB4ODENCjw8PDw8PDw8PDw8PDw8PDw8IDE1LjA5IGZwcw0KPDw8PDw8PDw8PDw8PDw8IDE1LjA0 IGZwcw0KPDw8PDw8PDw8PDw8PDw8IDE1LjAzIGZwcw0KPDw8PDw8PDw8PDw8PDw8IDE1LjAyIGZw cw0KPDw8PDw8PDw8PDw8PDw8IDE1LjAxIGZwcw0KDQpNZWFzdXJlZCAjMTZucyAoNjIuNU1IeikN Cg0KDQoqIEpQRUcgVkdBQDMwZnBzDQp2NGwyLWN0bCAtLXNldC1jdHJsPXRlc3RfcGF0dGVybj0x O3Y0bDItY3RsIC0tc2V0LXBhcm09MzA7djRsMi1jdGwgDQotLXNldC1mbXQtdmlkZW89d2lkdGg9 NjQwLGhlaWdodD00ODAscGl4ZWxmb3JtYXQ9SlBFRyAtLXN0cmVhbS1tbWFwIA0KLS1zdHJlYW0t Y291bnQ9LTENClsgMTE0NC41MzkwODJdIG92NTY0MCAxLTAwM2M6IEJhbmR3aWR0aCBQZXIgTGFu ZT00OTE0NDMyMDAsIDY0MHg0ODAgZnJvbSANCjE4OTZ4MTA4MA0KWyAxMTQ0LjU0NTE0M10gb3Y1 NjQwIDEtMDAzYzogbWlwaV9zY2xrPTQ5MjAwMDAwMCwgbWlwaV9kaXY9MiwgcHJlZGl2PTMsIA0K bXVsdD0xMjMsIHN5c2Rpdj0yDQpbIDExNDQuNTU4NzU2XSBvdjU2NDAgMS0wMDNjOiBsaW5rIGZy ZXE9MTIzMDAwMDAwIEh6DQpbIDExNDQuNTYyMDEyXSBvdjU2NDAgMS0wMDNjOiBQQ0xLIFBFUklP RCAweDQ4Mzc9MHgyMA0KWyAxMTQ0LjYyMzg5NV0gc3QtbWlwaWQwMiAyLTAwMTQ6IGNsa19sYW5l X3JlZzE9MHg0MQ0KPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwgMzAuMDkgZnBzDQo8 PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwgMzAuMDQgZnBzDQo8PDw8PDw8PDw8PDw8PDw8 PDw8PDw8PDw8PDw8PDwgMzAuMTMgZnBzDQoNCk1lYXN1cmVkICM4bnMgKDEyNU1IeikNCg0KDQoq KioqKioqKioqKioqKioqKioqDQoqKiogIDEwMjR4NzY4ICAqKioqDQoqKioqKioqKioqKioqKioq KioqDQoqIEpQRUcgMTAyNHg3NjhAMTVmcHMNCnY0bDItY3RsIC0tc2V0LWN0cmw9dGVzdF9wYXR0 ZXJuPTE7djRsMi1jdGwgLS1zZXQtcGFybT0xNTt2NGwyLWN0bCANCi0tc2V0LWZtdC12aWRlbz13 aWR0aD0xMDI0LGhlaWdodD03NjgscGl4ZWxmb3JtYXQ9SlBFRyAtLXN0cmVhbS1tbWFwIA0KLS1z dHJlYW0tY291bnQ9LTENCjw8PDw8PDw8PDw8PDw8PDw8IDE1LjA5IGZwcw0KPDw8PDw8PDw8PDw8 PDw8IDE1LjA0IGZwcw0KPDw8PDw8PDw8PDw8PDw8IDE1LjAzIGZwcw0KPDw8PDw8PDw8PDw8PDw8 IDE1LjAyIGZwcw0KDQpNZWFzdXJlZCAjMTZucyAoNjIuNU1IeikNCg0KDQoqIEpQRUcgMTAyNHg3 NjhAMzBmcHMNCnY0bDItY3RsIC0tc2V0LWN0cmw9dGVzdF9wYXR0ZXJuPTE7djRsMi1jdGwgLS1z ZXQtcGFybT0zMDt2NGwyLWN0bCANCi0tc2V0LWZtdC12aWRlbz13aWR0aD0xMDI0LGhlaWdodD03 NjgscGl4ZWxmb3JtYXQ9SlBFRyAtLXN0cmVhbS1tbWFwIA0KLS1zdHJlYW0tY291bnQ9LTENClsg MTIxOC42MzIwNjFdIG92NTY0MCAxLTAwM2M6IEJhbmR3aWR0aCBQZXIgTGFuZT00OTE0NDMyMDAs IDEwMjR4NzY4IA0KZnJvbSAxODk2eDEwODANClsgMTIxOC42MzgyMTZdIG92NTY0MCAxLTAwM2M6 IG1pcGlfc2Nsaz00OTIwMDAwMDAsIG1pcGlfZGl2PTIsIHByZWRpdj0zLCANCm11bHQ9MTIzLCBz eXNkaXY9Mg0KWyAxMjE4LjY1MTc4OF0gb3Y1NjQwIDEtMDAzYzogbGluayBmcmVxPTEyMzAwMDAw MCBIeg0KWyAxMjE4LjY1NTM0NV0gb3Y1NjQwIDEtMDAzYzogUENMSyBQRVJJT0QgMHg0ODM3PTB4 MjANClsgMTIxOC43MjQxNDldIHN0LW1pcGlkMDIgMi0wMDE0OiBjbGtfbGFuZV9yZWcxPTB4NDEN Cjw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8IDMwLjA5IGZwcw0KPDw8PDw8PDw8PDw8 PDw8PDw8PDw8PDw8PDw8PDw8IDMwLjA0IGZwcw0KPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8 PDw8IDMwLjEzIGZwcw0KPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8IDMwLjA5IGZwcw0K TWVhc3VyZWQgIzhucyAoMTI1TUh6KQ0KDQoNCioqKioqKioqKioqKioqKg0KKioqICA3MjBwICAq KioqDQoqKioqKioqKioqKioqKioNCiogSlBFRyA3MjBwQDE1ZnBzDQp2NGwyLWN0bCAtLXNldC1j dHJsPXRlc3RfcGF0dGVybj0xO3Y0bDItY3RsIC0tc2V0LXBhcm09MTU7djRsMi1jdGwgDQotLXNl dC1mbXQtdmlkZW89d2lkdGg9MTI4MCxoZWlnaHQ9NzIwLHBpeGVsZm9ybWF0PUpQRUcgLS1zdHJl YW0tbW1hcCANCi0tc3RyZWFtLWNvdW50PS0xDQpbIDc3ODEuMjMyNDk4XSBvdjU2NDAgMS0wMDNj OiBCYW5kd2lkdGggUGVyIExhbmU9MTY4MDA5NjAwLCAxMjgweDcyMCANCmZyb20gMTg5Mng3NDAN ClsgNzc4MS4yMzg1NTRdIG92NTY0MCAxLTAwM2M6IG1pcGlfc2Nsaz0xNjk2MDAwMDAsIG1pcGlf ZGl2PTEsIHByZWRpdj0zLCANCm11bHQ9MTA2LCBzeXNkaXY9NQ0KWyA3NzgxLjI0NzExN10gb3Y1 NjQwIDEtMDAzYzogbGluayBmcmVxPTg0ODAwMDAwIEh6DQpbIDc3ODEuMjUxMTE2XSBvdjU2NDAg MS0wMDNjOiBQQ0xLIFBFUklPRCAweDQ4Mzc9MHgxNw0KWyA3NzgxLjMxNjk4MF0gc3QtbWlwaWQw MiAyLTAwMTQ6IGNsa19sYW5lX3JlZzE9MHg1ZA0KDQpNZWFzdXJlZCAjMTJucyAoODNNSHopDQoN CiogSlBFRyA3MjBwQDMwZnBzDQp2NGwyLWN0bCAtLXNldC1jdHJsPXRlc3RfcGF0dGVybj0xO3Y0 bDItY3RsIC0tc2V0LXBhcm09MzA7djRsMi1jdGwgDQotLXNldC1mbXQtdmlkZW89d2lkdGg9MTI4 MCxoZWlnaHQ9NzIwLHBpeGVsZm9ybWF0PUpQRUcgLS1zdHJlYW0tbW1hcCANCi0tc3RyZWFtLWNv dW50PS0xDQpbICA1MTUuNTQ4NTE5XSBvdjU2NDAgMS0wMDNjOiBCYW5kd2lkdGggUGVyIExhbmU9 MzM2MDE5MjAwLCAxMjgweDcyMCANCmZyb20gMTg5Mng3NDANClsgIDUxNS41NTQ2NDZdIG92NTY0 MCAxLTAwM2M6IG1pcGlfc2Nsaz0zNDAwMDAwMDAsIG1pcGlfZGl2PTEsIHByZWRpdj0zLCANCm11 bHQ9ODUsIHN5c2Rpdj0yDQpbICA1MTUuNTYyNDA2XSBvdjU2NDAgMS0wMDNjOiBsaW5rIGZyZXE9 MTcwMDAwMDAwIEh6DQpbICA1MTUuNTc0Mzc2XSBvdjU2NDAgMS0wMDNjOiBQQ0xLIFBFUklPRCAw eDQ4Mzc9MHhiDQpbICA1MTUuNjM5ODYyXSBzdC1taXBpZDAyIDItMDAxNDogY2xrX2xhbmVfcmVn MT0weDJkDQo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PCAzMC4zOSBmcHMNCjw8PDw8 PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PCAzMC41MCBmcHMNCjw8PDw8PDw8PDw8PDw8PDw8PDw8 PDw8PDw8PDw8PDwgMzAuMzYgZnBzDQo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwgMzAu NDIgZnBzDQo8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwgMzAuNDAgZnBzDQpNZWFzdXJl ZCAjNm5zICgxNjZNSHopDQo9PT4gMzBmcHMgYnV0IGltYWdlIGFydGVmYWN0cyAob3V0IG9mIE1Q MSBjYXBhYmlsaXRpZXMpDQoNCg0KKioqKioqKioqKioqKioqKg0KKioqICAxMDgwcCAgKioqKg0K KioqKioqKioqKioqKioqKg0KKiBKUEVHIEhEQDE1ZnBzDQp2NGwyLWN0bCAtLXNldC1jdHJsPXRl c3RfcGF0dGVybj0xO3Y0bDItY3RsIC0tc2V0LXBhcm09MTU7djRsMi1jdGwgDQotLXNldC1mbXQt dmlkZW89d2lkdGg9MTkyMCxoZWlnaHQ9MTA4MCxwaXhlbGZvcm1hdD1KUEVHIC0tc3RyZWFtLW1t YXAgDQotLXN0cmVhbS1jb3VudD0tMQ0KWyAxOTk4LjI2NjkxNV0gb3Y1NjQwIDEtMDAzYzogQmFu ZHdpZHRoIFBlciBMYW5lPTMzNjAwMDAwMCwgMTkyMHgxMDgwIA0KZnJvbSAyNTAweDExMjANClsg MTk5OC4yNzMwNDBdIG92NTY0MCAxLTAwM2M6IG1pcGlfc2Nsaz0zMzYwMDAwMDAsIG1pcGlfZGl2 PTEsIHByZWRpdj0zLCANCm11bHQ9NDIsIHN5c2Rpdj0xDQpbIDE5OTguMjgwOTg3XSBvdjU2NDAg MS0wMDNjOiBsaW5rIGZyZXE9MTY4MDAwMDAwIEh6DQpbIDE5OTguMjg2MTQyXSBvdjU2NDAgMS0w MDNjOiBQQ0xLIFBFUklPRCAweDQ4Mzc9MHhiDQpbIDE5OTguMzgwMjA2XSBzdC1taXBpZDAyIDIt MDAxNDogY2xrX2xhbmVfcmVnMT0weDJkDQo8PDwgMS44OCBmcHMNCjw8IDEuODcgZnBzDQo8PCAx Ljg4IGZwcw0KPDwgMS44NyBmcHMNCjw8IDEuODcgZnBzDQpNZWFzdXJlZCAjNm5zICgxNjZNSHop DQoNCiogSlBFRyBIREAzMGZwcw0KdjRsMi1jdGwgLS1zZXQtY3RybD10ZXN0X3BhdHRlcm49MTt2 NGwyLWN0bCAtLXNldC1wYXJtPTMwO3Y0bDItY3RsIA0KLS1zZXQtZm10LXZpZGVvPXdpZHRoPTE5 MjAsaGVpZ2h0PTEwODAscGl4ZWxmb3JtYXQ9SlBFRyAtLXN0cmVhbS1tbWFwIA0KLS1zdHJlYW0t Y291bnQ9LTENClsgMjE5Ni45ODE3NjddIG92NTY0MCAxLTAwM2M6IEJhbmR3aWR0aCBQZXIgTGFu ZT02NzIwMDAwMDAsIDE5MjB4MTA4MCANCmZyb20gMjUwMHgxMTIwDQpbIDIxOTYuOTg3ODgyXSBv djU2NDAgMS0wMDNjOiBtaXBpX3NjbGs9NjcyMDAwMDAwLCBtaXBpX2Rpdj0xLCBwcmVkaXY9Mywg DQptdWx0PTg0LCBzeXNkaXY9MQ0KWyAyMTk2Ljk5NjIyNV0gb3Y1NjQwIDEtMDAzYzogbGluayBm cmVxPTMzNjAwMDAwMCBIeg0KWyAyMTk3LjAwMDU1M10gb3Y1NjQwIDEtMDAzYzogUENMSyBQRVJJ T0QgMHg0ODM3PTB4NQ0KWyAyMTk3LjA5NzI0NF0gc3QtbWlwaWQwMiAyLTAwMTQ6IGNsa19sYW5l X3JlZzE9MHgxNQ0KTWVhc3VyZWQgIzNucyAoMzMzTUh6KQ0KDQo9PT4gbm8gaW1hZ2VzIGJ1dCBv dXQgb2YgTVAxIGNhcGFiaWxpdGllcw0KDQoNCioqKioqKioqKioqKioqDQoqKiogIDVNcCAgKioq Kg0KKioqKioqKioqKioqKioNCiogSlBFRyA1TXBAMTVmcHMNCnY0bDItY3RsIC0tc2V0LWN0cmw9 dGVzdF9wYXR0ZXJuPTE7djRsMi1jdGwgLS1zZXQtcGFybT0xNTt2NGwyLWN0bCANCi0tc2V0LWZt dC12aWRlbz13aWR0aD0yNTkyLGhlaWdodD0xOTQ0LHBpeGVsZm9ybWF0PUpQRUcgLS1zdHJlYW0t bW1hcCANCi0tc3RyZWFtLWNvdW50PS0xDQoNClsgMjQ3OS4yMDM0NTddIG92NTY0MCAxLTAwM2M6 IEJhbmR3aWR0aCBQZXIgTGFuZT02NzE2MzkwNDAsIDI1OTJ4MTk0NCANCmZyb20gMjg0NHgxOTY4 DQpbIDI0NzkuMjA5NjQ3XSBvdjU2NDAgMS0wMDNjOiBtaXBpX3NjbGs9NjcyMDAwMDAwLCBtaXBp X2Rpdj0xLCBwcmVkaXY9MywgDQptdWx0PTg0LCBzeXNkaXY9MQ0KWyAyNDc5LjIxNzk2MV0gb3Y1 NjQwIDEtMDAzYzogbGluayBmcmVxPTMzNjAwMDAwMCBIeg0KWyAyNDc5LjIyMjI0MF0gb3Y1NjQw IDEtMDAzYzogUENMSyBQRVJJT0QgMHg0ODM3PTB4NQ0KWyAyNDc5LjM4ODQwMF0gc3QtbWlwaWQw MiAyLTAwMTQ6IGNsa19sYW5lX3JlZzE9MHgxNQ0KDQpNZWFzdXJlZCAjM25zICgzMzNNSHopDQoN Cj09PiBubyBpbWFnZXMgYnV0IG91dCBvZiBNUDEgY2FwYWJpbGl0aWVzDQoNCg0KDQpPbiA5LzMv MTkgNDo0OCBQTSwgSHVndWVzIEZSVUNIRVQgd3JvdGU6DQo+IEhpIEphY29wbywNCj4gDQo+IE9u IDgvMjEvMTkgNDoyNCBQTSwgSmFjb3BvIE1vbmRpIHdyb3RlOg0KPj4gSGVsbG8sDQo+PiAgICAg ICtsYXVyYSB3aG8gaGFzIGJlZW4gd29ya2luZyBvbiBzdXBwb3J0aW5nIFJBVyBjYXB0dXJlIGZv ciB0aGlzDQo+PiAgICAgIGRyaXZlci4NCj4+DQo+PiBPbiBUdWUsIEF1ZyAyMCwgMjAxOSBhdCAx MjoxMzoxMlBNICswMzAwLCBTYWthcmkgQWlsdXMgd3JvdGU6DQo+Pj4gSGkgSHVndWVzLA0KPj4+ DQo+Pj4gT24gVHVlLCBKdWwgMDIsIDIwMTkgYXQgMDQ6MDU6NDZQTSArMDAwMCwgSHVndWVzIEZS VUNIRVQgd3JvdGU6DQo+Pj4+IEhpIFNha2FyaSwNCj4+Pj4NCj4+Pj4gT24gNi8yNy8xOSA2OjA1 IFBNLCBTYWthcmkgQWlsdXMgd3JvdGU6DQo+Pj4+PiBIaSBIdWd1ZXMsDQo+Pj4+Pg0KPj4+Pj4g T24gVGh1LCBKdW4gMjcsIDIwMTkgYXQgMDI6NTc6MDRQTSArMDIwMCwgSHVndWVzIEZydWNoZXQg d3JvdGU6DQo+Pj4+Pj4gQWRkIHN1cHBvcnQgb2YgVjRMMl9DSURfTElOS19GUkVRLCB0aGlzIGlz IG5lZWRlZA0KPj4+Pj4+IGJ5IHNvbWUgQ1NJLTIgcmVjZWl2ZXJzLg0KPj4+Pj4+DQo+Pj4+Pj4g Mzg0TUh6IGlzIGV4cG9zZWQgZm9yIHRoZSB0aW1lIGJlaW5nLCBjb3JyZXNwb25kaW5nDQo+Pj4+ Pj4gdG8gOTZNSHogcGl4ZWwgY2xvY2sgd2l0aCAyIGJ5dGVzIHBlciBwaXhlbCBvbiAyIGRhdGEg bGFuZXMuDQo+Pj4+Pj4NCj4+Pj4+PiBUaGlzIHNldHVwIGhhcyBiZWVuIHRlc3RlZCBzdWNjZXNz ZnVsbHkgd2l0aCBTVCBNSVBJRDAyDQo+Pj4+Pj4gQ1NJLTIgdG8gcGFyYWxsZWwgYnJpZGdlLg0K Pj4+Pj4+DQo+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogSHVndWVzIEZydWNoZXQgPGh1Z3Vlcy5mcnVj aGV0QHN0LmNvbT4NCj4+Pj4+PiAtLS0NCj4+Pj4+DQo+Pj4+PiBUaGFua3MgZm9yIHRoZSBwYXRj aC4NCj4+Pj4+DQo+Pj4+PiBUaGUgZHJpdmVyIGNhbGN1bGF0ZXMgdGhlIHNlbnNvciBjb25maWd1 cmF0aW9uIGJhc2VkIG9uIGl0cyBjb25maWd1cmF0aW9uLA0KPj4+Pj4gYW5kIHRoaXMgbmVlZHMg dG8gYmUgcmVmbGVjdGVkIGluIHRoZSBsaW5rIGZyZXF1ZW5jeTogaXQncyBub3QgYSBzdGF0aWMN Cj4+Pj4+IHZhbHVlLiBTZWUgZS5nLiBvdjU2NDBfY2FsY19zeXNfY2xrKCkuDQo+Pj4+Pg0KPj4+ Pg0KPj4+PiBJIGtub3cgdGhpcyBjb2RlLCBidXQgZm9yIGEgcmVhc29uIEkgZG9uJ3QgdW5kZXJz dGFuZCB5ZXQsIHRoaXMgc2VlbXMNCj4+Pj4gdG8gbm90IGhhdmUgZWZmZWN0cyBvbiB0aGUgQ1NJ LTIgbGluayBmcmVxdWVuY3kuDQo+Pj4+DQo+Pg0KPj4gVGhpcyBzZWVtcyB1bmxpa2VseSB0byBt ZSwgYXMgdGhlIG92NTY0MF9jYWxjX3N5c19jbGsoKSBjYWxjdWxhdGVzIHRoZQ0KPj4gc3lzdGVt IGNsb2NrLCB3aGljaCB0aGVuIGdlbmVyYXRlcyB0aGUgTUlQSSBDTEsuDQo+Pg0KPj4gSSB3b3Vs ZCByZWFsbHkgYmUgaW50ZXJlc3RlZCB0byBrbm93IGlmIHlvdSBjb3VsZCBtZWFzdXJlIHNvbWVo b3cgdGhlDQo+PiBhY3R1YWwgZnJlcXVlbmN5IG9mIHRoZSBjbG9jayBsYW5lLCB0byBtYWtlIHN1 cmUgaXQgYWN0dWFsbHkNCj4+IGNoYW5nZXMgYWNjb3JkaW5nIHRvIHRvIHRoZSBkcml2ZXIgY2Fs Y3VsYXRpb25zLg0KPj4NCj4+Pj4gVGhpcyBoYXMgYmVlbiB2ZXJpZmllZCB3aXRoIE1JUElEMDIg Q1NJLTIgYnJpZGdlIHdoaWNoIG9ubHkgd29yayB3aXRoDQo+Pj4+IHRoaXMgZml4ZWQgbGluayBm cmVxdWVuY3kgYXMgaW5wdXQgdG8gcHJvZ3JhbSBpdHMgdWlfeDQgcmVnaXN0ZXINCj4+Pj4gc2V0 dGluZywgc2VlDQo+Pj4+IGh0dHBzOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vbGludXgta2VybmVs QHZnZXIua2VybmVsLm9yZy9tc2cyMDI4MTcxLmh0bWwuDQo+Pj4+IEFsbCByZXNvbHV0aW9ucyBh bmQgYWxsIGZyYW1lcmF0ZSBoYXZlIGJlZW4gdGVzdGVkIHN1Y2Nlc2Z1bGx5IHdpdGggdGhpcw0K Pj4+PiBzZXR0aW5nLg0KPj4+Pg0KPj4+PiBJbml0aWFsbHkgSSB0cmllZCB0byBzZXQgdGhlIGxp bmsgZnJlcXVlbmN5IGFjY29yZGluZyB0byB0aGUgdmFsdWUNCj4+Pj4gY29tcHV0ZWQgaW4gb3Y1 NjQwX2NhbGNfc3lzX2NsaygpIGJ1dCBpdCB3YXMgb25seSBmdW5jdGlvbmFsIHdoZW4NCj4+Pj4g cmVzb2x1dGlvbnMvZnJhbWVyYXRlIHdhcyBjbG9zZSB0byB0aGUgMzg0TUh6IHZhbHVlLi4uDQo+ Pj4+DQo+Pj4+IEFzIE9WNTY0MCBEMyBlbmdpbmVlcmluZyBib2FyZCBoYXMgYmVlbiBpbml0aWFs bHkgZGV2ZWxvcHBlZCBmb3INCj4+Pj4gZHJhZ29uYm9hcmQsIEknbGwgZGlnIGludG8gdGhpcyBh bmQgZm91bmQgdGhpcyBjb21taXQ6DQo+Pj4+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3BhdGNo d29yay9wYXRjaC84ODY3OTQvDQo+Pj4+IHdoaWNoIHNldCBhIGZpeGVkIHBpeGVsIHJhdGUgdmFs dWUgdG8gOTZNSHosIHdoaWNoIG1hdGNoIHBlcmZlY3RseQ0KPj4+PiB3aXRoIHRoZSAzODRNSHog dmFsdWUgSSBmb3VuZCBmb3IgbGluayBmcmVxdWVuY3kuLi4NCj4+Pj4NCj4+Pj4gUGVyaGFwcyBv dGhlciBDU0ktMiBPVjU2NDAgdXNlcnMgY2FuIGNvbW1lbnQgYWJvdXQgaXQgYW5kIGhhdmUgdGhl DQo+Pj4+IGV4cGxhbmF0aW9ucyBvZiB3aGF0IEkgZXhwZXJpbWVudC4uLg0KPj4+PiBNYXhpbWUs IEphY29wbywgZG8geW91IGhhdmUgYW55IGlkZWEgYWJvdXQgaXQgPw0KPj4+DQo+Pj4gSSB3b3Vs ZCBhbHNvIGxpa2UgdG8gd2VlIGEgY29tbWVudCBmcm9tIHNvbWVvbmUgd2hvJ3MgZmFtaWxpYXIg d2l0aCB0aGUNCj4+PiBkZXZpY2UuIFlldCBJIGNhbiB0ZWxsIGEgc3RhdGljIHZhbHVlIG9mIDM0 OCBNSHogaXMgY2xlYXJseSBpbmNvcnJlY3QgYXMgaXQNCj4+PiBpZ25vcmVzIHNlbnNvciBydW50 aW1lIGNvbmZpZ3VyYXRpb24gYXMgd2VsbCBhcyBwbGF0Zm9ybSBjb25maWd1cmF0aW9uDQo+Pj4g KGV4dGVybmFsIGNsb2NrIGZyZXF1ZW5jeSBmb3IgaW5zdGFuY2UpLg0KPj4+DQo+Pj4gR2VuZXJh bGx5IHNwZWFraW5nLCBjb25maWd1cmluZyBhIENTSS0yIHJlY2VpdmVyIHRvIGV4cGVjdCBhIHBh cnRpY3VsYXINCj4+PiBmcmVxdWVuY3kgdXN1YWxseSBkb2Vzbid0IG1lYW4gaXQncyBnb2luZyB0 byBmYWlsIGV2ZW4gaWYgdGhlIHRyYW5zbWl0dGVyDQo+Pj4gdXNlcyBhIGRpZmZlcmVudCBmcmVx dWVuY3ksIGFsYmVpdCB0aGUgbGlrZWxpaG9vZCBvZiBpdCBub3Qgd29ya2luZw0KPj4+IGluY3Jl YXNlcyBhcyB0aGUgZGlmZmVyZW5jZSBncm93cy4gQ291bGQgdGhlIHByb2JsZW0gYmUgYXQgdGhl IHJlY2VpdmVyJ3MNCj4+PiBlbmQ/DQo+Pj4NCj4+PiBIYXZlIHlvdSBjaGVja2VkIHdoYXQga2lu ZCBvZiB2YWx1ZXMgb3Y1NjQwX2NhbGNfcGNsaygpIHJldHVybnMgZm9yDQo+Pj4gZGlmZmVyZW50 IGNvbmZpZ3VyYXRpb25zPyBJdCB3b3VsZCBzZWVtIGxpa2UgdGhhdCB0aGlzIGlzIHdoYXQgdGhl DQo+Pj4gTElOS19GUkVRIChkaXZpZGVkIGJ5IGxhbmVzIGFuZCBtdWx0aXBsaWVkIGJ5IHR3bykg c2hvdWxkIGJlLg0KPj4NCj4+IE5vdCBleGFjdGx5LiBvdjU2NDBfY2FsY19wY2xrKCkgaXMgb25s eSB1c2VkIHdoZW4gY29tcHV0aW5nIHRoZQ0KPj4gcGFyYWxsZWwgYnVzIHBpeGVsIGNsb2NrIG5v dCBmb3IgdGhlIENTSS0yIGJ1cy4NCj4+DQo+PiBUbyBvYnRhaW4gdGhlIGxpbmsgZnJlcXVlbmN5 IGZvciB0aGUgTUlQSSBpbnRlcmZhY2UgSSB3b3VsZCBjb25zaWRlcg0KPj4gdGhlIHN5c3RlbSBj bG9jayBmcmVxdWVuY3kgY2FsY3VsYXRlZCBieSBvdjU2NDBfY2FsY19zeXNfY2xrKCksIHdoaWNo DQo+PiByZXByZXNlbnRzIHRoZSBiYW5kd2lkdGggcGVyIGxhbmUgaW4gYml0cyBwZXIgc2Vjb25k LiBUaGlzIHNob3VsZCB0aGVuDQo+PiBiZSBkaXZpZGVkIGJ5IDIgdG8gY29tcGVuc2F0ZSB0aGUg TUlQSSBERFIgbW9kZSBbKl0gKG5vIG5lZWQgdG8gZGl2aWRlDQo+PiBieSB0aGUgbnVtYmVyIG9m IGxhbmVzLCBhcyB0aGlzIGlzIGFscmVhZHkgdGhlIGJhbmR3aWR0aCAtcGVyIGxhbmUtKQ0KPj4N Cj4+IEZvciA2NDB4NDgwIFlVWVY4XzJYOCAoYW5kIDEwMjR4NzY4KSB3aXRoIDIgZGF0YSBsYW5l cyBhbmQgMjRNSHogeGNsaw0KPj4gSSBoYXZlIGNhbGN1bGF0ZWQgdGhlIGZvbGxvd2luZyB2YWx1 ZXM6DQo+Pg0KPj4gU1lTQ0xLID0gNDkyTUh6DQo+PiBNSVBJU0NMSyA9IDI1Nk1Ieg0KPj4gUENM SyA9IDYxLDUwTUh6DQo+Pg0KPj4gRm9yIDEyODB4NzIwIHdpdGggdGhlIHNhbWUgc2V0dXANCj4+ IFNZU0NMSyA9IDM0ME1Ieg0KPj4gTUlQSV9DTEsgPSAxNzBNSHoNCj4+IFBDTEsgPSA0Miw1MCAo dGhpcyBzZWVtcyB2ZWVlcnkgbG93IGFjY29yZGluZyB0byBkYXRhc2hlZXQpDQo+Pg0KPj4gRm9y IDE5MjB4MTA4MA0KPj4gU1lTQ0xLID0gNjgwTUh6DQo+PiBNSVBJX0NMSyA9IDM0ME1Ieg0KPj4g UENMSyA9IDg1TUh6IChzbGlnaHRseSBzbG93IGFjY29yZGluZyB0byB0aGUgZGF0YXNoZWV0KQ0K Pj4NCj4+IEFsbCBjYXB0dXJlZCBpbWFnZXMgc2VlbXMgZmluZS4uLg0KPj4NCj4+IElmIHlvdSBj b3VsZCBjb25maXJtIHRob3NlIHZhbHVlcyBieSBwcm9iaW5nIHRoZSBhY3R1YWwgY2xvY2sgbGFu ZSBpdA0KPj4gd291bGQgYmUganVzdCBncmVhdC4NCj4+DQo+IA0KPiBJJ3ZlIG1hZGUgc29tZSBt ZWFzdXJlbWVudHMgcHJvYmluZyBjbG9jayBsYW5lIHdpdGggWVVZViAxNiBiaXRzDQo+IGdyYWJi aW5nLCBoZXJlIGFyZSB0aGUgcmVzdWx0czoNCj4gDQo+ICogVkdBIEAgMzBmcHMNCj4gdjRsMi1j dGwgLS1zZXQtcGFybT0zMDt2NGwyLWN0bA0KPiAtLXNldC1mbXQtdmlkZW89d2lkdGg9NjQwLGhl aWdodD00ODAscGl4ZWxmb3JtYXQ9WVVZViAtLXN0cmVhbS1tbWFwDQo+IFsgMTYyNC44NTQyNzNd IG92NTY0MCAwLTAwM2M6IHJhdGU9NDkxNDQzMjAwLCA2NDB4NDgwIGZyb20gMTg5NngxMDgwDQo+ IFsgMTYyNC44NTkxOTJdIG92NTY0MCAwLTAwM2M6IHN5c2Nsaz00OTIwMDAwMDAsIG1pcGlfZGl2 PTINCj4gTWVhc3VyZWQgY2xvY2sgbGFuZSBmcmVxdWVuY3k6IDEyM01Ieg0KPiANCj4gKiAxMDI0 eDc2OCBAIDMwZnBzDQo+IHY0bDItY3RsIC0tc2V0LXBhcm09MzA7djRsMi1jdGwNCj4gLS1zZXQt Zm10LXZpZGVvPXdpZHRoPTEwMjQsaGVpZ2h0PTc2OCxwaXhlbGZvcm1hdD1ZVVlWIC0tc3RyZWFt LW1tYXANCj4gWyAgNTU4LjgzMzg4NV0gb3Y1NjQwIDAtMDAzYzogcmF0ZT00OTE0NDMyMDAsIDEw MjR4NzY4IGZyb20gMTg5NngxMDgwDQo+IFsgIDU1OC44NDAxODhdIG92NTY0MCAwLTAwM2M6IHN5 c2Nsaz00OTIwMDAwMDAsIG1pcGlfZGl2PTINCj4gTWVhc3VyZWQgY2xvY2sgbGFuZSBmcmVxdWVu Y3k6IDEyNE1Ieg0KPiANCj4gKiA3MjBwIEAgMzBmcHMNCj4gdjRsMi1jdGwgLS1zZXQtcGFybT0z MDt2NGwyLWN0bA0KPiAtLXNldC1mbXQtdmlkZW89d2lkdGg9MTI4MCxoZWlnaHQ9NzIwLHBpeGVs Zm9ybWF0PVlVWVYgLS1zdHJlYW0tbW1hcA0KPiBbIDI5MjAuNzg1MzkyXSBvdjU2NDAgMC0wMDNj OiByYXRlPTMzNjAxOTIwMCwgMTI4MHg3MjAgZnJvbSAxODkyeDc0MA0KPiBbIDI5MjAuNzk0Nzcx XSBvdjU2NDAgMC0wMDNjOiBzeXNjbGs9MzQwMDAwMDAwLCBtaXBpX2Rpdj0xDQo+IE1lYXN1cmVk IGNsb2NrIGxhbmUgZnJlcXVlbmN5OiAxNzFNSHoNCj4gDQo+ICogMTA4MHAgQCAzMGZwcw0KPiB2 NGwyLWN0bCAtLXNldC1wYXJtPTMwO3Y0bDItY3RsDQo+IC0tc2V0LWZtdC12aWRlbz13aWR0aD0x OTIwLGhlaWdodD0xMDgwLHBpeGVsZm9ybWF0PVlVWVYgLS1zdHJlYW0tbW1hcA0KPiBbIDE2NTAu MTQzNzAxXSBvdjU2NDAgMC0wMDNjOiByYXRlPTY3MjAwMDAwMCwgMTkyMHgxMDgwIGZyb20gMjUw MHgxMTIwDQo+IFsgMTY1MC4xNDk4NzZdIG92NTY0MCAwLTAwM2M6IHN5c2Nsaz02NzIwMDAwMDAs IG1pcGlfZGl2PTENCj4gTWVhc3VyZWQgY2xvY2sgbGFuZSBmcmVxdWVuY3k6IDMzME1Ieg0KPiAN Cj4gU28gaXQgc2VlbXMgdGhhdCBmb3JtdWxhIG11c3QgYWxzbyB0YWtlIGNhcmUgb2YgbWlwaV9k aXY6DQo+IGxpbmtfZnJlcXVlbmN5ID0gc3lzX2RpdiAvIDIgLyBtaXBpX2Rpdg0KPiANCj4gDQo+ IFVuZm9ydHVuYXRlbHksIGFzIHNhaWQgcHJldmlvdXNseSwgd2hlbiB1cGRhdGluZyBvdjU2NDAg Y29kZWJhc2Ugc28gdGhhdA0KPiBDSURfTElOS19GUkVRVUVOQ1kgcmV0dXJucyB0aGlzIGNvbXB1 dGVkIHZhbHVlIGluc3RlYWQgb2YgMzg0TUh6IGZpeGVkDQo+IHZhbHVlLCB0aGUgTUlQSUQwMiBi cmlkZ2UgaGFzIHNvbWUgdHJvdWJsZXMgYW5kIHNvbWUNCj4gcmVzb2x1dGlvbnMvZnJhbWVyYXRl IGFyZSBicm9rZW46DQo+IA0KPiBkbWVzZyAtbjgNCj4gZWNobyAiZm9ybWF0IGxpbmtfZnJlcSAr cCIgPiAvc3lzL2tlcm5lbC9kZWJ1Zy9keW5hbWljX2RlYnVnL2NvbnRyb2wNCj4gDQo+ICogVkdB IEAgMzBmcHMgPT4gYnJva2VuDQo+IHY0bDItY3RsIC0tc2V0LXBhcm09MzA7djRsMi1jdGwNCj4g LS1zZXQtZm10LXZpZGVvPXdpZHRoPTY0MCxoZWlnaHQ9NDgwLHBpeGVsZm9ybWF0PVlVWVYgLS1z dHJlYW0tbW1hcA0KPiBbIDE2MjQuODU0MjczXSBvdjU2NDAgMC0wMDNjOiByYXRlPTQ5MTQ0MzIw MCwgNjQweDQ4MCBmcm9tIDE4OTZ4MTA4MA0KPiBbIDE2MjQuODU5MTkyXSBvdjU2NDAgMC0wMDNj OiBzeXNjbGs9NDkyMDAwMDAwLCBtaXBpX2Rpdj0yDQo+IFsgMTYyNC45MjQyODddIHN0LW1pcGlk MDIgMS0wMDE0OiBkZXRlY3QgbGlua19mcmVxID0gMTIzMDAwMDAwIEh6DQo+ID09PiBubyBmcmFt ZXMgc2VudCB0byBEQ01JDQo+IA0KPiAqIDcyMHAgQCAzMGZwcyA9PiB2ZXJ5IHNsb3cgZnJhbWVy YXRlDQo+IHY0bDItY3RsIC0tc2V0LXBhcm09MzA7djRsMi1jdGwNCj4gLS1zZXQtZm10LXZpZGVv PXdpZHRoPTEyODAsaGVpZ2h0PTcyMCxwaXhlbGZvcm1hdD1ZVVlWIC0tc3RyZWFtLW1tYXANCj4g WyAxOTAwLjcwNzgyMl0gb3Y1NjQwIDAtMDAzYzogcmF0ZT0zMzYwMTkyMDAsIDEyODB4NzIwIGZy b20gMTg5Mng3NDANCj4gWyAxOTAwLjcxMjcxN10gb3Y1NjQwIDAtMDAzYzogc3lzY2xrPTM0MDAw MDAwMCwgbWlwaV9kaXY9MQ0KPiBbIDE5MDAuNzgyNDAyXSBzdC1taXBpZDAyIDEtMDAxNDogZGV0 ZWN0IGxpbmtfZnJlcSA9IDE3MDAwMDAwMCBIeg0KPiA8PCAwLjY5IGZwcw0KPiA8IDAuNjcgZnBz DQo+IDwgMC42NyBmcHMNCj4gDQo+ICogMTA4MHAgQCAzMGZwcyA9PiB2ZXJ5IHNsb3cgZnJhbWVy YXRlDQo+IHY0bDItY3RsIC0tc2V0LXBhcm09MzA7djRsMi1jdGwNCj4gLS1zZXQtZm10LXZpZGVv PXdpZHRoPTE5MjAsaGVpZ2h0PTEwODAscGl4ZWxmb3JtYXQ9WVVZViAtLXN0cmVhbS1tbWFwDQo+ IFsgMTM2Ni41NTA4MzJdIG92NTY0MCAwLTAwM2M6IHJhdGU9MzM2MDAwMDAwLCAxOTIweDEwODAg ZnJvbSAyNTAweDExMjANCj4gWyAxMzY2LjU1NTY2OF0gb3Y1NjQwIDAtMDAzYzogc3lzY2xrPTMz NjAwMDAwMCwgbWlwaV9kaXY9MQ0KPiBGcmFtZSByYXRlIHNldCB0byAzMC4wMDAgZnBzDQo+IFsg MTM2Ny4xMDU1MDNdIG92NTY0MCAwLTAwM2M6IHJhdGU9NjcyMDAwMDAwLCAxOTIweDEwODAgZnJv bSAyNTAweDExMjANCj4gWyAxMzY3LjExMDQyMF0gb3Y1NjQwIDAtMDAzYzogc3lzY2xrPTY3MjAw MDAwMCwgbWlwaV9kaXY9MQ0KPiBbIDEzNjcuMjE0NDk4XSBzdC1taXBpZDAyIDEtMDAxNDogZGV0 ZWN0IGxpbmtfZnJlcSA9IDMzNjAwMDAwMCBIeg0KPiA8PCAwLjExIGZwcw0KPiA8IDAuMTEgZnBz DQo+IA0KPiANCj4gKiAxMDgwcCBAIDE1ZnBzID0+IE9LLCAxNWZwcyBhcyBleHBlY3RlZA0KPiB2 NGwyLWN0bCAtLXNldC1wYXJtPTE1O3Y0bDItY3RsDQo+IC0tc2V0LWZtdC12aWRlbz13aWR0aD0x OTIwLGhlaWdodD0xMDgwLHBpeGVsZm9ybWF0PVlVWVYgLS1zdHJlYW0tbW1hcA0KPiBbIDEzMjcu NDE3NTQ1XSBvdjU2NDAgMC0wMDNjOiByYXRlPTMzNjAwMDAwMCwgMTkyMHgxMDgwIGZyb20gMjUw MHgxMTIwDQo+IFsgMTMyNy40MjI1NjBdIG92NTY0MCAwLTAwM2M6IHN5c2Nsaz0zMzYwMDAwMDAs IG1pcGlfZGl2PTENCj4gWyAxMzI3LjUyNzg1Ml0gc3QtbWlwaWQwMiAxLTAwMTQ6IGRldGVjdCBs aW5rX2ZyZXEgPSAxNjgwMDAwMDAgSHoNCj4gPDw8PDw8PDw8PDw8PDw8PDwgMTUuMDkgZnBzDQo+ IDw8PDw8PDw8PDw8PDw8PCAxNS4wNCBmcHMNCj4gDQo+IA0KPiBPbmUgY291bGQgYXJndWUgdGhh dCB0aGlzIGlzIHRoZSBtaXBpZDAyIGJyaWRnZSBjb2RlYmFzZSB0aGF0IGlzIHdyb25nOg0KPiBk cml2ZXJzL21lZGlhL2kyYy9zdC1taXBpZDAyLmM6DQo+ICAgICBtaXBpZDAyX2NvbmZpZ3VyZV9m cm9tX3J4X3NwZWVkKCkNCj4gICAgICAgWy4uLl0NCj4gICAgICAgYnJpZGdlLT5yLmNsa19sYW5l X3JlZzEgfD0gKDIwMDAwMDAwMDAgLyBsaW5rX2ZyZXEpIDw8IDI7DQo+IA0KPiBidXQgY29tcHV0 YXRpb24gaXMgaW5saW5lIHdpdGggTUlQSUQwMiBzcGVjOg0KPiANCj4gIkNMT0NLIExBTkUgMSBS RUdJU1RFUiINCj4gQml0X25vICAgQml0X25hbWUNCj4gNyAgICAgICAgdWlfeDRfY2xrX2xhbmVb NV0NCj4gNiAgICAgICAgdWlfeDRfY2xrX2xhbmVbNF0NCj4gNSAgICAgICAgdWlfeDRfY2xrX2xh bmVbM10NCj4gNCAgICAgICAgdWlfeDRfY2xrX2xhbmVbMl0NCj4gMyAgICAgICAgdWlfeDRfY2xr X2xhbmVbMV0NCj4gMiAgICAgICAgdWlfeDRfY2xrX2xhbmVbMF0NCj4gVW5pdCBpbnRlcnZhbCB0 aW1lIG11bHRpcGxpZWQgYnkgZm91cg0KPiBUaGlzIHNpZ25hbCBpbmRpY2F0ZXMgdGhlIGJpdCBw ZXJpb2QgaW4gdW5pdHMgb2YNCj4gMC4yNSBucy4gSWYgdGhlIHVuaXQgaW50ZXJ2YWwgaXMgMyBu cywgdHdlbHZlICgweDBDKQ0KPiBzaG91bGQgYmUgcHJvZ3JhbW1lZC4gVGhpcyB2YWx1ZSBpcyB1 c2VkIHRvDQo+IGdlbmVyYXRlIGRlbGF5cy4gVGhlcmVmb3JlLCBpZiB0aGUgcGVyaW9kIGlzIG5v dCBhDQo+IG11bHRpcGxlIG9mIDAuMjUgbnMsIHRoZSB2YWx1ZSBzaG91bGQgYmUgcm91bmRlZA0K PiBkb3duLiBGb3IgZXhhbXBsZSwgYSA2MDAgTWJpdC9zIHNpbmdsZSBsYW5lDQo+IGxpbmt1c2Vz IGEgdW5pdCBpbnRlcnZhbCBvZiAxLjY2NyBucy4gTXVsdGlwbHlpbmcNCj4gYnkgZm91ciByZXN1 bHRzIGluIDYuNjY3LiBJbiB0aGlzIGNhc2UsIGEgdmFsdWUgb2YgNg0KPiAobm90IDcpIHNob3Vs ZCBiZSBwcm9ncmFtbWVkLg0KPiANCj4gDQo+IFBlcmhhcHMgdGhhdCBzb21lb25lIHdoaWNoIGtu b3dzIHdlbGwgQ1NJLTIgaW50ZXJmYWNlcyBjb3VsZA0KPiBkZXRlY3Qgd2hhdCBpcyB3cm9uZyBo ZXJlLCBidXQgcGVyc29uYWxseSBJIGRvbid0Lg0KPiANCj4gDQo+PiBIb3dldmVyLCB0aGlzIG9u bHkgd29yayBhc3N1bWluZyB0aGUgaGVyZSBiZWxvdyBbKl0sIGFuZCB3ZSdyZSBzdGlsbA0KPj4g bWlzc2luZyBzb21ldGhpbmcgYmVjYXVzZSBSQVcgc3RpbGwgZG9lc24ndCB3b3JrIGFzIGV4cGVj dGVkIDooDQo+Pg0KPj4gQW55d2F5LCBjbG9jayB0cmVlIG1hZG5lc3MgYXBhcnQsIGZpeGluZyB0 aGUgTElOS19GUkVRIGNvbnRyb2wgdmFsdWUNCj4+IHRvIDk2TUh6IHNlZW1zIGxpa2UgaXQgZG9l cyBub3QgcmVmbGVjdCB3aGF0IHRoZSBkcml2ZXIgYWN0dWFsIGRvZXMuDQo+Pg0KPj4gQ291bGQg eW91IHRyeSBzZXR0aW5nIHRoZSBjb250cm9sIHZhbHVlIHRvIHdoYXQgdGhlIGRyaXZlciBhY3R1 YWxseQ0KPj4gY29tcHV0ZXMgYXMgaGVyZSBzdWdnZXN0ZWQ/DQo+Pg0KPj4gVGhhbmtzDQo+PiAg ICAgIGoNCj4+DQo+PiBQUy4gSSdtIHN0aWxsIGNvbmZ1c2VkIHdoeSB0aGUgaGF2ZSB0aGUgbGlu ay1mcmVxdWVuY2llcyBwcm9wZXJ0eSBpbg0KPj4gRFRTIGJpbmRpbmdzLiBXaGF0IGlzIGl0cyBw dXJwb3NlIGlmIGFsbCBkcml2ZXJzIGNvbXB1dGUgb3IgaGFyZGNvZGUNCj4+IGl0Pw0KPiANCj4g SSBzaGFyZSB0aGlzIHBvaW50IG9mIHZpZXcsIEkgZG9uJ3Qga25vdyBob3cgdG8gcmV0dXJuIGEg ZHluYW1pY2FsbHkNCj4gY29tcHV0ZWQgbGluayBmcmVxdWVuY3kuIEN1cnJlbnQgZHJpdmVycyBh cmUgZXhwb3NpbmcgYSBzaW5nbGUgb25lDQo+IG9yIGEgc2V0IG9mIGRpc2NyZXRlIGZyZXF1ZW5j aWVzLg0KPiBGb3IgYSBtYXR0ZXIgb2YgdGVzdCBwdXJwb3NlLCBJJ3ZlIGRvbmUgdGhpcyBoYWNr Og0KPiANCj4gLXN0YXRpYyBjb25zdCBzNjQgbGlua19mcmVxX21lbnVfaXRlbXNbXSA9IHsNCj4g K3N0YXRpYyBzNjQgbGlua19mcmVxX21lbnVfaXRlbXNbXSA9IHsNCj4gCTM4NDAwMDAwMCwNCj4g fTsNCj4gDQo+ICsJbGlua19mcmVxX21lbnVfaXRlbXNbMF0gPSBfcmF0ZSAvIDIgLyBtaXBpX2Rp djsNCj4gDQo+IA0KPj4NCj4+IFsqXSBUaGVyZSBpcyBhIGJpZyBhc3N1bXB0aW9uIGhlcmUsIHRo YXQgdGhlIE1JUEkgYnVzIGNsb2NrIGdldHMNCj4+IGdlbmVyYXRlZCBieSB0d28gZGlmZmVyZW50 IGNsb2NrIG91dHB1dHMgZGVwZW5kaW5nIGlmIHRoZSBtb2RlIGdvZXMNCj4+IHRocm91Z2ggdGhl IHRoZSBzY2FsZXIgb3Igbm90LiBZb3UgY2FuIHNlZSB0aGlzIGF0IGxpbmUgOTY3IGluIHRoZQ0K Pj4gZHJpdmVyIGNvZGUuIElmIG1vZGUgZ29lcyB0aG91Z2ggdGhlIHNjYWxlciwgTUlQSV9ESVYg PSAyIGFuZCB5b3UgZ2V0DQo+PiB0aGUgYnVzIGNsb2NrIGZyb20gdGhlIE1JUElTQ0xLIHNpZ25h bC4gSWYgaXQgZG9lcyBub3QgZ28gdGhyb3VnaCB0aGUNCj4+IHNjYWxlciBNSVBJX0RJViA9IDEg YW5kIHRoZW4gdGhlIE1JUEkgYnVzIGNsb2NrIGdldHMgcHJvdmlkZWQgYnkgdGhlDQo+PiBNSVBJ X0NMSyBzaWduYWwuIFRoaXMgaXMgdGhlIHJlc3VsdCBvZiBzZXZlcmFsIGF0dGVtcHRzIHRvIGRl Y29kZSB0aGUNCj4+IG92NTY0MCBjbG9jayB0cmVlLCBidXQgaXQgaGFzIG9ubHkgYmVlbiB0ZXN0 ZWQgd2l0aCBtb2RlcyB3aXRoIGJwcCA9DQo+PiAxNiBhbmQgMiBkYXRhIGxhbmVzLiBBcyBpdCBo YXMgYmVlbiByZWNlbnRseSByZXBvcnRlZCwgZm9yIFJBVyBtb2RlLA0KPj4gdGhpcyBkb2VzIG5v dCB3b3JrIHdlbGwsIHNvIHRoZSBhc3N1bXB0aW9uIG1pZ2h0IG5vdCBiZSBjb3JyZWN0Lg0KPj4N Cj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+Pj4+IHZlcnNpb24gMjoNCj4+Pj4+PiAgICAgIC0gZG8gbm90 IHNldCBjb250cm9sIHJlYWQgb25seSBhcyBwZXIgSGFucycgY29tbWVudDoNCj4+Pj4+PiAgICAg ICAgU2VlIGh0dHBzOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vbGludXgtbWVkaWFAdmdlci5rZXJu ZWwub3JnL21zZzE0NzkxMC5odG1sDQo+Pj4+Pj4NCj4+Pj4+PiAgICAgZHJpdmVycy9tZWRpYS9p MmMvb3Y1NjQwLmMgfCAxMCArKysrKysrKysrDQo+Pj4+Pj4gICAgIDEgZmlsZSBjaGFuZ2VkLCAx MCBpbnNlcnRpb25zKCspDQo+Pj4+Pj4NCj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9pMmMvb3Y1NjQwLmMgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYw0KPj4+Pj4+IGluZGV4 IDgyZDRjZTkuLmU2MzA3ZjMgMTAwNjQ0DQo+Pj4+Pj4gLS0tIGEvZHJpdmVycy9tZWRpYS9pMmMv b3Y1NjQwLmMNCj4+Pj4+PiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9vdjU2NDAuYw0KPj4+Pj4+ IEBAIC0yMTgsNiArMjE4LDcgQEAgc3RydWN0IG92NTY0MF9jdHJscyB7DQo+Pj4+Pj4gICAgIAlz dHJ1Y3QgdjRsMl9jdHJsICp0ZXN0X3BhdHRlcm47DQo+Pj4+Pj4gICAgIAlzdHJ1Y3QgdjRsMl9j dHJsICpoZmxpcDsNCj4+Pj4+PiAgICAgCXN0cnVjdCB2NGwyX2N0cmwgKnZmbGlwOw0KPj4+Pj4+ ICsJc3RydWN0IHY0bDJfY3RybCAqbGlua19mcmVxOw0KPj4+Pj4+ICAgICB9Ow0KPj4+Pj4+DQo+ Pj4+Pj4gICAgIHN0cnVjdCBvdjU2NDBfZGV2IHsNCj4+Pj4+PiBAQCAtMjE5OCw2ICsyMTk5LDEw IEBAIHN0YXRpYyBpbnQgb3Y1NjQwX3RyeV9mbXRfaW50ZXJuYWwoc3RydWN0IHY0bDJfc3ViZGV2 ICpzZCwNCj4+Pj4+PiAgICAgCXJldHVybiAwOw0KPj4+Pj4+ICAgICB9DQo+Pj4+Pj4NCj4+Pj4+ PiArc3RhdGljIGNvbnN0IHM2NCBsaW5rX2ZyZXFfbWVudV9pdGVtc1tdID0gew0KPj4+Pj4+ICsJ Mzg0MDAwMDAwLA0KPj4+Pj4+ICt9Ow0KPj4+Pj4+ICsNCj4+Pj4+PiAgICAgc3RhdGljIGludCBv djU2NDBfc2V0X2ZtdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLA0KPj4+Pj4+ICAgICAJCQkgIHN0 cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsDQo+Pj4+Pj4gICAgIAkJCSAgc3RydWN0 IHY0bDJfc3ViZGV2X2Zvcm1hdCAqZm9ybWF0KQ0KPj4+Pj4+IEBAIC0yNjM2LDYgKzI2NDEsOCBA QCBzdGF0aWMgaW50IG92NTY0MF9zX2N0cmwoc3RydWN0IHY0bDJfY3RybCAqY3RybCkNCj4+Pj4+ PiAgICAgCWNhc2UgVjRMMl9DSURfVkZMSVA6DQo+Pj4+Pj4gICAgIAkJcmV0ID0gb3Y1NjQwX3Nl dF9jdHJsX3ZmbGlwKHNlbnNvciwgY3RybC0+dmFsKTsNCj4+Pj4+PiAgICAgCQlicmVhazsNCj4+ Pj4+PiArCWNhc2UgVjRMMl9DSURfTElOS19GUkVROg0KPj4+Pj4+ICsJCXJldHVybiAwOw0KPj4+ Pj4+ICAgICAJZGVmYXVsdDoNCj4+Pj4+PiAgICAgCQlyZXQgPSAtRUlOVkFMOw0KPj4+Pj4+ICAg ICAJCWJyZWFrOw0KPj4+Pj4+IEBAIC0yNzAzLDYgKzI3MTAsOSBAQCBzdGF0aWMgaW50IG92NTY0 MF9pbml0X2NvbnRyb2xzKHN0cnVjdCBvdjU2NDBfZGV2ICpzZW5zb3IpDQo+Pj4+Pj4gICAgIAkJ CQkgICAgICAgVjRMMl9DSURfUE9XRVJfTElORV9GUkVRVUVOQ1lfQVVUTywgMCwNCj4+Pj4+PiAg ICAgCQkJCSAgICAgICBWNEwyX0NJRF9QT1dFUl9MSU5FX0ZSRVFVRU5DWV81MEhaKTsNCj4+Pj4+ Pg0KPj4+Pj4+ICsJY3RybHMtPmxpbmtfZnJlcSA9IHY0bDJfY3RybF9uZXdfaW50X21lbnUoaGRs LCBvcHMsIFY0TDJfQ0lEX0xJTktfRlJFUSwNCj4+Pj4+PiArCQkJCQkJICAwLCAwLCBsaW5rX2Zy ZXFfbWVudV9pdGVtcyk7DQo+Pj4+Pj4gKw0KPj4+Pj4+ICAgICAJaWYgKGhkbC0+ZXJyb3IpIHsN Cj4+Pj4+PiAgICAgCQlyZXQgPSBoZGwtPmVycm9yOw0KPj4+Pj4+ICAgICAJCWdvdG8gZnJlZV9j dHJsczsNCj4+Pj4+PiAtLQ0KPj4+Pj4+IDIuNy40DQo+Pj4+Pj4NCj4+Pj4+DQo+Pj4+DQo+Pj4+ IEJSLA0KPj4+PiBIdWd1ZXMuDQo+Pj4NCj4+PiAtLQ0KPj4+IFNha2FyaSBBaWx1cw0KPj4+IHNh a2FyaS5haWx1c0BsaW51eC5pbnRlbC5jb20NCj4gDQo+IEJSLA0KPiBIdWd1ZXMuDQo+IA0KQlIs DQpIdWd1ZXMu