From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id E13A7385355D for ; Wed, 8 Jun 2022 03:56:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E13A7385355D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=mentor.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.91,285,1647331200"; d="diff'?scan'208";a="76943718" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 07 Jun 2022 19:56:12 -0800 IronPort-SDR: 16yhUnL92L+qfFQG/T197QSqJCUcBB/XIJWyI9JQ157cz+yqeFOQOpu4GlpdmQ1nogi8MxNQ8F JIVS6M5ZlwQ1i1N1IB75OP9yB1FKXtRmvl/T3JDi7ZCC8ipgBMLqwNippg/kemSyKsOaXtmkSM lpVfHyhmH+NCiEwdZhD97ER66d3uyYjhRBCNOaV/EFJQSwc6kWEh4CWpVswRV1zmv/ks9s9cnI oKNvJtEsAc/S0VXPgH22IfX07fYWkAakGuLhosQ9TwRTVb96wJOlA8Fr7xfau8rtS1U82ghtzk PNs= Content-Type: multipart/mixed; boundary="------------0xTpivnxxoFfBxeVUdGh4kRO" Message-ID: <07fec82a-41cf-fdc5-6307-c068dd95ef1a@mentor.com> Date: Wed, 8 Jun 2022 05:56:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Content-Language: en-US To: gcc-patches , Jakub Jelinek From: Tobias Burnus Subject: [Patch] OpenMP: Move omp requires checks to libgomp X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-15.mgc.mentorg.com (139.181.222.15) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jun 2022 03:56:20 -0000 --------------0xTpivnxxoFfBxeVUdGh4kRO Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable This is based on Chung-Lin's patch at https://gcc.gnu.org/pipermail/gcc-pat= ches/2021-January/563393.html This is about code like: #pragma omp requires unified_shared_memory !$omp requires reverse_offload which before was rejected with a sorry during parsing and is now handled in libgomp (by excluding the devices from the available device list). Note: The requires-directive consistency check is nonfatal, i.e. the program continues after the libgomp: requires-directive clause inconsistency between compilation unit= s detected: 'unified_shared_memory' vs. 'reverse_offload' message. Changes compared to Chung-Lin's patch: - I take the omp_* device API calls into account - Rediffed because of changes done in the past year - Included Thomas' fix for !ENABLE_OFFLOADING + intelmic, i.e. OG11 commit https://gcc.gnu.org/g:6da4ffd4a790f5f0abf290147217ca46a36f981e On the libgomp side: The devices which do not fulfill the requirements are now filtered out. That's in line how I understood the spec =E2=80=93 and to= make it clearer, I spelled this out explicitly when adding (for other reasons) two glossary items (passed 2nd vote but not yet in a released OpenMP spec): - "accessible devices The host device and all non-host devices accessible for execution." - "supported devices The host device and all non-host devices supported by the implementatio= n for execution of target code for which the device-related requirements of the 'requires' directive are fulfilled." Note: * The FE only generates the requirement clauses when there is at least one declare target variable or function and offloading is used (target region, API call etc.) In particular, this implies that for !ENABLE_OFFLOADING, none is generated. * libgomp only checks whether those values are consistent when env var OMP_TARGET_OFFLOAD !=3D disable. =3D> Thus, I protected the check for this (libgomp.c-c++-common/requires-1.= c) by { dg-skip-if "" { ! offloading_enabled } } (and assume that OMP_TARGET_OFFLOAD is not set). If env var OMP_TARGET_OFFLOAD !=3D disable, it then runs for all configured plugins and checks first whether devices are actually available and then whether the requirement mask is fulfilled. Currently, none of the clauses is supported (neither unified_shared_memory nor unified_shared_address nor reverse_offload) even though there are patches submitted (and being worked = on), which add support for those. I then unconditionally print a note like: libgomp: note: nvptx devices present but 'omp requires unified_shared_me= mory' cannot be fulfilled This note is printed if env var OMP_TARGET_OFFLOAD !=3D disable, libgomp supports the device type, a device was found but omp requires could not fulfilled. This means that this message is also printed when compiled with -foffload=3Ddisable or 'omp target if(0)' was used throught or ... I think that's acceptable, but it could also be optimized further; however, the initialization (e.g. GOMP_offload_register_ver) happens much later such that the knowledge that a device is not needed (as with -foffload=3Ddisable= ) is not available. I hope the note is not too confusing, but otherwise: * it could be postponed and then printed in context (requires device type <-> name association) * it could only be printed with GOMP_DEBUG set but for the common case (why did it not run?), outputting it unconditionally surely helps to understand what went "wrong". Thoughts? Comments? OK? Tobias PS: I have not fully tested the intelmic version. PPS: I have not tried to implement the compile-time check to impose consistent 'omp requires' =E2=80=93 as proposed in the last review. I think= I will open a PR to track that proposal. ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------0xTpivnxxoFfBxeVUdGh4kRO Content-Type: text/x-patch; charset="UTF-8"; name="omp-requires-v3.diff" Content-Disposition: attachment; filename="omp-requires-v3.diff" Content-Transfer-Encoding: base64 T3Blbk1QOiBNb3ZlIG9tcCByZXF1aXJlcyBjaGVja3MgdG8gbGliZ29tcAoKSGFuZGxlIHJl dmVyc2Vfb2ZmbG9hZCwgdW5pZmllZF9hZGRyZXNzLCBhbmQgdW5pZmllZF9zaGFyZWRfbWVt b3J5CnJlcXVpcmVtZW50cyBpbiBsaWJnb21wIGJ5IHB1dHRpbmcgdGhlbSBpbnRvIHRoZSAu Z251LmdvbXBfcmVxdWlyZXMgc2VjdGlvbi4KCkZvciBhbGwgaW4tcHJpbmNpcGxlIHN1cHBv cnRlZCBkZXZpY2VzLCBpZiBhIHJlcXVpcmVtZW50IGNhbm5vdCBiZSBmdWxmaWxsZWQsCnRo ZSBkZXZpY2UgaXMgZXhjbHVkZWQgZnJvbSB0aGUgKHN1cHBvcnRlZCkgZGV2aWNlcyBsaXN0 LiBDdXJyZW50bHksIG5vbmUgb2YKdGhvc2UgcmVxdWlyZW1lbnRzIGFyZSBtYXJrZWQgYXMg c3VwcG9ydGVkIGZvciBhbnkgb2YgdGhlIG5vbi1ob3N0IGRldmljZXMuCgpBZGRpdGlvbmFs bHksIGxpYmdvbXAgY2hlY2tzIGZvciBjb25zaXN0ZW5jeSBhY3Jvc3MgdGhlIGVudGlyZQou Z251LmdvbXBfcmVxdWlyZXMgc2VjdGlvbiwgbWF0Y2hpbmcgdGhlIHJlcXVpcmVtZW50cyBz ZXQgYnkgdGhlIE9wZW5NUCBzcGVjLgoKZ2NjL2MvQ2hhbmdlTG9nOgoKCSogYy1wYXJzZXIu Y2MgKGNfcGFyc2VyX2RlY2xhcmF0aW9uX29yX2ZuZGVmKTogU2V0CglPTVBfUkVRVUlSRVNf VEFSR0VUX1VTRUQgaW4gb21wX3JlcXVpcmVzX21hc2sgaWYgZnVuY3Rpb24gaGFzCgkib21w IGRlY2xhcmUgdGFyZ2V0IiBhdHRyaWJ1dGUuCgkoY19wYXJzZXJfb21wX3RhcmdldF9kYXRh KTogU2V0CU9NUF9SRVFVSVJFU19UQVJHRVRfVVNFRCBpbgoJb21wX3JlcXVpcmVzX21hc2su CgkoY19wYXJzZXJfb21wX3RhcmdldF9lbnRlcl9kYXRhKTogTGlrZXdpc2UuCgkoY19wYXJz ZXJfb21wX3RhcmdldF9leGl0X2RhdGEpOiBMaWtld2lzZS4KCShjX3BhcnNlcl9vbXBfcmVx dWlyZXMpOiBSZW1vdmUgc29ycnkuCgpnY2MvY3AvQ2hhbmdlTG9nOgoKCSogcGFyc2VyLmNj IChjcF9wYXJzZXJfc2ltcGxlX2RlY2xhcmF0aW9uKTogU2V0CglPTVBfUkVRVUlSRVNfVEFS R0VUX1VTRUQgaW4gb21wX3JlcXVpcmVzX21hc2sgaWYgZnVuY3Rpb24gaGFzCgkib21wIGRl Y2xhcmUgdGFyZ2V0IiBhdHRyaWJ1dGUuCgkoY3BfcGFyc2VyX29tcF90YXJnZXRfZGF0YSk6 IFNldCBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQgaW4KCW9tcF9yZXF1aXJlc19tYXNrLgoJ KGNwX3BhcnNlcl9vbXBfdGFyZ2V0X2VudGVyX2RhdGEpOiBMaWtld2lzZS4KCShjcF9wYXJz ZXJfb21wX3RhcmdldF9leGl0X2RhdGEpOiBMaWtld2lzZS4KCShjcF9wYXJzZXJfb21wX3Jl cXVpcmVzKTogUmVtb3ZlIHNvcnJ5LgoKZ2NjL2ZvcnRyYW4vQ2hhbmdlTG9nOgoKCSogb3Bl bm1wLmNjIChnZmNfbWF0Y2hfb21wX3JlcXVpcmVzKTogUmVtb3ZlICJub3QgaW1wbGVtZW50 ZWQgeWV0Ii4KCSogcGFyc2UuY2M6IEluY2x1ZGUgInRyZWUuaCIgYW5kICJvbXAtZ2VuZXJh bC5oIi4KCShnZmNfcGFyc2VfZmlsZSk6IEFkZCBjb2RlIHRvIG1lcmdlIG9tcF9yZXF1aXJl cyB0byBvbXBfcmVxdWlyZXNfbWFzay4KCmdjYy9DaGFuZ2VMb2c6CgoJKiBvbXAtZ2VuZXJh bC5oIChvbXBfcnVudGltZV9hcGlfY2FsbCk6IE5ldyBwcm90b3R5cGUuCgkqIG9tcC1nZW5l cmFsLmNjIChvbXBfcnVudGltZV9hcGlfY2FsbCk6IEFkZGVkIGRldmljZV9hcGlfb25seSBh cmcKCWFuZCBtb3ZlZCBmcm9tIC4uLgoJKiBvbXAtbG93LmNjIChvbXBfcnVudGltZV9hcGlf Y2FsbCk6IC4uLiBoZXJlLgoJKHNjYW5fb21wXzFfc3RtdCk6IFVwZGF0ZSBjYWxsLgoJKiBn aW1wbGlmeS5jYyAoZ2ltcGxpZnlfY2FsbF9leHByKTogQ2FsbCBvbXBfcnVudGltZV9hcGlf Y2FsbC4KCSogb21wLW9mZmxvYWQuY2MgKG9tcF9maW5pc2hfZmlsZSk6IEFkZCBjb2RlIHRv IGNyZWF0ZSBPcGVuTVAgcmVxdWlyZXMKCW1hc2sgdmFyaWFibGUgaW4gLmdudS5nb21wX3Jl cXVpcmVzIHNlY3Rpb24sIGlmIG5lZWRlZC4KCmluY2x1ZGUvQ2hhbmdlTG9nOgoKCSogZ29t cC1jb25zdGFudHMuaCAoR09NUF9SRVFVSVJFU19VTklGSUVEX0FERFJFU1MsCglHT01QX1JF UVVJUkVTX1VOSUZJRURfU0hBUkVEX01FTU9SWSwKCUdPTVBfUkVRVUlSRVNfUkVWRVJTRV9P RkZMT0FEKTogTmV3LgoKbGliZ2NjL0NoYW5nZUxvZzoKCgkqIG9mZmxvYWRzdHVmZi5jIChf X3JlcXVpcmVzX21hc2tfdGFibGUsIF9fcmVxdWlyZXNfbWFza190YWJsZV9lbmQpOgoJTmV3 IHN5bWJvbHMgdG8gbWFyayBzdGFydCBhbmQgZW5kIG9mIHRoZSAuZ251LmdvbXBfcmVxdWly ZXMgc2VjdGlvbi4KCgpsaWJnb21wL0NoYW5nZUxvZzoKCgkqIGxpYmdvbXAtcGx1Z2luLmgg KEdPTVBfT0ZGTE9BRF9nZXRfbnVtX2RldmljZXMpOiBBZGQKCW9tcF9yZXF1aXJlc19tYXNr IGFyZy4KCSogcGx1Z2luL3BsdWdpbi1nY24uYyAoR09NUF9PRkZMT0FEX2dldF9udW1fZGV2 aWNlcyk6IExpa2V3aXNlOwoJcmV0dXJuIC0xIHdoZW4gZGV2aWNlIGF2YWlsYWJsZSBidXQg b21wX3JlcXVpcmVzX21hc2sgIT0gMC4KCSogcGx1Z2luL3BsdWdpbi1udnB0eC5jIChHT01Q X09GRkxPQURfZ2V0X251bV9kZXZpY2VzKTogTGlrZXdpc2UuCgkqIG9hY2MtaG9zdC5jICho b3N0X2dldF9udW1fZGV2aWNlcywgaG9zdF9vcGVuYWNjX2dldF9wcm9wZXJ0eSk6CglVcGRh dGUgY2FsbC4KCSogb2FjYy1pbml0LmMgKHJlc29sdmVfZGV2aWNlLCBhY2NfaW5pdF8xLCBh Y2Nfc2h1dGRvd25fMSwKCWdvYWNjX2F0dGFjaF9ob3N0X3RocmVhZF90b19kZXZpY2UsIGFj Y19nZXRfbnVtX2RldmljZXMsCglhY2Nfc2V0X2RldmljZV9udW0sIGdldF9wcm9wZXJ0eV9h bnkpOiBMaWtld2lzZS4KCSogdGFyZ2V0LmM6IChfX3JlcXVpcmVzX21hc2tfdGFibGUsIF9f cmVxdWlyZXNfbWFza190YWJsZV9lbmQpOgoJRGVjbGFyZSB3ZWFrIGV4dGVybiBzeW1ib2xz LgoJKGdvbXBfcmVxdWlyZXNfdG9fbmFtZSk6IE5ldy4KCShnb21wX3RhcmdldF9pbml0KTog QWRkIGNvZGUgdG8gY2hlY2sgLmdudS5fZ29tcF9yZXF1aXJlcyBzZWN0aW9uCgltYXNrIHZh bHVlcyBmb3IgaW5jb25zaXN0ZW5jaWVzOyB3YXJuIHdoZW4gcmVxdWlyZW1lbnRzIG1ha2Vz IGFuCglleGlzdGluZyBkZXZpY2UgdW5zdXBwb3J0ZWQuCgkqIHRlc3RzdWl0ZS9saWJnb21w LmMtYysrLWNvbW1vbi9yZXF1aXJlcy0xLWF1eC5jOiBOZXcgdGVzdC4KCSogdGVzdHN1aXRl L2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTEuYzogTmV3IHRlc3QuCgkqIHRlc3Rz dWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0yLWF1eC5jOiBOZXcgdGVzdC4K CSogdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTIuYzogTmV3IHRl c3QuCgpsaWJvZmZsb2FkbWljL0NoYW5nZUxvZzoKCgkqIHBsdWdpbi9saWJnb21wLXBsdWdp bi1pbnRlbG1pYy5jcHAgKEdPTVBfT0ZGTE9BRF9nZXRfbnVtX2RldmljZXMpOgoJUmV0dXJu IC0xIHdoZW4gZGV2aWNlIGF2YWlsYWJsZSBidXQgb21wX3JlcXVpcmVzX21hc2sgIT0gMC4K CmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCSogYy1jKystY29tbW9uL2dvbXAvcmVxdWly ZXMtNC5jOiBVcGRhdGUgZGctKi4KCSogYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmlj ZS1hbmNlc3Rvci0yLmM6IExpa2V3aXNlLgoJKiBjLWMrKy1jb21tb24vZ29tcC90YXJnZXQt ZGV2aWNlLWFuY2VzdG9yLTMuYzogTGlrZXdpc2UuCgkqIGMtYysrLWNvbW1vbi9nb21wL3Rh cmdldC1kZXZpY2UtYW5jZXN0b3ItNC5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL2dv bXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci01LmM6IExpa2V3aXNlLgoJKiBnZm9ydHJhbi5k Zy9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMy5mOTA6IExpa2V3aXNlLgoJKiBnZm9y dHJhbi5kZy9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItNC5mOTA6IExpa2V3aXNlLgoJ KiBnZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMi5mOTA6IExpa2V3 aXNlLiBNb3ZlIHBvc3QtRkUKCWNoZWNrcyB0byAuLi4KCSogZ2ZvcnRyYW4uZGcvZ29tcC90 YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTJhLmY5MDogLi4uIHRoaXMgbmV3IGZpbGUuCgpDby1h dXRob3JlZC1ieTogQ2h1bmctTGluIFRhbmcgPGNsdGFuZ0Bjb2Rlc291cmNlcnkuY29tPgpD by1hdXRob3JlZC1ieTogVGhvbWFzIFNjaHdpbmdlIDx0aG9tYXNAY29kZXNvdXJjZXJ5LmNv bT4KCiBnY2MvYy9jLXBhcnNlci5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAyMSArKystCiBnY2MvY3AvcGFyc2VyLmNjICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyMCArKy0KIGdjYy9mb3J0cmFuL29wZW5tcC5jYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICA0IC0KIGdjYy9mb3J0cmFuL3BhcnNlLmNjICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxICsrKysKIGdjYy9naW1wbGlmeS5jYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIGdjYy9vbXAtZ2Vu ZXJhbC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTM3ICsrKysrKysr KysrKysrKysrKysrKwogZ2NjL29tcC1nZW5lcmFsLmggICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogZ2NjL29tcC1sb3cuY2MgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAxMzUgKy0tLS0tLS0tLS0tLS0tLS0tLS0KIGdjYy9vbXAt b2ZmbG9hZC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI5ICsrKysr CiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3JlcXVpcmVzLTQuYyAgICAgICB8 ICAgMiAtCiAuLi4vYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0y LmMgICB8ICAxMCArLQogLi4uL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1kZXZpY2UtYW5j ZXN0b3ItMy5jICAgfCAgIDIgKy0KIC4uLi9jLWMrKy1jb21tb24vZ29tcC90YXJnZXQtZGV2 aWNlLWFuY2VzdG9yLTQuYyAgIHwgICA0ICstCiAuLi4vYy1jKystY29tbW9uL2dvbXAvdGFy Z2V0LWRldmljZS1hbmNlc3Rvci01LmMgICB8ICAgMiArLQogLi4uL2dmb3J0cmFuLmRnL2dv bXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0yLmY5MCAgfCAgNzAgKy0tLS0tLS0tLS0KIC4u Li9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMmEuZjkwIHwgIDgw ICsrKysrKysrKysrKwogLi4uL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNl c3Rvci0zLmY5MCAgfCAgIDYgKy0KIC4uLi9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZp Y2UtYW5jZXN0b3ItNC5mOTAgIHwgICA2ICstCiBpbmNsdWRlL2dvbXAtY29uc3RhbnRzLmgg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBsaWJnY2Mvb2ZmbG9hZHN0dWZm LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArKwogbGliZ29tcC9saWJn b21wLXBsdWdpbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGxpYmdv bXAvb2FjYy1ob3N0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICst CiBsaWJnb21wL29hY2MtaW5pdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAxNiArLS0KIGxpYmdvbXAvcGx1Z2luL3BsdWdpbi1nY24uYyAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA2ICstCiBsaWJnb21wL3BsdWdpbi9wbHVnaW4tbnZwdHguYyAgICAgICAg ICAgICAgICAgICAgICB8ICAgOSArLQogbGliZ29tcC90YXJnZXQuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNjYgKysrKysrKysrLQogLi4uL2xpYmdvbXAuYy1j KystY29tbW9uL3JlcXVpcmVzLTEtYXV4LmMgICAgICAgICAgfCAgMTEgKysKIC4uLi90ZXN0 c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMS5jICAgIHwgIDIxICsrKysK IC4uLi9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0yLWF1eC5jICAgICAgICAgIHwg IDExICsrCiAuLi4vdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTIu YyAgICB8ICAyMCArKysKIGxpYm9mZmxvYWRtaWMvcGx1Z2luL2xpYmdvbXAtcGx1Z2luLWlu dGVsbWljLmNwcCAgIHwgICA2ICstCiAzMSBmaWxlcyBjaGFuZ2VkLCA0OTkgaW5zZXJ0aW9u cygrKSwgMjQxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jL2MtcGFyc2VyLmNj IGIvZ2NjL2MvYy1wYXJzZXIuY2MKaW5kZXggMTcwNGE1MmJlMTIuLjQ3NDhjZTA0NzM3IDEw MDY0NAotLS0gYS9nY2MvYy9jLXBhcnNlci5jYworKysgYi9nY2MvYy9jLXBhcnNlci5jYwpA QCAtMjQ4OCw2ICsyNDg4LDEyIEBAIGNfcGFyc2VyX2RlY2xhcmF0aW9uX29yX2ZuZGVmIChj X3BhcnNlciAqcGFyc2VyLCBib29sIGZuZGVmX29rLAogCSAgYnJlYWs7CiAJfQogCisgICAg ICBpZiAoZmxhZ19vcGVubXAKKwkgICYmIGxvb2t1cF9hdHRyaWJ1dGUgKCJvbXAgZGVjbGFy ZSB0YXJnZXQiLAorCQkJICAgICAgIERFQ0xfQVRUUklCVVRFUyAoY3VycmVudF9mdW5jdGlv bl9kZWNsKSkpCisJb21wX3JlcXVpcmVzX21hc2sKKwkgID0gKGVudW0gb21wX3JlcXVpcmVz KSAob21wX3JlcXVpcmVzX21hc2sgfCBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpOworCiAg ICAgICBpZiAoREVDTF9ERUNMQVJFRF9JTkxJTkVfUCAoY3VycmVudF9mdW5jdGlvbl9kZWNs KSkKICAgICAgICAgdHYgPSBUVl9QQVJTRV9JTkxJTkU7CiAgICAgICBlbHNlCkBAIC0yMDkx NSw2ICsyMDkyMSwxMCBAQCBjX3BhcnNlcl9vbXBfdGVhbXMgKGxvY2F0aW9uX3QgbG9jLCBj X3BhcnNlciAqcGFyc2VyLAogc3RhdGljIHRyZWUKIGNfcGFyc2VyX29tcF90YXJnZXRfZGF0 YSAobG9jYXRpb25fdCBsb2MsIGNfcGFyc2VyICpwYXJzZXIsIGJvb2wgKmlmX3ApCiB7Cisg IGlmIChmbGFnX29wZW5tcCkKKyAgICBvbXBfcmVxdWlyZXNfbWFzaworICAgICAgPSAoZW51 bSBvbXBfcmVxdWlyZXMpIChvbXBfcmVxdWlyZXNfbWFzayB8IE9NUF9SRVFVSVJFU19UQVJH RVRfVVNFRCk7CisKICAgdHJlZSBjbGF1c2VzCiAgICAgPSBjX3BhcnNlcl9vbXBfYWxsX2Ns YXVzZXMgKHBhcnNlciwgT01QX1RBUkdFVF9EQVRBX0NMQVVTRV9NQVNLLAogCQkJCSIjcHJh Z21hIG9tcCB0YXJnZXQgZGF0YSIpOwpAQCAtMjEwNTcsNiArMjEwNjcsMTAgQEAgY19wYXJz ZXJfb21wX3RhcmdldF9lbnRlcl9kYXRhIChsb2NhdGlvbl90IGxvYywgY19wYXJzZXIgKnBh cnNlciwKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICBpZiAoZmxhZ19vcGVubXAp CisgICAgb21wX3JlcXVpcmVzX21hc2sKKyAgICAgID0gKGVudW0gb21wX3JlcXVpcmVzKSAo b21wX3JlcXVpcmVzX21hc2sgfCBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpOworCiAgIHRy ZWUgY2xhdXNlcwogICAgID0gY19wYXJzZXJfb21wX2FsbF9jbGF1c2VzIChwYXJzZXIsIE9N UF9UQVJHRVRfRU5URVJfREFUQV9DTEFVU0VfTUFTSywKIAkJCQkiI3ByYWdtYSBvbXAgdGFy Z2V0IGVudGVyIGRhdGEiKTsKQEAgLTIxMTQzLDYgKzIxMTU3LDEwIEBAIGNfcGFyc2VyX29t cF90YXJnZXRfZXhpdF9kYXRhIChsb2NhdGlvbl90IGxvYywgY19wYXJzZXIgKnBhcnNlciwK ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICBpZiAoZmxhZ19vcGVubXApCisgICAg b21wX3JlcXVpcmVzX21hc2sKKyAgICAgID0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3Jl cXVpcmVzX21hc2sgfCBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpOworCiAgIHRyZWUgY2xh dXNlcwogICAgID0gY19wYXJzZXJfb21wX2FsbF9jbGF1c2VzIChwYXJzZXIsIE9NUF9UQVJH RVRfRVhJVF9EQVRBX0NMQVVTRV9NQVNLLAogCQkJCSIjcHJhZ21hIG9tcCB0YXJnZXQgZXhp dCBkYXRhIik7CkBAIC0yMjc2Myw5ICsyMjc4MSw2IEBAIGNfcGFyc2VyX29tcF9yZXF1aXJl cyAoY19wYXJzZXIgKnBhcnNlcikKIAkgICAgICBjX3BhcnNlcl9za2lwX3RvX3ByYWdtYV9l b2wgKHBhcnNlciwgZmFsc2UpOwogCSAgICAgIHJldHVybjsKIAkgICAgfQotCSAgaWYgKHAg JiYgdGhpc19yZXEgIT0gT01QX1JFUVVJUkVTX0RZTkFNSUNfQUxMT0NBVE9SUykKLQkgICAg c29ycnlfYXQgKGNsb2MsICIlcXMgY2xhdXNlIG9uICU8cmVxdWlyZXMlPiBkaXJlY3RpdmUg bm90ICIKLQkJCSAgICAic3VwcG9ydGVkIHlldCIsIHApOwogCSAgaWYgKHApCiAJICAgIGNf cGFyc2VyX2NvbnN1bWVfdG9rZW4gKHBhcnNlcik7CiAJICBpZiAodGhpc19yZXEpCmRpZmYg LS1naXQgYS9nY2MvY3AvcGFyc2VyLmNjIGIvZ2NjL2NwL3BhcnNlci5jYwppbmRleCBkYTJm MzcwY2RjYS4uNmUyNmQxMjMzNzAgMTAwNjQ0Ci0tLSBhL2djYy9jcC9wYXJzZXIuY2MKKysr IGIvZ2NjL2NwL3BhcnNlci5jYwpAQCAtMTUzODksNiArMTUzODksMTEgQEAgY3BfcGFyc2Vy X3NpbXBsZV9kZWNsYXJhdGlvbiAoY3BfcGFyc2VyKiBwYXJzZXIsCiAJICAvKiBPdGhlcndp c2UsIHdlJ3JlIGRvbmUgd2l0aCB0aGUgbGlzdCBvZiBkZWNsYXJhdG9ycy4gICovCiAJICBl bHNlCiAJICAgIHsKKwkgICAgICBpZiAoZmxhZ19vcGVubXAgJiYgbG9va3VwX2F0dHJpYnV0 ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCIsCisJCQkJCQkgICBERUNMX0FUVFJJQlVURVMgKGRl Y2wpKSkKKwkJb21wX3JlcXVpcmVzX21hc2sKKwkJICA9IChlbnVtIG9tcF9yZXF1aXJlcykg KG9tcF9yZXF1aXJlc19tYXNrCisJCQkJCSB8IE9NUF9SRVFVSVJFU19UQVJHRVRfVVNFRCk7 CiAJICAgICAgcG9wX2RlZmVycmluZ19hY2Nlc3NfY2hlY2tzICgpOwogCSAgICAgIGNwX2Zp bmFsaXplX29tcF9kZWNsYXJlX3NpbWQgKHBhcnNlciwgJm9kc2QpOwogCSAgICAgIHJldHVy bjsKQEAgLTQ0Mjg3LDYgKzQ0MjkyLDEwIEBAIGNwX3BhcnNlcl9vbXBfdGVhbXMgKGNwX3Bh cnNlciAqcGFyc2VyLCBjcF90b2tlbiAqcHJhZ21hX3RvaywKIHN0YXRpYyB0cmVlCiBjcF9w YXJzZXJfb21wX3RhcmdldF9kYXRhIChjcF9wYXJzZXIgKnBhcnNlciwgY3BfdG9rZW4gKnBy YWdtYV90b2ssIGJvb2wgKmlmX3ApCiB7CisgIGlmIChmbGFnX29wZW5tcCkKKyAgICBvbXBf cmVxdWlyZXNfbWFzaworICAgICAgPSAoZW51bSBvbXBfcmVxdWlyZXMpIChvbXBfcmVxdWly ZXNfbWFzayB8IE9NUF9SRVFVSVJFU19UQVJHRVRfVVNFRCk7CisKICAgdHJlZSBjbGF1c2Vz CiAgICAgPSBjcF9wYXJzZXJfb21wX2FsbF9jbGF1c2VzIChwYXJzZXIsIE9NUF9UQVJHRVRf REFUQV9DTEFVU0VfTUFTSywKIAkJCQkgIiNwcmFnbWEgb21wIHRhcmdldCBkYXRhIiwgcHJh Z21hX3Rvayk7CkBAIC00NDM5MCw2ICs0NDM5OSwxMCBAQCBjcF9wYXJzZXJfb21wX3Rhcmdl dF9lbnRlcl9kYXRhIChjcF9wYXJzZXIgKnBhcnNlciwgY3BfdG9rZW4gKnByYWdtYV90b2ss CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgaWYgKGZsYWdfb3Blbm1wKQorICAg IG9tcF9yZXF1aXJlc19tYXNrCisgICAgICA9IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9y ZXF1aXJlc19tYXNrIHwgT01QX1JFUVVJUkVTX1RBUkdFVF9VU0VEKTsKKwogICB0cmVlIGNs YXVzZXMKICAgICA9IGNwX3BhcnNlcl9vbXBfYWxsX2NsYXVzZXMgKHBhcnNlciwgT01QX1RB UkdFVF9FTlRFUl9EQVRBX0NMQVVTRV9NQVNLLAogCQkJCSAiI3ByYWdtYSBvbXAgdGFyZ2V0 IGVudGVyIGRhdGEiLCBwcmFnbWFfdG9rKTsKQEAgLTQ0NDgxLDYgKzQ0NDk0LDEwIEBAIGNw X3BhcnNlcl9vbXBfdGFyZ2V0X2V4aXRfZGF0YSAoY3BfcGFyc2VyICpwYXJzZXIsIGNwX3Rv a2VuICpwcmFnbWFfdG9rLAogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgIGlmIChm bGFnX29wZW5tcCkKKyAgICBvbXBfcmVxdWlyZXNfbWFzaworICAgICAgPSAoZW51bSBvbXBf cmVxdWlyZXMpIChvbXBfcmVxdWlyZXNfbWFzayB8IE9NUF9SRVFVSVJFU19UQVJHRVRfVVNF RCk7CisKICAgdHJlZSBjbGF1c2VzCiAgICAgPSBjcF9wYXJzZXJfb21wX2FsbF9jbGF1c2Vz IChwYXJzZXIsIE9NUF9UQVJHRVRfRVhJVF9EQVRBX0NMQVVTRV9NQVNLLAogCQkJCSAiI3By YWdtYSBvbXAgdGFyZ2V0IGV4aXQgZGF0YSIsIHByYWdtYV90b2spOwpAQCAtNDY4NjEsOSAr NDY4NzgsNiBAQCBjcF9wYXJzZXJfb21wX3JlcXVpcmVzIChjcF9wYXJzZXIgKnBhcnNlciwg Y3BfdG9rZW4gKnByYWdtYV90b2spCiAJICAgICAgY3BfcGFyc2VyX3NraXBfdG9fcHJhZ21h X2VvbCAocGFyc2VyLCBwcmFnbWFfdG9rKTsKIAkgICAgICByZXR1cm4gZmFsc2U7CiAJICAg IH0KLQkgIGlmIChwICYmIHRoaXNfcmVxICE9IE9NUF9SRVFVSVJFU19EWU5BTUlDX0FMTE9D QVRPUlMpCi0JICAgIHNvcnJ5X2F0IChjbG9jLCAiJXFzIGNsYXVzZSBvbiAlPHJlcXVpcmVz JT4gZGlyZWN0aXZlIG5vdCAiCi0JCQkgICAgInN1cHBvcnRlZCB5ZXQiLCBwKTsKIAkgIGlm IChwKQogCSAgICBjcF9sZXhlcl9jb25zdW1lX3Rva2VuIChwYXJzZXItPmxleGVyKTsKIAkg IGlmICh0aGlzX3JlcSkKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL29wZW5tcC5jYyBiL2dj Yy9mb3J0cmFuL29wZW5tcC5jYwppbmRleCBkMTJjZWM0M2Q2NC4uNzc5MGVmMzQ2NjQgMTAw NjQ0Ci0tLSBhL2djYy9mb3J0cmFuL29wZW5tcC5jYworKysgYi9nY2MvZm9ydHJhbi9vcGVu bXAuY2MKQEAgLTU0ODEsMTAgKzU0ODEsNiBAQCBnZmNfbWF0Y2hfb21wX3JlcXVpcmVzICh2 b2lkKQogICAgICAgZWxzZQogCWdvdG8gZXJyb3I7CiAKLSAgICAgIGlmIChyZXF1aXJlc19j bGF1c2UgJiB+KE9NUF9SRVFfQVRPTUlDX01FTV9PUkRFUl9NQVNLCi0JCQkgICAgICB8IE9N UF9SRVFfRFlOQU1JQ19BTExPQ0FUT1JTKSkKLQlnZmNfZXJyb3Jfbm93ICgiU29ycnksICVx cyBjbGF1c2UgYXQgJUwgb24gUkVRVUlSRVMgZGlyZWN0aXZlIGlzIG5vdCAiCi0JCSAgICAg ICAieWV0IHN1cHBvcnRlZCIsIGNsYXVzZSwgJm9sZF9sb2MpOwogICAgICAgaWYgKCFnZmNf b21wX3JlcXVpcmVzX2FkZF9jbGF1c2UgKHJlcXVpcmVzX2NsYXVzZSwgY2xhdXNlLCAmb2xk X2xvYywgTlVMTCkpCiAJZ290byBlcnJvcjsKICAgICAgIHJlcXVpcmVzX2NsYXVzZXMgfD0g cmVxdWlyZXNfY2xhdXNlOwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vcGFyc2UuY2MgYi9n Y2MvZm9ydHJhbi9wYXJzZS5jYwppbmRleCA3MzU2ZDFiNWEzYS4uYjE0MmUxNjlhNWMgMTAw NjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3BhcnNlLmNjCisrKyBiL2djYy9mb3J0cmFuL3BhcnNl LmNjCkBAIC02OTA4LDYgKzY5MDgsMjcgQEAgZG9uZToKICAgICAgIGJyZWFrOwogICAgIH0K IAorICBpZiAob21wX3JlcXVpcmVzICYgT01QX1JFUV9UQVJHRVRfTUFTSykKKyAgICB7Cisg ICAgICBvbXBfcmVxdWlyZXNfbWFzayA9IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9yZXF1 aXJlc19tYXNrCisJCQkJCSAgICAgICB8IE9NUF9SRVFVSVJFU19UQVJHRVRfVVNFRCk7Cisg ICAgICBpZiAob21wX3JlcXVpcmVzICYgT01QX1JFUV9SRVZFUlNFX09GRkxPQUQpCisJb21w X3JlcXVpcmVzX21hc2sKKwkgID0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3JlcXVpcmVz X21hc2sKKwkJCQkgfCBPTVBfUkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FEKTsKKyAgICAgIGlm IChvbXBfcmVxdWlyZXMgJiBPTVBfUkVRX1VOSUZJRURfQUREUkVTUykKKwlvbXBfcmVxdWly ZXNfbWFzaworCSAgPSAoZW51bSBvbXBfcmVxdWlyZXMpIChvbXBfcmVxdWlyZXNfbWFzawor CQkJCSB8IE9NUF9SRVFVSVJFU19VTklGSUVEX0FERFJFU1MpOworICAgICAgaWYgKG9tcF9y ZXF1aXJlcyAmIE9NUF9SRVFfVU5JRklFRF9TSEFSRURfTUVNT1JZKQorCW9tcF9yZXF1aXJl c19tYXNrCisJICA9IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9yZXF1aXJlc19tYXNrCisJ CQkJIHwgT01QX1JFUVVJUkVTX1VOSUZJRURfU0hBUkVEX01FTU9SWSk7CisgICAgfQorCisg IGlmIChvbXBfcmVxdWlyZXMgJiBPTVBfUkVRX0RZTkFNSUNfQUxMT0NBVE9SUykKKyAgICBv bXBfcmVxdWlyZXNfbWFzaworCT0gKGVudW0gb21wX3JlcXVpcmVzKSAob21wX3JlcXVpcmVz X21hc2sgfCBPTVBfUkVRVUlSRVNfRFlOQU1JQ19BTExPQ0FUT1JTKTsKICAgLyogRG8gdGhl IHBhcnNlIHRyZWUgZHVtcC4gICovCiAgIGdmY19jdXJyZW50X25zID0gZmxhZ19kdW1wX2Zv cnRyYW5fb3JpZ2luYWwgPyBnZmNfZ2xvYmFsX25zX2xpc3QgOiBOVUxMOwogCmRpZmYgLS1n aXQgYS9nY2MvZ2ltcGxpZnkuY2MgYi9nY2MvZ2ltcGxpZnkuY2MKaW5kZXggY2QxNzk2NjQz ZDcuLjNmZTQ1NzFkNjc3IDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxpZnkuY2MKKysrIGIvZ2Nj L2dpbXBsaWZ5LmNjCkBAIC0zNjQ0LDYgKzM2NDQsOSBAQCBnaW1wbGlmeV9jYWxsX2V4cHIg KHRyZWUgKmV4cHJfcCwgZ2ltcGxlX3NlcSAqcHJlX3AsIGJvb2wgd2FudF92YWx1ZSkKIAkg IHJldHVybiBHU19PSzsKIAl9CiAgICAgfQorICBpZiAoZm5kZWNsICYmIGZsYWdfb3Blbm1w ICYmIG9tcF9ydW50aW1lX2FwaV9jYWxsIChmbmRlY2wsIHRydWUpKQorICAgIG9tcF9yZXF1 aXJlc19tYXNrCisgICAgICA9IChlbnVtIG9tcF9yZXF1aXJlcykgKG9tcF9yZXF1aXJlc19t YXNrIHwgT01QX1JFUVVJUkVTX1RBUkdFVF9VU0VEKTsKIAogICAvKiBSZW1lbWJlciB0aGUg b3JpZ2luYWwgZnVuY3Rpb24gcG9pbnRlciB0eXBlLiAgKi8KICAgZm5wdHJ0eXBlID0gVFJF RV9UWVBFIChDQUxMX0VYUFJfRk4gKCpleHByX3ApKTsKZGlmZiAtLWdpdCBhL2djYy9vbXAt Z2VuZXJhbC5jYyBiL2djYy9vbXAtZ2VuZXJhbC5jYwppbmRleCBhNDA2YzU3OGYzMy4uMTIw YmNhYTEwYjIgMTAwNjQ0Ci0tLSBhL2djYy9vbXAtZ2VuZXJhbC5jYworKysgYi9nY2Mvb21w LWdlbmVyYWwuY2MKQEAgLTg5LDYgKzg5LDE0MyBAQCBvbXBfcHJpdmF0aXplX2J5X3JlZmVy ZW5jZSAodHJlZSBkZWNsKQogICByZXR1cm4gbGFuZ19ob29rcy5kZWNscy5vbXBfcHJpdmF0 aXplX2J5X3JlZmVyZW5jZSAoZGVjbCk7CiB9CiAKKy8qIFJldHVybiB0cnVlIGlmIEZOREVD TCBpcyBhbiBvbXBfKiBydW50aW1lIEFQSSBjYWxsOyB3aXRoIGRldmljZV9hcGlfb25seSBz ZXQsCisgICByZXR1cm5zIHRydWUgb25seSBmb3IgZGV2aWNlIEFQSSBjYWxscy4gICovCisK K2Jvb2wKK29tcF9ydW50aW1lX2FwaV9jYWxsIChjb25zdF90cmVlIGZuZGVjbCwgYm9vbCBk ZXZpY2VfYXBpX29ubHkpCit7CisgIHRyZWUgZGVjbG5hbWUgPSBERUNMX05BTUUgKGZuZGVj bCk7CisgIGlmICghZGVjbG5hbWUKKyAgICAgIHx8IChERUNMX0NPTlRFWFQgKGZuZGVjbCkg IT0gTlVMTF9UUkVFCisJICAmJiBUUkVFX0NPREUgKERFQ0xfQ09OVEVYVCAoZm5kZWNsKSkg IT0gVFJBTlNMQVRJT05fVU5JVF9ERUNMKQorICAgICAgfHwgIVRSRUVfUFVCTElDIChmbmRl Y2wpKQorICAgIHJldHVybiBmYWxzZTsKKworICBjb25zdCBjaGFyICpuYW1lID0gSURFTlRJ RklFUl9QT0lOVEVSIChkZWNsbmFtZSk7CisgIGlmICghc3RhcnRzd2l0aCAobmFtZSwgIm9t cF8iKSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgc3RhdGljIGNvbnN0IGNoYXIgKm9tcF9y dW50aW1lX2FwaXNbXSA9CisgICAgeworICAgICAgLyogVGhpcyBhcnJheSBoYXMgNiBzZWN0 aW9ucy4gIEZpcnN0IG9tcF8qIGNhbGxzIHRoYXQgZG9uJ3QKKwkgaGF2ZSBhbnkgc3VmZml4 ZXMgYW5kIGFyZSBub24tZGV2aWNlIEFQSXMuICAqLworICAgICAgImFsaWduZWRfYWxsb2Mi LAorICAgICAgImFsaWduZWRfY2FsbG9jIiwKKyAgICAgICJhbGxvYyIsCisgICAgICAiY2Fs bG9jIiwKKyAgICAgICJmcmVlIiwKKyAgICAgICJyZWFsbG9jIiwKKyAgICAgIE5VTEwsCisg ICAgICAvKiBOb3cgbGlrZXdpc2UgYnV0IGZvciBkZXZpY2UgQVBJLiAqLworICAgICAgImdl dF9tYXBwZWRfcHRyIiwKKyAgICAgICJ0YXJnZXRfYWxsb2MiLAorICAgICAgInRhcmdldF9h c3NvY2lhdGVfcHRyIiwKKyAgICAgICJ0YXJnZXRfZGlzYXNzb2NpYXRlX3B0ciIsCisgICAg ICAidGFyZ2V0X2ZyZWUiLAorICAgICAgInRhcmdldF9pc19hY2Nlc3NpYmxlIiwKKyAgICAg ICJ0YXJnZXRfaXNfcHJlc2VudCIsCisgICAgICAidGFyZ2V0X21lbWNweSIsCisgICAgICAi dGFyZ2V0X21lbWNweV9hc3luYyIsCisgICAgICAidGFyZ2V0X21lbWNweV9yZWN0IiwKKyAg ICAgICJ0YXJnZXRfbWVtY3B5X3JlY3RfYXN5bmMiLAorICAgICAgTlVMTCwKKyAgICAgIC8q IE5vdyBvbXBfKiBjYWxscyB0aGF0IGFyZSBhdmFpbGFibGUgYXMgb21wXyogYW5kIG9tcF8q XzsgaG93ZXZlciwgdGhlCisJIERFQ0xfTkFNRSBpcyBhbHdheXMgb21wXyogd2l0aG91dCB0 YWlsaW5nIHVuZGVyc2NvcmUuIE5vbiBkZXZpY2UuICAqLworICAgICAgImNhcHR1cmVfYWZm aW5pdHkiLAorICAgICAgImRlc3Ryb3lfYWxsb2NhdG9yIiwKKyAgICAgICJkZXN0cm95X2xv Y2siLAorICAgICAgImRlc3Ryb3lfbmVzdF9sb2NrIiwKKyAgICAgICJkaXNwbGF5X2FmZmlu aXR5IiwKKyAgICAgICJmdWxmaWxsX2V2ZW50IiwKKyAgICAgICJnZXRfYWN0aXZlX2xldmVs IiwKKyAgICAgICJnZXRfYWZmaW5pdHlfZm9ybWF0IiwKKyAgICAgICJnZXRfY2FuY2VsbGF0 aW9uIiwKKyAgICAgICJnZXRfZGVmYXVsdF9hbGxvY2F0b3IiLAorICAgICAgImdldF9kZWZh dWx0X2RldmljZSIsCisgICAgICAiZ2V0X2R5bmFtaWMiLAorICAgICAgImdldF9sZXZlbCIs CisgICAgICAiZ2V0X21heF9hY3RpdmVfbGV2ZWxzIiwKKyAgICAgICJnZXRfbWF4X3Rhc2tf cHJpb3JpdHkiLAorICAgICAgImdldF9tYXhfdGVhbXMiLAorICAgICAgImdldF9tYXhfdGhy ZWFkcyIsCisgICAgICAiZ2V0X25lc3RlZCIsCisgICAgICAiZ2V0X251bV9kZXZpY2VzIiwK KyAgICAgICJnZXRfbnVtX3BsYWNlcyIsCisgICAgICAiZ2V0X251bV9wcm9jcyIsCisgICAg ICAiZ2V0X251bV90ZWFtcyIsCisgICAgICAiZ2V0X251bV90aHJlYWRzIiwKKyAgICAgICJn ZXRfcGFydGl0aW9uX251bV9wbGFjZXMiLAorICAgICAgImdldF9wbGFjZV9udW0iLAorICAg ICAgImdldF9wcm9jX2JpbmQiLAorICAgICAgImdldF9zdXBwb3J0ZWRfYWN0aXZlX2xldmVs cyIsCisgICAgICAiZ2V0X3RlYW1fbnVtIiwKKyAgICAgICJnZXRfdGVhbXNfdGhyZWFkX2xp bWl0IiwKKyAgICAgICJnZXRfdGhyZWFkX2xpbWl0IiwKKyAgICAgICJnZXRfdGhyZWFkX251 bSIsCisgICAgICAiZ2V0X3d0aWNrIiwKKyAgICAgICJnZXRfd3RpbWUiLAorICAgICAgImlu X2ZpbmFsIiwKKyAgICAgICJpbl9wYXJhbGxlbCIsCisgICAgICAiaW5pdF9sb2NrIiwKKyAg ICAgICJpbml0X25lc3RfbG9jayIsCisgICAgICAicGF1c2VfcmVzb3VyY2UiLAorICAgICAg InBhdXNlX3Jlc291cmNlX2FsbCIsCisgICAgICAic2V0X2FmZmluaXR5X2Zvcm1hdCIsCisg ICAgICAic2V0X2RlZmF1bHRfYWxsb2NhdG9yIiwKKyAgICAgICJzZXRfbG9jayIsCisgICAg ICAic2V0X25lc3RfbG9jayIsCisgICAgICAidGVzdF9sb2NrIiwKKyAgICAgICJ0ZXN0X25l c3RfbG9jayIsCisgICAgICAidW5zZXRfbG9jayIsCisgICAgICAidW5zZXRfbmVzdF9sb2Nr IiwKKyAgICAgIE5VTEwsCisgICAgICAvKiBBbmQgZGV2aWNlIEFQSXMuICovCisgICAgICAi Z2V0X2RldmljZV9udW0iLAorICAgICAgImdldF9pbml0aWFsX2RldmljZSIsCisgICAgICAi aXNfaW5pdGlhbF9kZXZpY2UiLCAgLyogRXZlbiBpZiBpdCBkb2VzIG5vdCByZXF1aXJlIGlu aXQnZWQgZGV2aWNlcy4gKi8KKyAgICAgIE5VTEwsCisgICAgICAvKiBBbmQgZmluYWxseSBj YWxscyBhdmFpbGFibGUgYXMgb21wXyosIG9tcF8qXyBhbmQgb21wXypfOF87IGhvd2V2ZXIs CisJIGFzIERFQ0xfTkFNRSBvbmx5IG9tcF8qIGFuZCBvbXBfKl84IGFwcGVhci4gRm9yIG5v biBkZXZpY2UuICAqLworICAgICAgImRpc3BsYXlfZW52IiwKKyAgICAgICJnZXRfYW5jZXN0 b3JfdGhyZWFkX251bSIsCisgICAgICAiaW5pdF9hbGxvY2F0b3IiLAorICAgICAgImdldF9w YXJ0aXRpb25fcGxhY2VfbnVtcyIsCisgICAgICAiZ2V0X3BsYWNlX251bV9wcm9jcyIsCisg ICAgICAiZ2V0X3BsYWNlX3Byb2NfaWRzIiwKKyAgICAgICJnZXRfc2NoZWR1bGUiLAorICAg ICAgImdldF90ZWFtX3NpemUiLAorICAgICAgInNldF9kZWZhdWx0X2RldmljZSIsCisgICAg ICAic2V0X2R5bmFtaWMiLAorICAgICAgInNldF9tYXhfYWN0aXZlX2xldmVscyIsCisgICAg ICAic2V0X25lc3RlZCIsCisgICAgICAic2V0X251bV90ZWFtcyIsCisgICAgICAic2V0X251 bV90aHJlYWRzIiwKKyAgICAgICJzZXRfc2NoZWR1bGUiLAorICAgICAgInNldF90ZWFtc190 aHJlYWRfbGltaXQiLAorICAgICAgTlVMTCwKKyAgICAgIC8qIEFuZCBmb3IgZGV2aWNlIEFQ SXMuIChDdXJyZW50bHkgbm9uZS4pICAqLworICAgIH07CisKKyAgaW50IG1vZGUgPSAwOwor ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQVJSQVlfU0laRSAob21wX3J1bnRpbWVfYXBp cyk7IGkrKykKKyAgICB7CisgICAgICBpZiAob21wX3J1bnRpbWVfYXBpc1tpXSA9PSBOVUxM KQorCXsKKwkgIG1vZGUrKzsKKwkgIGNvbnRpbnVlOworCX0KKyAgICAgIGlmIChkZXZpY2Vf YXBpX29ubHkgJiYgbW9kZSAlIDIgIT0gMCkKKwljb250aW51ZTsKKyAgICAgIHNpemVfdCBs ZW4gPSBzdHJsZW4gKG9tcF9ydW50aW1lX2FwaXNbaV0pOworICAgICAgaWYgKHN0cm5jbXAg KG5hbWUgKyA0LCBvbXBfcnVudGltZV9hcGlzW2ldLCBsZW4pID09IDAKKwkgICYmIChuYW1l WzQgKyBsZW5dID09ICdcMCcKKwkgICAgICB8fCAobW9kZSA+IDEgJiYgc3RyY21wIChuYW1l ICsgNCArIGxlbiwgIl84IikgPT0gMCkpKQorCXJldHVybiB0cnVlOworICAgIH0KKyAgcmV0 dXJuIGZhbHNlOworfQorCiAvKiBBZGp1c3QgKkNPTkRfQ09ERSBhbmQgKk4yIHNvIHRoYXQg dGhlIGZvcm1lciBpcyBlaXRoZXIgTFRfRVhQUiBvciBHVF9FWFBSLAogICAgZ2l2ZW4gdGhh dCBWIGlzIHRoZSBsb29wIGluZGV4IHZhcmlhYmxlIGFuZCBTVEVQIGlzIGxvb3Agc3RlcC4g Ki8KIApkaWZmIC0tZ2l0IGEvZ2NjL29tcC1nZW5lcmFsLmggYi9nY2Mvb21wLWdlbmVyYWwu aAppbmRleCA3YTk0ODMxZThmNS4uZjFiZTlmMjNlZjcgMTAwNjQ0Ci0tLSBhL2djYy9vbXAt Z2VuZXJhbC5oCisrKyBiL2djYy9vbXAtZ2VuZXJhbC5oCkBAIC05NSw2ICs5NSw3IEBAIGV4 dGVybiB0cmVlIG9tcF9maW5kX2NsYXVzZSAodHJlZSBjbGF1c2VzLCBlbnVtIG9tcF9jbGF1 c2VfY29kZSBraW5kKTsKIGV4dGVybiBib29sIG9tcF9pc19hbGxvY2F0YWJsZV9vcl9wdHIg KHRyZWUgZGVjbCk7CiBleHRlcm4gdHJlZSBvbXBfY2hlY2tfb3B0aW9uYWxfYXJndW1lbnQg KHRyZWUgZGVjbCwgYm9vbCBmb3JfcHJlc2VudF9jaGVjayk7CiBleHRlcm4gYm9vbCBvbXBf cHJpdmF0aXplX2J5X3JlZmVyZW5jZSAodHJlZSBkZWNsKTsKK2V4dGVybiBib29sIG9tcF9y dW50aW1lX2FwaV9jYWxsIChjb25zdF90cmVlIGZuZGVjbCwgYm9vbCBkZXZpY2VfYXBpX29u bHkpOwogZXh0ZXJuIHZvaWQgb21wX2FkanVzdF9mb3JfY29uZGl0aW9uIChsb2NhdGlvbl90 IGxvYywgZW51bSB0cmVlX2NvZGUgKmNvbmRfY29kZSwKIAkJCQkgICAgICB0cmVlICpuMiwg dHJlZSB2LCB0cmVlIHN0ZXApOwogZXh0ZXJuIHRyZWUgb21wX2dldF9mb3Jfc3RlcF9mcm9t X2luY3IgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGluY3IpOwpkaWZmIC0tZ2l0IGEvZ2NjL29t cC1sb3cuY2MgYi9nY2Mvb21wLWxvdy5jYwppbmRleCBmOTc2ZTNhMTU0OS4uMjQzZmEyN2E2 MmYgMTAwNjQ0Ci0tLSBhL2djYy9vbXAtbG93LmNjCisrKyBiL2djYy9vbXAtbG93LmNjCkBA IC0zOTg5LDEzNCArMzk4OSw2IEBAIHNldGptcF9vcl9sb25nam1wX3AgKGNvbnN0X3RyZWUg Zm5kZWNsKQogICByZXR1cm4gIXN0cmNtcCAobmFtZSwgInNldGptcCIpIHx8ICFzdHJjbXAg KG5hbWUsICJsb25nam1wIik7CiB9CiAKLS8qIFJldHVybiB0cnVlIGlmIEZOREVDTCBpcyBh biBvbXBfKiBydW50aW1lIEFQSSBjYWxsLiAgKi8KLQotc3RhdGljIGJvb2wKLW9tcF9ydW50 aW1lX2FwaV9jYWxsIChjb25zdF90cmVlIGZuZGVjbCkKLXsKLSAgdHJlZSBkZWNsbmFtZSA9 IERFQ0xfTkFNRSAoZm5kZWNsKTsKLSAgaWYgKCFkZWNsbmFtZQotICAgICAgfHwgKERFQ0xf Q09OVEVYVCAoZm5kZWNsKSAhPSBOVUxMX1RSRUUKLSAgICAgICAgICAmJiBUUkVFX0NPREUg KERFQ0xfQ09OVEVYVCAoZm5kZWNsKSkgIT0gVFJBTlNMQVRJT05fVU5JVF9ERUNMKQotICAg ICAgfHwgIVRSRUVfUFVCTElDIChmbmRlY2wpKQotICAgIHJldHVybiBmYWxzZTsKLQotICBj b25zdCBjaGFyICpuYW1lID0gSURFTlRJRklFUl9QT0lOVEVSIChkZWNsbmFtZSk7Ci0gIGlm ICghc3RhcnRzd2l0aCAobmFtZSwgIm9tcF8iKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAg c3RhdGljIGNvbnN0IGNoYXIgKm9tcF9ydW50aW1lX2FwaXNbXSA9Ci0gICAgewotICAgICAg LyogVGhpcyBhcnJheSBoYXMgMyBzZWN0aW9ucy4gIEZpcnN0IG9tcF8qIGNhbGxzIHRoYXQg ZG9uJ3QKLQkgaGF2ZSBhbnkgc3VmZml4ZXMuICAqLwotICAgICAgImFsaWduZWRfYWxsb2Mi LAotICAgICAgImFsaWduZWRfY2FsbG9jIiwKLSAgICAgICJhbGxvYyIsCi0gICAgICAiY2Fs bG9jIiwKLSAgICAgICJmcmVlIiwKLSAgICAgICJnZXRfbWFwcGVkX3B0ciIsCi0gICAgICAi cmVhbGxvYyIsCi0gICAgICAidGFyZ2V0X2FsbG9jIiwKLSAgICAgICJ0YXJnZXRfYXNzb2Np YXRlX3B0ciIsCi0gICAgICAidGFyZ2V0X2Rpc2Fzc29jaWF0ZV9wdHIiLAotICAgICAgInRh cmdldF9mcmVlIiwKLSAgICAgICJ0YXJnZXRfaXNfYWNjZXNzaWJsZSIsCi0gICAgICAidGFy Z2V0X2lzX3ByZXNlbnQiLAotICAgICAgInRhcmdldF9tZW1jcHkiLAotICAgICAgInRhcmdl dF9tZW1jcHlfYXN5bmMiLAotICAgICAgInRhcmdldF9tZW1jcHlfcmVjdCIsCi0gICAgICAi dGFyZ2V0X21lbWNweV9yZWN0X2FzeW5jIiwKLSAgICAgIE5VTEwsCi0gICAgICAvKiBOb3cg b21wXyogY2FsbHMgdGhhdCBhcmUgYXZhaWxhYmxlIGFzIG9tcF8qIGFuZCBvbXBfKl87IGhv d2V2ZXIsIHRoZQotCSBERUNMX05BTUUgaXMgYWx3YXlzIG9tcF8qIHdpdGhvdXQgdGFpbGlu ZyB1bmRlcnNjb3JlLiAgKi8KLSAgICAgICJjYXB0dXJlX2FmZmluaXR5IiwKLSAgICAgICJk ZXN0cm95X2FsbG9jYXRvciIsCi0gICAgICAiZGVzdHJveV9sb2NrIiwKLSAgICAgICJkZXN0 cm95X25lc3RfbG9jayIsCi0gICAgICAiZGlzcGxheV9hZmZpbml0eSIsCi0gICAgICAiZnVs ZmlsbF9ldmVudCIsCi0gICAgICAiZ2V0X2FjdGl2ZV9sZXZlbCIsCi0gICAgICAiZ2V0X2Fm ZmluaXR5X2Zvcm1hdCIsCi0gICAgICAiZ2V0X2NhbmNlbGxhdGlvbiIsCi0gICAgICAiZ2V0 X2RlZmF1bHRfYWxsb2NhdG9yIiwKLSAgICAgICJnZXRfZGVmYXVsdF9kZXZpY2UiLAotICAg ICAgImdldF9kZXZpY2VfbnVtIiwKLSAgICAgICJnZXRfZHluYW1pYyIsCi0gICAgICAiZ2V0 X2luaXRpYWxfZGV2aWNlIiwKLSAgICAgICJnZXRfbGV2ZWwiLAotICAgICAgImdldF9tYXhf YWN0aXZlX2xldmVscyIsCi0gICAgICAiZ2V0X21heF90YXNrX3ByaW9yaXR5IiwKLSAgICAg ICJnZXRfbWF4X3RlYW1zIiwKLSAgICAgICJnZXRfbWF4X3RocmVhZHMiLAotICAgICAgImdl dF9uZXN0ZWQiLAotICAgICAgImdldF9udW1fZGV2aWNlcyIsCi0gICAgICAiZ2V0X251bV9w bGFjZXMiLAotICAgICAgImdldF9udW1fcHJvY3MiLAotICAgICAgImdldF9udW1fdGVhbXMi LAotICAgICAgImdldF9udW1fdGhyZWFkcyIsCi0gICAgICAiZ2V0X3BhcnRpdGlvbl9udW1f cGxhY2VzIiwKLSAgICAgICJnZXRfcGxhY2VfbnVtIiwKLSAgICAgICJnZXRfcHJvY19iaW5k IiwKLSAgICAgICJnZXRfc3VwcG9ydGVkX2FjdGl2ZV9sZXZlbHMiLAotICAgICAgImdldF90 ZWFtX251bSIsCi0gICAgICAiZ2V0X3RlYW1zX3RocmVhZF9saW1pdCIsCi0gICAgICAiZ2V0 X3RocmVhZF9saW1pdCIsCi0gICAgICAiZ2V0X3RocmVhZF9udW0iLAotICAgICAgImdldF93 dGljayIsCi0gICAgICAiZ2V0X3d0aW1lIiwKLSAgICAgICJpbl9maW5hbCIsCi0gICAgICAi aW5fcGFyYWxsZWwiLAotICAgICAgImluaXRfbG9jayIsCi0gICAgICAiaW5pdF9uZXN0X2xv Y2siLAotICAgICAgImlzX2luaXRpYWxfZGV2aWNlIiwKLSAgICAgICJwYXVzZV9yZXNvdXJj ZSIsCi0gICAgICAicGF1c2VfcmVzb3VyY2VfYWxsIiwKLSAgICAgICJzZXRfYWZmaW5pdHlf Zm9ybWF0IiwKLSAgICAgICJzZXRfZGVmYXVsdF9hbGxvY2F0b3IiLAotICAgICAgInNldF9s b2NrIiwKLSAgICAgICJzZXRfbmVzdF9sb2NrIiwKLSAgICAgICJ0ZXN0X2xvY2siLAotICAg ICAgInRlc3RfbmVzdF9sb2NrIiwKLSAgICAgICJ1bnNldF9sb2NrIiwKLSAgICAgICJ1bnNl dF9uZXN0X2xvY2siLAotICAgICAgTlVMTCwKLSAgICAgIC8qIEFuZCBmaW5hbGx5IGNhbGxz IGF2YWlsYWJsZSBhcyBvbXBfKiwgb21wXypfIGFuZCBvbXBfKl84XzsgaG93ZXZlciwKLQkg YXMgREVDTF9OQU1FIG9ubHkgb21wXyogYW5kIG9tcF8qXzggYXBwZWFyLiAgKi8KLSAgICAg ICJkaXNwbGF5X2VudiIsCi0gICAgICAiZ2V0X2FuY2VzdG9yX3RocmVhZF9udW0iLAotICAg ICAgImluaXRfYWxsb2NhdG9yIiwKLSAgICAgICJnZXRfcGFydGl0aW9uX3BsYWNlX251bXMi LAotICAgICAgImdldF9wbGFjZV9udW1fcHJvY3MiLAotICAgICAgImdldF9wbGFjZV9wcm9j X2lkcyIsCi0gICAgICAiZ2V0X3NjaGVkdWxlIiwKLSAgICAgICJnZXRfdGVhbV9zaXplIiwK LSAgICAgICJzZXRfZGVmYXVsdF9kZXZpY2UiLAotICAgICAgInNldF9keW5hbWljIiwKLSAg ICAgICJzZXRfbWF4X2FjdGl2ZV9sZXZlbHMiLAotICAgICAgInNldF9uZXN0ZWQiLAotICAg ICAgInNldF9udW1fdGVhbXMiLAotICAgICAgInNldF9udW1fdGhyZWFkcyIsCi0gICAgICAi c2V0X3NjaGVkdWxlIiwKLSAgICAgICJzZXRfdGVhbXNfdGhyZWFkX2xpbWl0IgotICAgIH07 Ci0KLSAgaW50IG1vZGUgPSAwOwotICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQVJSQVlf U0laRSAob21wX3J1bnRpbWVfYXBpcyk7IGkrKykKLSAgICB7Ci0gICAgICBpZiAob21wX3J1 bnRpbWVfYXBpc1tpXSA9PSBOVUxMKQotCXsKLQkgIG1vZGUrKzsKLQkgIGNvbnRpbnVlOwot CX0KLSAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKG9tcF9ydW50aW1lX2FwaXNbaV0pOwot ICAgICAgaWYgKHN0cm5jbXAgKG5hbWUgKyA0LCBvbXBfcnVudGltZV9hcGlzW2ldLCBsZW4p ID09IDAKLQkgICYmIChuYW1lWzQgKyBsZW5dID09ICdcMCcKLQkgICAgICB8fCAobW9kZSA+ IDEgJiYgc3RyY21wIChuYW1lICsgNCArIGxlbiwgIl84IikgPT0gMCkpKQotCXJldHVybiB0 cnVlOwotICAgIH0KLSAgcmV0dXJuIGZhbHNlOwotfQotCiAvKiBIZWxwZXIgZnVuY3Rpb24g Zm9yIHNjYW5fb21wLgogCiAgICBDYWxsYmFjayBmb3Igd2Fsa19naW1wbGVfc3RtdCB1c2Vk IHRvIHNjYW4gZm9yIE9NUCBkaXJlY3RpdmVzIGluCkBAIC00MTcxLDcgKzQwNDMsOCBAQCBz Y2FuX29tcF8xX3N0bXQgKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksIGJvb2wgKmhhbmRs ZWRfb3BzX3AsCiAJICAgICAgb21wX2NvbnRleHQgKm9jdHggPSBjdHg7CiAJICAgICAgaWYg KGdpbXBsZV9jb2RlIChjdHgtPnN0bXQpID09IEdJTVBMRV9PTVBfU0NBTiAmJiBjdHgtPm91 dGVyKQogCQlvY3R4ID0gY3R4LT5vdXRlcjsKLQkgICAgICBpZiAob2N0eC0+b3JkZXJfY29u Y3VycmVudCAmJiBvbXBfcnVudGltZV9hcGlfY2FsbCAoZm5kZWNsKSkKKwkgICAgICBpZiAo b2N0eC0+b3JkZXJfY29uY3VycmVudAorCQkgICYmIG9tcF9ydW50aW1lX2FwaV9jYWxsIChm bmRlY2wsIGZhbHNlKSkKIAkJewogCQkgIHJlbW92ZSA9IHRydWU7CiAJCSAgZXJyb3JfYXQg KGdpbXBsZV9sb2NhdGlvbiAoc3RtdCksCkBAIC00MTc5LDcgKzQwNTIsNyBAQCBzY2FuX29t cF8xX3N0bXQgKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksIGJvb2wgKmhhbmRsZWRfb3Bz X3AsCiAJCQkgICAgIiU8b3JkZXIoY29uY3VycmVudCklPiBjbGF1c2UiLCBmbmRlY2wpOwog CQl9CiAJICAgICAgaWYgKGdpbXBsZV9jb2RlIChjdHgtPnN0bXQpID09IEdJTVBMRV9PTVBf VEVBTVMKLQkJICAmJiBvbXBfcnVudGltZV9hcGlfY2FsbCAoZm5kZWNsKQorCQkgICYmIG9t cF9ydW50aW1lX2FwaV9jYWxsIChmbmRlY2wsIGZhbHNlKQogCQkgICYmICgoSURFTlRJRklF Ul9MRU5HVEggKERFQ0xfTkFNRSAoZm5kZWNsKSkKIAkJICAgICAgICE9IHN0cmxlbiAoIm9t cF9nZXRfbnVtX3RlYW1zIikpCiAJCSAgICAgIHx8IHN0cmNtcCAoSURFTlRJRklFUl9QT0lO VEVSIChERUNMX05BTUUgKGZuZGVjbCkpLApAQCAtNDE5Nyw3ICs0MDcwLDcgQEAgc2Nhbl9v bXBfMV9zdG10IChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpLCBib29sICpoYW5kbGVkX29w c19wLAogCSAgICAgIGlmIChnaW1wbGVfY29kZSAoY3R4LT5zdG10KSA9PSBHSU1QTEVfT01Q X1RBUkdFVAogCQkgICYmIChnaW1wbGVfb21wX3RhcmdldF9raW5kIChjdHgtPnN0bXQpCiAJ CSAgICAgID09IEdGX09NUF9UQVJHRVRfS0lORF9SRUdJT04pCi0JCSAgJiYgb21wX3J1bnRp bWVfYXBpX2NhbGwgKGZuZGVjbCkpCisJCSAgJiYgb21wX3J1bnRpbWVfYXBpX2NhbGwgKGZu ZGVjbCwgZmFsc2UpKQogCQl7CiAJCSAgdHJlZSB0Z3RfY2xhdXNlcyA9IGdpbXBsZV9vbXBf dGFyZ2V0X2NsYXVzZXMgKGN0eC0+c3RtdCk7CiAJCSAgdHJlZSBjID0gb21wX2ZpbmRfY2xh dXNlICh0Z3RfY2xhdXNlcywgT01QX0NMQVVTRV9ERVZJQ0UpOwpkaWZmIC0tZ2l0IGEvZ2Nj L29tcC1vZmZsb2FkLmNjIGIvZ2NjL29tcC1vZmZsb2FkLmNjCmluZGV4IGFkNGU3NzIwMTVl Li45OThhYmFiMGYxMSAxMDA2NDQKLS0tIGEvZ2NjL29tcC1vZmZsb2FkLmNjCisrKyBiL2dj Yy9vbXAtb2ZmbG9hZC5jYwpAQCAtMzk3LDYgKzM5NywyNyBAQCBvbXBfZmluaXNoX2ZpbGUg KHZvaWQpCiAgIHVuc2lnbmVkIG51bV9mdW5jcyA9IHZlY19zYWZlX2xlbmd0aCAob2ZmbG9h ZF9mdW5jcyk7CiAgIHVuc2lnbmVkIG51bV92YXJzID0gdmVjX3NhZmVfbGVuZ3RoIChvZmZs b2FkX3ZhcnMpOwogCisgIGlmIChmbGFnX29wZW5tcCAmJiAob21wX3JlcXVpcmVzX21hc2sg JiBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpICE9IDApCisgICAgeworICAgICAgaWYgKHRh cmdldG1fY29tbW9uLmhhdmVfbmFtZWRfc2VjdGlvbnMpCisJeworCSAgY29uc3QgY2hhciAq cmVxdWlyZXNfc2VjdGlvbiA9ICIuZ251LmdvbXBfcmVxdWlyZXMiOworCSAgdHJlZSBtYXNr dmFyID0gYnVpbGRfZGVjbCAoVU5LTk9XTl9MT0NBVElPTiwgVkFSX0RFQ0wsCisJCQkJICAg ICBnZXRfaWRlbnRpZmllciAoIi5nb21wX3JlcXVpcmVzX21hc2siKSwKKwkJCQkgICAgIHVu c2lnbmVkX3R5cGVfbm9kZSk7CisJICBTRVRfREVDTF9BTElHTiAobWFza3ZhciwgVFlQRV9B TElHTiAodW5zaWduZWRfdHlwZV9ub2RlKSk7CisJICBUUkVFX1NUQVRJQyAobWFza3Zhcikg PSAxOworCSAgREVDTF9JTklUSUFMIChtYXNrdmFyKQorCSAgICA9IGJ1aWxkX2ludF9jc3Qg KHVuc2lnbmVkX3R5cGVfbm9kZSwKKwkJCSAgICAgKCh1bnNpZ25lZCBpbnQpIG9tcF9yZXF1 aXJlc19tYXNrCisJCQkgICAgICAmIChPTVBfUkVRVUlSRVNfVU5JRklFRF9BRERSRVNTCisJ CQkJIHwgT01QX1JFUVVJUkVTX1VOSUZJRURfU0hBUkVEX01FTU9SWQorCQkJCSB8IE9NUF9S RVFVSVJFU19SRVZFUlNFX09GRkxPQUQpKSk7CisJICBzZXRfZGVjbF9zZWN0aW9uX25hbWUg KG1hc2t2YXIsIHJlcXVpcmVzX3NlY3Rpb24pOworCSAgdmFycG9vbF9ub2RlOjpmaW5hbGl6 ZV9kZWNsIChtYXNrdmFyKTsKKwl9CisgICAgfQorCiAgIGlmIChudW1fZnVuY3MgPT0gMCAm JiBudW1fdmFycyA9PSAwKQogICAgIHJldHVybjsKIApAQCAtNDQyLDYgKzQ2MywxNCBAQCBv bXBfZmluaXNoX2ZpbGUgKHZvaWQpCiAgICAgfQogICBlbHNlCiAgICAgeworI2lmbmRlZiBB Q0NFTF9DT01QSUxFUgorICAgICAgaWYgKGZsYWdfb3Blbm1wCisJICAmJiAob21wX3JlcXVp cmVzX21hc2sgJiBPTVBfUkVRVUlSRVNfVEFSR0VUX1VTRUQpCisJICAmJiAob21wX3JlcXVp cmVzX21hc2sgJiAoT01QX1JFUVVJUkVTX1VOSUZJRURfQUREUkVTUworCQkJCSAgIHwgT01Q X1JFUVVJUkVTX1VOSUZJRURfU0hBUkVEX01FTU9SWQorCQkJCSAgIHwgT01QX1JFUVVJUkVT X1JFVkVSU0VfT0ZGTE9BRCkpKQorCXNvcnJ5ICgiT3Blbk1QIGRldmljZSBvZmZsb2FkaW5n IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgdGFyZ2V0Iik7CisjZW5kaWYKICAgICAgIGZv ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1fZnVuY3M7IGkrKykKIAl7CiAJICB0cmVlIGl0 ID0gKCpvZmZsb2FkX2Z1bmNzKVtpXTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2dvbXAvcmVxdWlyZXMtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29tcC9yZXF1aXJlcy00LmMKaW5kZXggODhiYTc3NDZjZjguLjhmNDVkODNlYTZlIDEw MDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3JlcXVpcmVzLTQu YworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3JlcXVpcmVzLTQuYwpA QCAtOSw1ICs5LDMgQEAgZm9vICh2b2lkKQogI3ByYWdtYSBvbXAgcmVxdWlyZXMgdW5pZmll ZF9zaGFyZWRfbWVtb3J5CS8qIHsgZGctZXJyb3IgIid1bmlmaWVkX3NoYXJlZF9tZW1vcnkn IGNsYXVzZSB1c2VkIGxleGljYWxseSBhZnRlciBmaXJzdCB0YXJnZXQgY29uc3RydWN0IG9y IG9mZmxvYWRpbmcgQVBJIiB9ICovCiAjcHJhZ21hIG9tcCByZXF1aXJlcyB1bmlmaWVkX2Fk ZHJlc3MJLyogeyBkZy1lcnJvciAiJ3VuaWZpZWRfYWRkcmVzcycgY2xhdXNlIHVzZWQgbGV4 aWNhbGx5IGFmdGVyIGZpcnN0IHRhcmdldCBjb25zdHJ1Y3Qgb3Igb2ZmbG9hZGluZyBBUEki IH0gKi8KICNwcmFnbWEgb21wIHJlcXVpcmVzIHJldmVyc2Vfb2ZmbG9hZAkvKiB7IGRnLWVy cm9yICIncmV2ZXJzZV9vZmZsb2FkJyBjbGF1c2UgdXNlZCBsZXhpY2FsbHkgYWZ0ZXIgZmly c3QgdGFyZ2V0IGNvbnN0cnVjdCBvciBvZmZsb2FkaW5nIEFQSSIgfSAqLwotCi0vKiB7IGRn LXBydW5lLW91dHB1dCAibm90IHN1cHBvcnRlZCB5ZXQiIH0gKi8KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0y LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1kZXZpY2UtYW5j ZXN0b3ItMi5jCmluZGV4IGNmMDVjNTA1MDA0Li5iMTZlNzAxYmQ1YSAxMDA2NDQKLS0tIGEv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9y LTIuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1kZXZp Y2UtYW5jZXN0b3ItMi5jCkBAIC0xLDEzICsxLDExIEBACiAvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLwogCi0jcHJhZ21hIG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQgLyogeyBkZy1t ZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ3JldmVyc2Vfb2ZmbG9hZCcgY2xhdXNl IG9uICdyZXF1aXJlcycgZGlyZWN0aXZlIG5vdCBzdXBwb3J0ZWQgeWV0IiB9ICovCisjcHJh Z21hIG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQKIAogdm9pZAogZm9vIChpbnQgbikK IHsKLSAgLyogVGhlIGZvbGxvd2luZyB0ZXN0IGlzIG1hcmtlZCB3aXRoICd4ZmFpbCcgYmVj YXVzZSBhIHByZXZpb3VzICdzb3JyeScgZnJvbQotICAgICAncmV2ZXJzZV9vZmZsb2FkJyBz dXBwcmVzc2VzIHRoZSAnc29ycnknIGZvciAnYW5jZXN0b3InLiAgKi8KLSAgI3ByYWdtYSBv bXAgdGFyZ2V0IGRldmljZSAoYW5jZXN0b3I6IDEpIC8qIHsgZGctbWVzc2FnZSAiIiAic29y cnksIHVuaW1wbGVtZW50ZWQ6ICdhbmNlc3Rvcicgbm90IHlldCBzdXBwb3J0ZWQiIHsgeGZh aWwgKi0qLSogfSB9ICovCisgICNwcmFnbWEgb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9y OiAxKQogICA7CiAKIApAQCAtMTksOSArMTcsOSBAQCBmb28gKGludCBuKQogICAjcHJhZ21h IG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3RvciA6IDQyKSAvKiB7IGRnLWVycm9yICJ0aGUg J2RldmljZScgY2xhdXNlIGV4cHJlc3Npb24gbXVzdCBldmFsdWF0ZSB0byAnMSciIH0gKi8K ICAgOwogCi0gICNwcmFnbWEgb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yIDogbikgLyog eyBkZy1tZXNzYWdlICIiICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ2FuY2VzdG9yJyBub3Qg eWV0IHN1cHBvcnRlZCIgeyB4ZmFpbCAqLSotKiB9IH0gKi8KKyAgI3ByYWdtYSBvbXAgdGFy Z2V0IGRldmljZSAoYW5jZXN0b3IgOiBuKQogICA7Ci0gICNwcmFnbWEgb21wIHRhcmdldCBk ZXZpY2UgKGFuY2VzdG9yIDogbiArIDEpIC8qIHsgZGctbWVzc2FnZSAiIiAic29ycnksIHVu aW1wbGVtZW50ZWQ6ICdhbmNlc3Rvcicgbm90IHlldCBzdXBwb3J0ZWQiIHsgeGZhaWwgKi0q LSogfSB9ICovCisgICNwcmFnbWEgb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yIDogbiAr IDEpCiAgIDsKIAogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9n b21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTMuYwppbmRleCBlYTZlNWEwY2Y2 Yy4uZDE2NTkwMTA3ZDIgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0zLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTMuYwpAQCAtMTEsNyAr MTEsNyBAQCBpbnQgYmFyICh2b2lkKTsKIAogLyogeyBkZy1kbyBjb21waWxlIH0gKi8KIAot I3ByYWdtYSBvbXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkIC8qIHsgZGctbWVzc2FnZSAi c29ycnksIHVuaW1wbGVtZW50ZWQ6ICdyZXZlcnNlX29mZmxvYWQnIGNsYXVzZSBvbiAncmVx dWlyZXMnIGRpcmVjdGl2ZSBub3Qgc3VwcG9ydGVkIHlldCIgfSAqLworI3ByYWdtYSBvbXAg cmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkCiAKIHZvaWQKIGZvbyAodm9pZCkKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNl c3Rvci00LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3RhcmdldC1kZXZp Y2UtYW5jZXN0b3ItNC5jCmluZGV4IGI0YjU2MjBiYmMwLi4yNDEyMzRmOGRhZiAxMDA2NDQK LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC90YXJnZXQtZGV2aWNlLWFu Y2VzdG9yLTQuYworKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL3Rhcmdl dC1kZXZpY2UtYW5jZXN0b3ItNC5jCkBAIC00LDEyICs0LDEyIEBACiAgIC8qIFRlc3QgdG8g ZW5zdXJlIHRoYXQgZGV2aWNlLW1vZGlmaWVyICdhbmNlc3RvcicgaXMgcGFyc2VkIGNvcnJl Y3RseSBpbgogICAgICBkZXZpY2UgY2xhdXNlcy4gKi8KIAotI3ByYWdtYSBvbXAgcmVxdWly ZXMgcmV2ZXJzZV9vZmZsb2FkIC8qIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50 ZWQ6ICdyZXZlcnNlX29mZmxvYWQnIGNsYXVzZSBvbiAncmVxdWlyZXMnIGRpcmVjdGl2ZSBu b3Qgc3VwcG9ydGVkIHlldCIgfSAqLworI3ByYWdtYSBvbXAgcmVxdWlyZXMgcmV2ZXJzZV9v ZmZsb2FkCiAKIHZvaWQKIGZvbyAodm9pZCkKIHsKLSAgI3ByYWdtYSBvbXAgdGFyZ2V0IGRl dmljZSAoYW5jZXN0b3I6IDEpIC8qIHsgZGctbWVzc2FnZSAiIiAic29ycnksIHVuaW1wbGVt ZW50ZWQ6ICdhbmNlc3Rvcicgbm90IHlldCBzdXBwb3J0ZWQiIHsgeGZhaWwgKi0qLSogfSB9 ICovCisgICNwcmFnbWEgb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yOiAxKSAvKiB7IGRn LW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAnYW5jZXN0b3InIG5vdCB5ZXQgc3Vw cG9ydGVkIiB9ICovCiAgIDsKIAogfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTUuYyBiL2djYy90ZXN0c3Vp dGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci01LmMKaW5kZXgg YjZmZjg0YmNkYWIuLmIxNTIwZmYwNjM2IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItNS5jCisrKyBiL2djYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci01LmMK QEAgLTEsNCArMSw0IEBACi0jcHJhZ21hIG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQg IC8qIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6ICdyZXZlcnNlX29mZmxv YWQnIGNsYXVzZSBvbiAncmVxdWlyZXMnIGRpcmVjdGl2ZSBub3Qgc3VwcG9ydGVkIHlldCIg fSAqLworI3ByYWdtYSBvbXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkCiAKIHZvaWQKIGZv byAoKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3Rhcmdl dC1kZXZpY2UtYW5jZXN0b3ItMi5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0yLmY5MAppbmRleCAxMTdhMWQwMDBhNS4uMjMw YzY5MGQ4NGMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90 YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTIuZjkwCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvZ29tcC90YXJnZXQtZGV2aWNlLWFuY2VzdG9yLTIuZjkwCkBAIC00LDE5ICs0LDE2 IEBAIGltcGxpY2l0IG5vbmUKIAogaW50ZWdlciA6OiBhLCBiLCBjCiAKLSEkb21wIHJlcXVp cmVzIHJldmVyc2Vfb2ZmbG9hZCAgISB7IGRnLWVycm9yICJTb3JyeSwgJ3JldmVyc2Vfb2Zm bG9hZCcgY2xhdXNlIGF0IFxcKDFcXCkgb24gUkVRVUlSRVMgZGlyZWN0aXZlIGlzIG5vdCB5 ZXQgc3VwcG9ydGVkIiB9CishJG9tcCByZXF1aXJlcyByZXZlcnNlX29mZmxvYWQKIAogCi0h IFRoZSBmb2xsb3dpbmcgdGVzdCBjYXNlIGlzIG1hcmtlZCB3aXRoICd4ZmFpbCcgYmVjYXVz ZSBhIHByZXZpb3VzICdzb3JyeScgZnJvbQotISAncmV2ZXJzZV9vZmZsb2FkJyBzdXBwcmVz c2VzIHRoZSAnc29ycnknIGZvciAnYW5jZXN0b3InLgotCi0hJG9tcCB0YXJnZXQgZGV2aWNl IChhbmNlc3RvcjogMSkgICEgeyBkZy1tZXNzYWdlICIiICJzb3JyeSwgdW5pbXBsZW1lbnRl ZDogJ2FuY2VzdG9yJyBub3QgeWV0IHN1cHBvcnRlZCIgeyB4ZmFpbCAqLSotKiB9IH0KKyEk b21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yOiAxKQogISRvbXAgZW5kIHRhcmdldAogCi0h JG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3RvciA6IGEpICAhIHsgZGctbWVzc2FnZSAiIiAi c29ycnksIHVuaW1wbGVtZW50ZWQ6ICdhbmNlc3Rvcicgbm90IHlldCBzdXBwb3J0ZWQiIHsg eGZhaWwgKi0qLSogfSB9CishJG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3RvciA6IGEpCiAh JG9tcCBlbmQgdGFyZ2V0CiAKLSEkb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yIDogYSAr IDEpICAhIHsgZGctbWVzc2FnZSAiIiAic29ycnksIHVuaW1wbGVtZW50ZWQ6ICdhbmNlc3Rv cicgbm90IHlldCBzdXBwb3J0ZWQiIHsgeGZhaWwgKi0qLSogfSB9CishJG9tcCB0YXJnZXQg ZGV2aWNlIChhbmNlc3RvciA6IGEgKyAxKQogISRvbXAgZW5kIHRhcmdldAogCiAKQEAgLTMy LDYxICsyOSw0IEBAIGludGVnZXIgOjogYSwgYiwgYwogISRvbXAgdGFyZ2V0IGRldmljZSAo NDIpCiAhJG9tcCBlbmQgdGFyZ2V0CiAKLQotISBFbnN1cmUgdGhhdCBubyBPcGVuTVAgY29u c3RydWN0cyBhcHBlYXIgaW5zaWRlIHRhcmdldCByZWdpb25zIHdpdGggJ2FuY2VzdG9yJy4K LSEgVGhlIGZvbGxvd2luZyB0ZXN0IGNhc2UgaXMgbWFya2VkIHdpdGggJ3hmYWlsJyBiZWNh dXNlIGEgcHJldmlvdXMgJ3NvcnJ5JyBmcm9tCi0hICdyZXZlcnNlX29mZmxvYWQnIHN1cHBy ZXNzZXMgdGhlICdzb3JyeScgZm9yICdhbmNlc3RvcicuCi0KLSEkb21wIHRhcmdldCBkZXZp Y2UgKGFuY2VzdG9yOiAxKQotICAhJG9tcCB0ZWFtcyAgISB7IGRnLWVycm9yICIiICJPcGVu TVAgY29uc3RydWN0cyBhcmUgbm90IGFsbG93ZWQgaW4gdGFyZ2V0IHJlZ2lvbiB3aXRoICdh bmNlc3RvciciIHsgeGZhaWwgKi0qLSogfSB9Ci0gICEkb21wIGVuZCB0ZWFtcwotISRvbXAg ZW5kIHRhcmdldAotCi0hJG9tcCB0YXJnZXQgZGV2aWNlIChkZXZpY2VfbnVtOiAxKQotICAh JG9tcCB0ZWFtcwotICAhJG9tcCBlbmQgdGVhbXMKLSEkb21wIGVuZCB0YXJnZXQKLQotISRv bXAgdGFyZ2V0IGRldmljZSAoMSkKLSAgISRvbXAgdGVhbXMKLSAgISRvbXAgZW5kIHRlYW1z Ci0hJG9tcCBlbmQgdGFyZ2V0Ci0KLQotISBFbnN1cmUgdGhhdCB3aXRoICdhbmNlc3Rvcicg b25seSB0aGUgJ2RldmljZScsICdmaXJzdHByaXZhdGUnLCAncHJpdmF0ZScsCi0hICdkZWZh dWx0bWFwJywgYW5kICdtYXAnIGNsYXVzZXMgYXBwZWFyIG9uIHRoZSBjb25zdHJ1Y3QuCi0h IFRoZSBmb2xsb3dpbmcgdGVzdCBjYXNlIGlzIG1hcmtlZCB3aXRoICd4ZmFpbCcgYmVjYXVz ZSBhIHByZXZpb3VzICdzb3JyeScgZnJvbQotISAncmV2ZXJzZV9vZmZsb2FkJyBzdXBwcmVz c2VzIHRoZSAnc29ycnknIGZvciAnYW5jZXN0b3InLgotCi0hJG9tcCB0YXJnZXQgbm93YWl0 IGRldmljZSAoYW5jZXN0b3I6IDEpICAhIHsgZGctZXJyb3IgIiIgIndpdGggJ2FuY2VzdG9y Jywgb25seSB0aGUgJ2RldmljZScsICdmaXJzdHByaXZhdGUnLCAncHJpdmF0ZScsICdkZWZh dWx0bWFwJywgYW5kICdtYXAnIGNsYXVzZXMgbWF5IGFwcGVhciBvbiB0aGUgY29uc3RydWN0 IiB7IHhmYWlsICotKi0qIH0gfQotISRvbXAgZW5kIHRhcmdldAotCi0hJG9tcCB0YXJnZXQg ZGV2aWNlIChhbmNlc3RvcjogMSkgbm93YWl0ICAhIHsgZGctZXJyb3IgIiIgIndpdGggJ2Fu Y2VzdG9yJywgb25seSB0aGUgJ2RldmljZScsICdmaXJzdHByaXZhdGUnLCAncHJpdmF0ZScs ICdkZWZhdWx0bWFwJywgYW5kICdtYXAnIGNsYXVzZXMgbWF5IGFwcGVhciBvbiB0aGUgY29u c3RydWN0IiB7IHhmYWlsICotKi0qIH0gfQotISRvbXAgZW5kIHRhcmdldAotCi0hJG9tcCB0 YXJnZXQgbm93YWl0IGRldmljZSAoZGV2aWNlX251bTogMSkKLSEkb21wIGVuZCB0YXJnZXQK LQotISRvbXAgdGFyZ2V0IG5vd2FpdCBkZXZpY2UgKDEpCi0hJG9tcCBlbmQgdGFyZ2V0Ci0K LSEkb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yOiAxKSBmaXJzdHByaXZhdGUgKGEpIHBy aXZhdGUgKGIpIGRlZmF1bHRtYXAgKG5vbmUpIG1hcCAoYykKLSEkb21wIGVuZCB0YXJnZXQK LQotCi0hIEVuc3VyZSB0aGF0ICdhbmNlc3RvcicgaXMgb25seSB1c2VkIHdpdGggJ3Rhcmdl dCcgY29uc3RydWN0cyAobm90IHdpdGgKLSEgJ3RhcmdldCBkYXRhJywgJ3RhcmdldCB1cGRh dGUnIGV0Yy4pLgotISBUaGUgZm9sbG93aW5nIHRlc3QgY2FzZSBpcyBtYXJrZWQgd2l0aCAn eGZhaWwnIGJlY2F1c2UgYSBwcmV2aW91cyAnc29ycnknIGZyb20KLSEgJ3JldmVyc2Vfb2Zm bG9hZCcgc3VwcHJlc3NlcyB0aGUgJ3NvcnJ5JyBmb3IgJ2FuY2VzdG9yJy4KLQotISRvbXAg dGFyZ2V0IGRhdGEgbWFwIChhKSBkZXZpY2UgKGFuY2VzdG9yOiAxKSAgISB7IGRnLWVycm9y ICIiICInZGV2aWNlJyBjbGF1c2Ugd2l0aCAnYW5jZXN0b3InIGlzIG9ubHkgYWxsb3dlZCBv biAndGFyZ2V0JyBjb25zdHJ1Y3QiIHsgeGZhaWwgKi0qLSogfSB9Ci0hJG9tcCBlbmQgdGFy Z2V0IGRhdGEKLQotISRvbXAgdGFyZ2V0IGVudGVyIGRhdGEgbWFwICh0bzogYSkgZGV2aWNl IChhbmNlc3RvcjogMSkgICEgeyBkZy1lcnJvciAiIiAiJ2RldmljZScgY2xhdXNlIHdpdGgg J2FuY2VzdG9yJyBpcyBvbmx5IGFsbG93ZWQgb24gJ3RhcmdldCcgY29uc3RydWN0IiB7IHhm YWlsICotKi0qIH0gfQotISRvbXAgdGFyZ2V0IGV4aXQgZGF0YSBtYXAgKGZyb206IGEpIGRl dmljZSAoYW5jZXN0b3I6IDEpICAhIHsgZGctZXJyb3IgIiIgIidkZXZpY2UnIGNsYXVzZSB3 aXRoICdhbmNlc3RvcicgaXMgb25seSBhbGxvd2VkIG9uICd0YXJnZXQnIGNvbnN0cnVjdCIg eyB4ZmFpbCAqLSotKiB9IH0KLQotISRvbXAgdGFyZ2V0IHVwZGF0ZSB0byAoYSkgZGV2aWNl IChhbmNlc3RvcjogMSkgICEgeyBkZy1lcnJvciAiJ2RldmljZScgY2xhdXNlIHdpdGggJ2Fu Y2VzdG9yJyBpcyBvbmx5IGFsbG93ZWQgb24gJ3RhcmdldCcgY29uc3RydWN0IiAiIiB7IHhm YWlsICotKi0qIH0gfQotISB7IGRnLWVycm9yICJ3aXRoICdhbmNlc3RvcicsIG9ubHkgdGhl ICdkZXZpY2UnLCAnZmlyc3Rwcml2YXRlJywgJ3ByaXZhdGUnLCAnZGVmYXVsdG1hcCcsIGFu ZCAnbWFwJyBjbGF1c2VzIG1heSBhcHBlYXIgb24gdGhlIGNvbnN0cnVjdCIgIiIgeyB4ZmFp bCAqLSotKiB9IC4tMSB9Ci0KLQotZW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor ZW5kCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0 LWRldmljZS1hbmNlc3Rvci0yYS5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rvci0yYS5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmZlYjc2ZmUyMTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3ItMmEu ZjkwCkBAIC0wLDAgKzEsODAgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKworaW1wbGljaXQg bm9uZQorCitpbnRlZ2VyIDo6IGEsIGIsIGMKKworISRvbXAgcmVxdWlyZXMgcmV2ZXJzZV9v ZmZsb2FkCisKKyEkb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yOiAxKQorISRvbXAgZW5k IHRhcmdldAorCishJG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3RvciA6IGEpCishJG9tcCBl bmQgdGFyZ2V0CisKKyEkb21wIHRhcmdldCBkZXZpY2UgKGFuY2VzdG9yIDogYSArIDEpCish JG9tcCBlbmQgdGFyZ2V0CisKKworISRvbXAgdGFyZ2V0IGRldmljZSAoZGV2aWNlX251bTo0 MikKKyEkb21wIGVuZCB0YXJnZXQKKworISRvbXAgdGFyZ2V0IGRldmljZSAoNDIpCishJG9t cCBlbmQgdGFyZ2V0CisKKworISBFbnN1cmUgdGhhdCBubyBPcGVuTVAgY29uc3RydWN0cyBh cHBlYXIgaW5zaWRlIHRhcmdldCByZWdpb25zIHdpdGggJ2FuY2VzdG9yJy4KKworISRvbXAg dGFyZ2V0IGRldmljZSAoYW5jZXN0b3I6IDEpCisgICEkb21wIHRlYW1zICAhIHsgZGctZXJy b3IgIk9wZW5NUCBjb25zdHJ1Y3RzIGFyZSBub3QgYWxsb3dlZCBpbiB0YXJnZXQgcmVnaW9u IHdpdGggJ2FuY2VzdG9yJyIgfQorICAhJG9tcCBlbmQgdGVhbXMKKyEkb21wIGVuZCB0YXJn ZXQKKworISRvbXAgdGFyZ2V0IGRldmljZSAoZGV2aWNlX251bTogMSkKKyAgISRvbXAgdGVh bXMKKyAgISRvbXAgZW5kIHRlYW1zCishJG9tcCBlbmQgdGFyZ2V0CisKKyEkb21wIHRhcmdl dCBkZXZpY2UgKDEpCisgICEkb21wIHRlYW1zCisgICEkb21wIGVuZCB0ZWFtcworISRvbXAg ZW5kIHRhcmdldAorCisKKyEgRW5zdXJlIHRoYXQgd2l0aCAnYW5jZXN0b3InIG9ubHkgdGhl ICdkZXZpY2UnLCAnZmlyc3Rwcml2YXRlJywgJ3ByaXZhdGUnLAorISAnZGVmYXVsdG1hcCcs IGFuZCAnbWFwJyBjbGF1c2VzIGFwcGVhciBvbiB0aGUgY29uc3RydWN0LgorCishJG9tcCB0 YXJnZXQgbm93YWl0IGRldmljZSAoYW5jZXN0b3I6IDEpICAhIHsgZGctZXJyb3IgIndpdGgg J2FuY2VzdG9yJywgb25seSB0aGUgJ2RldmljZScsICdmaXJzdHByaXZhdGUnLCAncHJpdmF0 ZScsICdkZWZhdWx0bWFwJywgYW5kICdtYXAnIGNsYXVzZXMgbWF5IGFwcGVhciBvbiB0aGUg Y29uc3RydWN0IiB9CishJG9tcCBlbmQgdGFyZ2V0CisKKyEkb21wIHRhcmdldCBkZXZpY2Ug KGFuY2VzdG9yOiAxKSBub3dhaXQgICEgeyBkZy1lcnJvciAid2l0aCAnYW5jZXN0b3InLCBv bmx5IHRoZSAnZGV2aWNlJywgJ2ZpcnN0cHJpdmF0ZScsICdwcml2YXRlJywgJ2RlZmF1bHRt YXAnLCBhbmQgJ21hcCcgY2xhdXNlcyBtYXkgYXBwZWFyIG9uIHRoZSBjb25zdHJ1Y3QiIH0K KyEkb21wIGVuZCB0YXJnZXQKKworISRvbXAgdGFyZ2V0IG5vd2FpdCBkZXZpY2UgKGRldmlj ZV9udW06IDEpCishJG9tcCBlbmQgdGFyZ2V0CisKKyEkb21wIHRhcmdldCBub3dhaXQgZGV2 aWNlICgxKQorISRvbXAgZW5kIHRhcmdldAorCishJG9tcCB0YXJnZXQgZGV2aWNlIChhbmNl c3RvcjogMSkgZmlyc3Rwcml2YXRlIChhKSBwcml2YXRlIChiKSBkZWZhdWx0bWFwIChub25l KSBtYXAgKGMpCishJG9tcCBlbmQgdGFyZ2V0CisKKworISBFbnN1cmUgdGhhdCAnYW5jZXN0 b3InIGlzIG9ubHkgdXNlZCB3aXRoICd0YXJnZXQnIGNvbnN0cnVjdHMgKG5vdCB3aXRoCish ICd0YXJnZXQgZGF0YScsICd0YXJnZXQgdXBkYXRlJyBldGMuKS4KKyEgVGhlIGZvbGxvd2lu ZyB0ZXN0IGNhc2UgaXMgbWFya2VkIHdpdGggJ3hmYWlsJyBiZWNhdXNlIGEgcHJldmlvdXMg J3NvcnJ5JyBmcm9tCishICdyZXZlcnNlX29mZmxvYWQnIHN1cHByZXNzZXMgdGhlICdzb3Jy eScgZm9yICdhbmNlc3RvcicuCisKKyEkb21wIHRhcmdldCBkYXRhIG1hcCAoYSkgZGV2aWNl IChhbmNlc3RvcjogMSkgICEgeyBkZy1lcnJvciAiJ2RldmljZScgY2xhdXNlIHdpdGggJ2Fu Y2VzdG9yJyBpcyBvbmx5IGFsbG93ZWQgb24gJ3RhcmdldCcgY29uc3RydWN0IiB9CishJG9t cCBlbmQgdGFyZ2V0IGRhdGEKKworISRvbXAgdGFyZ2V0IGVudGVyIGRhdGEgbWFwICh0bzog YSkgZGV2aWNlIChhbmNlc3RvcjogMSkgICEgeyBkZy1lcnJvciAiJ2RldmljZScgY2xhdXNl IHdpdGggJ2FuY2VzdG9yJyBpcyBvbmx5IGFsbG93ZWQgb24gJ3RhcmdldCcgY29uc3RydWN0 IiB9CishJG9tcCB0YXJnZXQgZXhpdCBkYXRhIG1hcCAoZnJvbTogYSkgZGV2aWNlIChhbmNl c3RvcjogMSkgICEgeyBkZy1lcnJvciAiJ2RldmljZScgY2xhdXNlIHdpdGggJ2FuY2VzdG9y JyBpcyBvbmx5IGFsbG93ZWQgb24gJ3RhcmdldCcgY29uc3RydWN0IiB9CisKKyEkb21wIHRh cmdldCB1cGRhdGUgdG8gKGEpIGRldmljZSAoYW5jZXN0b3I6IDEpICAhIHsgZGctZXJyb3Ig IidkZXZpY2UnIGNsYXVzZSB3aXRoICdhbmNlc3RvcicgaXMgb25seSBhbGxvd2VkIG9uICd0 YXJnZXQnIGNvbnN0cnVjdCIgfQorCishJG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3Rvcjog MSkgaWYoLmZhbHNlLikKKyEgeyBkZy1lcnJvciAid2l0aCAnYW5jZXN0b3InLCBvbmx5IHRo ZSAnZGV2aWNlJywgJ2ZpcnN0cHJpdmF0ZScsICdwcml2YXRlJywgJ2RlZmF1bHRtYXAnLCBh bmQgJ21hcCcgY2xhdXNlcyBtYXkgYXBwZWFyIG9uIHRoZSBjb25zdHJ1Y3QiICIiIHsgdGFy Z2V0ICotKi0qIH0gLi0xIH0KKyEkb21wIGVuZCB0YXJnZXQKKworZW5kCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0LWRldmljZS1hbmNlc3Rv ci0zLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90YXJnZXQtZGV2aWNl LWFuY2VzdG9yLTMuZjkwCmluZGV4IGYxMTQ1YmRlMmVjLi5lODk3NWU2YTA4YiAxMDA2NDQK LS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZpY2UtYW5j ZXN0b3ItMy5mOTAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3Rhcmdl dC1kZXZpY2UtYW5jZXN0b3ItMy5mOTAKQEAgLTE2LDEwICsxNiwxMCBAQCBzdWJyb3V0aW5l IGYxICgpCiAgIGltcGxpY2l0IG5vbmUKICAgaW50ZWdlciA6OiBuCiAKLSAgISRvbXAgcmVx dWlyZXMgcmV2ZXJzZV9vZmZsb2FkICAhIHsgZGctZXJyb3IgIlNvcnJ5LCAncmV2ZXJzZV9v ZmZsb2FkJyBjbGF1c2UgYXQgXFwoMVxcKSBvbiBSRVFVSVJFUyBkaXJlY3RpdmUgaXMgbm90 IHlldCBzdXBwb3J0ZWQiIH0KKyAgISRvbXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZsb2FkCiAK ICAgISRvbXAgdGFyZ2V0IGRldmljZSAoYW5jZXN0b3IgOiAxKQotICAgIG4gPSBvbXBfZ2V0 X3RocmVhZF9udW0gKCkgICEgeyBkZy1lcnJvciAiIiAiT3Blbk1QIHJ1bnRpbWUgQVBJIGNh bGwgJ29tcF9nZXRfdGhyZWFkX251bScgaW4gYSByZWdpb24gd2l0aCAnZGV2aWNlXFwoYW5j ZXN0b3JcXCknIGNsYXVzZSIgeyB4ZmFpbCAqLSotKiB9IH0KKyAgICBuID0gb21wX2dldF90 aHJlYWRfbnVtICgpICAhIHsgZGctZXJyb3IgIk9wZW5NUCBydW50aW1lIEFQSSBjYWxsICdv bXBfZ2V0X3RocmVhZF9udW0nIGluIGEgcmVnaW9uIHdpdGggJ2RldmljZVxcKGFuY2VzdG9y XFwpJyBjbGF1c2UiIH0KICAgISRvbXAgZW5kIHRhcmdldAogCiAgICEkb21wIHRhcmdldCBk ZXZpY2UgKGRldmljZV9udW0gOiAxKQpAQCAtMzAsNCArMzAsNCBAQCBzdWJyb3V0aW5lIGYx ICgpCiAgICAgbiA9IG9tcF9nZXRfdGhyZWFkX251bSAoKQogICAhJG9tcCBlbmQgdGFyZ2V0 CiAKLWVuZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2VuZApkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3RhcmdldC1kZXZpY2UtYW5jZXN0b3It NC5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvdGFyZ2V0LWRldmljZS1h bmNlc3Rvci00LmY5MAppbmRleCA2Mzg3MmZhNTFmYi4uYWI1NmUyZDFkNTIgMTAwNjQ0Ci0t LSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90YXJnZXQtZGV2aWNlLWFuY2Vz dG9yLTQuZjkwCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC90YXJnZXQt ZGV2aWNlLWFuY2VzdG9yLTQuZjkwCkBAIC00LDExICs0LDExIEBACiAhIFRlc3QgdG8gZW5z dXJlIHRoYXQgZGV2aWNlLW1vZGlmaWVyICdhbmNlc3RvcicgaXMgcGFyc2VkIGNvcnJlY3Rs eSBpbgogISBkZXZpY2UgY2xhdXNlcy4KIAotISRvbXAgcmVxdWlyZXMgcmV2ZXJzZV9vZmZs b2FkICAhIHsgZGctZXJyb3IgIlNvcnJ5LCAncmV2ZXJzZV9vZmZsb2FkJyBjbGF1c2UgYXQg XFwoMVxcKSBvbiBSRVFVSVJFUyBkaXJlY3RpdmUgaXMgbm90IHlldCBzdXBwb3J0ZWQiIH0K KyEkb21wIHJlcXVpcmVzIHJldmVyc2Vfb2ZmbG9hZAogCi0hJG9tcCB0YXJnZXQgZGV2aWNl IChhbmNlc3RvciA6IDEpICAhIHsgZGctbWVzc2FnZSAiIiAic29ycnksIHVuaW1wbGVtZW50 ZWQ6ICdhbmNlc3Rvcicgbm90IHlldCBzdXBwb3J0ZWQiIHsgeGZhaWwgKi0qLSogfSB9Cish JG9tcCB0YXJnZXQgZGV2aWNlIChhbmNlc3RvciA6IDEpICAhIHsgZGctbWVzc2FnZSAic29y cnksIHVuaW1wbGVtZW50ZWQ6ICdhbmNlc3Rvcicgbm90IHlldCBzdXBwb3J0ZWQiIH0KICEk b21wIGVuZCB0YXJnZXQKIAogZW5kCiAKLSEgVE9ETzogZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAicHJhZ21hIG9tcCB0YXJnZXQgXFteXG5ccildKmRldmljZVxcKGFuY2Vz dG9yOjFcXCkiIDEgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzICJwcmFnbWEgb21wIHRhcmdldCBcW15cblxyKV0qZGV2aWNlXFwoYW5jZXN0 b3I6MVxcKSIgMSAib3JpZ2luYWwiIH0gfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9nb21wLWNv bnN0YW50cy5oIGIvaW5jbHVkZS9nb21wLWNvbnN0YW50cy5oCmluZGV4IDcwMWQzM2RhZTQ5 Li5lYmY2OTc4YjY5NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9nb21wLWNvbnN0YW50cy5oCisr KyBiL2luY2x1ZGUvZ29tcC1jb25zdGFudHMuaApAQCAtMzMwLDYgKzMzMCwxMiBAQCBlbnVt IGdvbXBfbWFwX2tpbmQKICNkZWZpbmUgR09NUF9ERVBFTkRfTVVURVhJTk9VVFNFVAk0CiAj ZGVmaW5lIEdPTVBfREVQRU5EX0lOT1VUU0VUCQk1CiAKKy8qIEZsYWcgdmFsdWVzIGZvciBy ZXF1aXJlcy1kaXJlY3RpdmUgZmVhdHVyZXMsIG11c3QgbWF0Y2ggY29ycmVzcG9uZGluZwor ICAgT01QX1JFUVVJUkVTXyogdmFsdWVzIGluIGdjYy9vbXAtZ2VuZXJhbC5oLiAgKi8KKyNk ZWZpbmUgR09NUF9SRVFVSVJFU19VTklGSUVEX0FERFJFU1MgICAgICAgMHgxMAorI2RlZmlu ZSBHT01QX1JFUVVJUkVTX1VOSUZJRURfU0hBUkVEX01FTU9SWSAweDIwCisjZGVmaW5lIEdP TVBfUkVRVUlSRVNfUkVWRVJTRV9PRkZMT0FEICAgICAgIDB4ODAKKwogLyogSFNBIHNwZWNp ZmljIGRhdGEgc3RydWN0dXJlcy4gICovCiAKIC8qIElkZW50aWZpZXJzIG9mIGRldmljZS1z cGVjaWZpYyB0YXJnZXQgYXJndW1lbnRzLiAgKi8KZGlmZiAtLWdpdCBhL2xpYmdjYy9vZmZs b2Fkc3R1ZmYuYyBiL2xpYmdjYy9vZmZsb2Fkc3R1ZmYuYwppbmRleCAxMGUxZmUxOWM4ZS4u YjIyODI5MjRmYjQgMTAwNjQ0Ci0tLSBhL2xpYmdjYy9vZmZsb2Fkc3R1ZmYuYworKysgYi9s aWJnY2Mvb2ZmbG9hZHN0dWZmLmMKQEAgLTU0LDYgKzU0LDkgQEAgY29uc3Qgdm9pZCAqY29u c3QgX19vZmZsb2FkX3Zhcl90YWJsZVswXQogICBfX2F0dHJpYnV0ZV9fICgoX191c2VkX18s IHZpc2liaWxpdHkgKCJoaWRkZW4iKSwKIAkJICBzZWN0aW9uIChPRkZMT0FEX1ZBUl9UQUJM RV9TRUNUSU9OX05BTUUpKSkgPSB7IH07CiAKK2NvbnN0IHVuc2lnbmVkIGludCBjb25zdCBf X3JlcXVpcmVzX21hc2tfdGFibGVbMF0KKyAgX19hdHRyaWJ1dGVfXyAoKF9fdXNlZF9fLCBz ZWN0aW9uICgiLmdudS5nb21wX3JlcXVpcmVzIikpKSA9IHsgfTsKKwogI2VsaWYgZGVmaW5l ZCBDUlRfRU5ECiAKIGNvbnN0IHZvaWQgKmNvbnN0IF9fb2ZmbG9hZF9mdW5jc19lbmRbMF0K QEAgLTYzLDYgKzY2LDkgQEAgY29uc3Qgdm9pZCAqY29uc3QgX19vZmZsb2FkX3ZhcnNfZW5k WzBdCiAgIF9fYXR0cmlidXRlX18gKChfX3VzZWRfXywgdmlzaWJpbGl0eSAoImhpZGRlbiIp LAogCQkgIHNlY3Rpb24gKE9GRkxPQURfVkFSX1RBQkxFX1NFQ1RJT05fTkFNRSkpKSA9IHsg fTsKIAorY29uc3QgdW5zaWduZWQgaW50IGNvbnN0IF9fcmVxdWlyZXNfbWFza190YWJsZV9l bmRbMF0KKyAgX19hdHRyaWJ1dGVfXyAoKF9fdXNlZF9fLCBzZWN0aW9uICgiLmdudS5nb21w X3JlcXVpcmVzIikpKSA9IHsgfTsKKwogI2VsaWYgZGVmaW5lZCBDUlRfVEFCTEUKIAogZXh0 ZXJuIGNvbnN0IHZvaWQgKmNvbnN0IF9fb2ZmbG9hZF9mdW5jX3RhYmxlW107CkBAIC03Nyw2 ICs4Myw5IEBAIGNvbnN0IHZvaWQgKmNvbnN0IF9fT0ZGTE9BRF9UQUJMRV9fW10KICAgJl9f b2ZmbG9hZF92YXJfdGFibGUsICZfX29mZmxvYWRfdmFyc19lbmQKIH07CiAKK2V4dGVybiBj b25zdCB1bnNpZ25lZCBpbnQgY29uc3QgX19yZXF1aXJlc19tYXNrX3RhYmxlW107CitleHRl cm4gY29uc3QgdW5zaWduZWQgaW50IGNvbnN0IF9fcmVxdWlyZXNfbWFza190YWJsZV9lbmRb XTsKKwogI2Vsc2UgLyogISBDUlRfQkVHSU4gJiYgISBDUlRfRU5EICYmICEgQ1JUX1RBQkxF ICAqLwogI2Vycm9yICJPbmUgb2YgQ1JUX0JFR0lOLCBDUlRfRU5EIG9yIENSVF9UQUJMRSBt dXN0IGJlIGRlZmluZWQuIgogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdvbXAt cGx1Z2luLmggYi9saWJnb21wL2xpYmdvbXAtcGx1Z2luLmgKaW5kZXggMDdhYjcwMGI4MGMu LmFiM2VkNjM4NDc1IDEwMDY0NAotLS0gYS9saWJnb21wL2xpYmdvbXAtcGx1Z2luLmgKKysr IGIvbGliZ29tcC9saWJnb21wLXBsdWdpbi5oCkBAIC0xMjUsNyArMTI1LDcgQEAgZXh0ZXJu IHZvaWQgR09NUF9QTFVHSU5fZmF0YWwgKGNvbnN0IGNoYXIgKiwgLi4uKQogZXh0ZXJuIGNv bnN0IGNoYXIgKkdPTVBfT0ZGTE9BRF9nZXRfbmFtZSAodm9pZCk7CiBleHRlcm4gdW5zaWdu ZWQgaW50IEdPTVBfT0ZGTE9BRF9nZXRfY2FwcyAodm9pZCk7CiBleHRlcm4gaW50IEdPTVBf T0ZGTE9BRF9nZXRfdHlwZSAodm9pZCk7Ci1leHRlcm4gaW50IEdPTVBfT0ZGTE9BRF9nZXRf bnVtX2RldmljZXMgKHZvaWQpOworZXh0ZXJuIGludCBHT01QX09GRkxPQURfZ2V0X251bV9k ZXZpY2VzICh1bnNpZ25lZCBpbnQpOwogZXh0ZXJuIGJvb2wgR09NUF9PRkZMT0FEX2luaXRf ZGV2aWNlIChpbnQpOwogZXh0ZXJuIGJvb2wgR09NUF9PRkZMT0FEX2ZpbmlfZGV2aWNlIChp bnQpOwogZXh0ZXJuIHVuc2lnbmVkIEdPTVBfT0ZGTE9BRF92ZXJzaW9uICh2b2lkKTsKZGlm ZiAtLWdpdCBhL2xpYmdvbXAvb2FjYy1ob3N0LmMgYi9saWJnb21wL29hY2MtaG9zdC5jCmlu ZGV4IDViYjg4OTkyNmQzLi5lYjExYjljZjE2YSAxMDA2NDQKLS0tIGEvbGliZ29tcC9vYWNj LWhvc3QuYworKysgYi9saWJnb21wL29hY2MtaG9zdC5jCkBAIC01NCw3ICs1NCw3IEBAIGhv c3RfZ2V0X3R5cGUgKHZvaWQpCiB9CiAKIHN0YXRpYyBpbnQKLWhvc3RfZ2V0X251bV9kZXZp Y2VzICh2b2lkKQoraG9zdF9nZXRfbnVtX2RldmljZXMgKHVuc2lnbmVkIGludCBvbXBfcmVx dWlyZXNfbWFzayBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKIHsKICAgcmV0dXJuIDE7CiB9 CkBAIC0yMjksNyArMjI5LDcgQEAgaG9zdF9vcGVuYWNjX2dldF9wcm9wZXJ0eSAoaW50IG4s IGVudW0gZ29hY2NfcHJvcGVydHkgcHJvcCkKIHsKICAgdW5pb24gZ29hY2NfcHJvcGVydHlf dmFsdWUgbnVsbHZhbCA9IHsgLnZhbCA9IDAgfTsKIAotICBpZiAobiA+PSBob3N0X2dldF9u dW1fZGV2aWNlcyAoKSkKKyAgaWYgKG4gPj0gaG9zdF9nZXRfbnVtX2RldmljZXMgKDApKQog ICAgIHJldHVybiBudWxsdmFsOwogCiAgIHN3aXRjaCAocHJvcCkKZGlmZiAtLWdpdCBhL2xp YmdvbXAvb2FjYy1pbml0LmMgYi9saWJnb21wL29hY2MtaW5pdC5jCmluZGV4IDE1NjVhYTBm MjkwLi40MmMzZTc0ZTZiYSAxMDA2NDQKLS0tIGEvbGliZ29tcC9vYWNjLWluaXQuYworKysg Yi9saWJnb21wL29hY2MtaW5pdC5jCkBAIC0xNDgsNyArMTQ4LDcgQEAgcmVzb2x2ZV9kZXZp Y2UgKGFjY19kZXZpY2VfdCBkLCBib29sIGZhaWxfaXNfZXJyb3IpCiAJICAgICAgaWYgKGRp c3BhdGNoZXJzW2RdCiAJCSAgJiYgIXN0cmNhc2VjbXAgKGdvYWNjX2RldmljZV90eXBlLAog CQkJCSAgZ2V0X29wZW5hY2NfbmFtZSAoZGlzcGF0Y2hlcnNbZF0tPm5hbWUpKQotCQkgICYm IGRpc3BhdGNoZXJzW2RdLT5nZXRfbnVtX2RldmljZXNfZnVuYyAoKSA+IDApCisJCSAgJiYg ZGlzcGF0Y2hlcnNbZF0tPmdldF9udW1fZGV2aWNlc19mdW5jICgwKSA+IDApCiAJCWdvdG8g Zm91bmQ7CiAKIAkgICAgaWYgKGZhaWxfaXNfZXJyb3IpCkBAIC0xNjksNyArMTY5LDcgQEAg cmVzb2x2ZV9kZXZpY2UgKGFjY19kZXZpY2VfdCBkLCBib29sIGZhaWxfaXNfZXJyb3IpCiAg ICAgY2FzZSBhY2NfZGV2aWNlX25vdF9ob3N0OgogICAgICAgLyogRmluZCB0aGUgZmlyc3Qg YXZhaWxhYmxlIGRldmljZSBhZnRlciBhY2NfZGV2aWNlX25vdF9ob3N0LiAgKi8KICAgICAg IHdoaWxlIChrbm93bl9kZXZpY2VfdHlwZV9wICgrK2QpKQotCWlmIChkaXNwYXRjaGVyc1tk XSAmJiBkaXNwYXRjaGVyc1tkXS0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKCkgPiAwKQorCWlm IChkaXNwYXRjaGVyc1tkXSAmJiBkaXNwYXRjaGVyc1tkXS0+Z2V0X251bV9kZXZpY2VzX2Z1 bmMgKDApID4gMCkKIAkgIGdvdG8gZm91bmQ7CiAgICAgICBpZiAoZF9hcmcgPT0gYWNjX2Rl dmljZV9kZWZhdWx0KQogCXsKQEAgLTMwMiw3ICszMDIsNyBAQCBhY2NfaW5pdF8xIChhY2Nf ZGV2aWNlX3QgZCwgYWNjX2NvbnN0cnVjdF90IHBhcmVudF9jb25zdHJ1Y3QsIGludCBpbXBs aWNpdCkKIAogICBiYXNlX2RldiA9IHJlc29sdmVfZGV2aWNlIChkLCB0cnVlKTsKIAotICBu ZGV2cyA9IGJhc2VfZGV2LT5nZXRfbnVtX2RldmljZXNfZnVuYyAoKTsKKyAgbmRldnMgPSBi YXNlX2Rldi0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKDApOwogCiAgIGlmIChuZGV2cyA8PSAw IHx8IGdvYWNjX2RldmljZV9udW0gPj0gbmRldnMpCiAgICAgYWNjX2Rldl9udW1fb3V0X29m X3JhbmdlIChkLCBnb2FjY19kZXZpY2VfbnVtLCBuZGV2cyk7CkBAIC0zNTEsNyArMzUxLDcg QEAgYWNjX3NodXRkb3duXzEgKGFjY19kZXZpY2VfdCBkKQogICAvKiBHZXQgdGhlIGJhc2Ug ZGV2aWNlIGZvciB0aGlzIGRldmljZSB0eXBlLiAgKi8KICAgYmFzZV9kZXYgPSByZXNvbHZl X2RldmljZSAoZCwgdHJ1ZSk7CiAKLSAgbmRldnMgPSBiYXNlX2Rldi0+Z2V0X251bV9kZXZp Y2VzX2Z1bmMgKCk7CisgIG5kZXZzID0gYmFzZV9kZXYtPmdldF9udW1fZGV2aWNlc19mdW5j ICgwKTsKIAogICAvKiBVbmxvYWQgYWxsIHRoZSBkZXZpY2VzIG9mIHRoaXMgdHlwZSB0aGF0 IGhhdmUgYmVlbiBvcGVuZWQuICAqLwogICBmb3IgKGkgPSAwOyBpIDwgbmRldnM7IGkrKykK QEAgLTUyMCw3ICs1MjAsNyBAQCBnb2FjY19hdHRhY2hfaG9zdF90aHJlYWRfdG9fZGV2aWNl IChpbnQgb3JkKQogICAgICAgYmFzZV9kZXYgPSBjYWNoZWRfYmFzZV9kZXY7CiAgICAgfQog ICAKLSAgbnVtX2RldmljZXMgPSBiYXNlX2Rldi0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKCk7 CisgIG51bV9kZXZpY2VzID0gYmFzZV9kZXYtPmdldF9udW1fZGV2aWNlc19mdW5jICgwKTsK ICAgaWYgKG51bV9kZXZpY2VzIDw9IDAgfHwgb3JkID49IG51bV9kZXZpY2VzKQogICAgIGFj Y19kZXZfbnVtX291dF9vZl9yYW5nZSAoYWNjX2RldmljZV90eXBlIChiYXNlX2Rldi0+dHlw ZSksIG9yZCwKIAkJCSAgICAgIG51bV9kZXZpY2VzKTsKQEAgLTU5OSw3ICs1OTksNyBAQCBh Y2NfZ2V0X251bV9kZXZpY2VzIChhY2NfZGV2aWNlX3QgZCkKICAgaWYgKCFhY2NfZGV2KQog ICAgIHJldHVybiAwOwogCi0gIG4gPSBhY2NfZGV2LT5nZXRfbnVtX2RldmljZXNfZnVuYyAo KTsKKyAgbiA9IGFjY19kZXYtPmdldF9udW1fZGV2aWNlc19mdW5jICgwKTsKICAgaWYgKG4g PCAwKQogICAgIG4gPSAwOwogCkBAIC03NzksNyArNzc5LDcgQEAgYWNjX3NldF9kZXZpY2Vf bnVtIChpbnQgb3JkLCBhY2NfZGV2aWNlX3QgZCkKIAogICAgICAgY2FjaGVkX2Jhc2VfZGV2 ID0gYmFzZV9kZXYgPSByZXNvbHZlX2RldmljZSAoZCwgdHJ1ZSk7CiAKLSAgICAgIG51bV9k ZXZpY2VzID0gYmFzZV9kZXYtPmdldF9udW1fZGV2aWNlc19mdW5jICgpOworICAgICAgbnVt X2RldmljZXMgPSBiYXNlX2Rldi0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKDApOwogCiAgICAg ICBpZiAobnVtX2RldmljZXMgPD0gMCB8fCBvcmQgPj0gbnVtX2RldmljZXMpCiAgICAgICAg IGFjY19kZXZfbnVtX291dF9vZl9yYW5nZSAoZCwgb3JkLCBudW1fZGV2aWNlcyk7CkBAIC04 MTQsNyArODE0LDcgQEAgZ2V0X3Byb3BlcnR5X2FueSAoaW50IG9yZCwgYWNjX2RldmljZV90 IGQsIGFjY19kZXZpY2VfcHJvcGVydHlfdCBwcm9wKQogCiAgIHN0cnVjdCBnb21wX2Rldmlj ZV9kZXNjciAqZGV2ID0gcmVzb2x2ZV9kZXZpY2UgKGQsIHRydWUpOwogCi0gIGludCBudW1f ZGV2aWNlcyA9IGRldi0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKCk7CisgIGludCBudW1fZGV2 aWNlcyA9IGRldi0+Z2V0X251bV9kZXZpY2VzX2Z1bmMgKDApOwogCiAgIGlmIChudW1fZGV2 aWNlcyA8PSAwIHx8IG9yZCA+PSBudW1fZGV2aWNlcykKICAgICBhY2NfZGV2X251bV9vdXRf b2ZfcmFuZ2UgKGQsIG9yZCwgbnVtX2RldmljZXMpOwpkaWZmIC0tZ2l0IGEvbGliZ29tcC9w bHVnaW4vcGx1Z2luLWdjbi5jIGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLWdjbi5jCmluZGV4 IDFjMDQzNjg0MmRhLi5lYTMyN2JmMmNhMCAxMDA2NDQKLS0tIGEvbGliZ29tcC9wbHVnaW4v cGx1Z2luLWdjbi5jCisrKyBiL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1nY24uYwpAQCAtMzIy MSwxMCArMzIyMSwxNCBAQCBHT01QX09GRkxPQURfdmVyc2lvbiAodm9pZCkKIC8qIFJldHVy biB0aGUgbnVtYmVyIG9mIEdDTiBkZXZpY2VzIG9uIHRoZSBzeXN0ZW0uICAqLwogCiBpbnQK LUdPTVBfT0ZGTE9BRF9nZXRfbnVtX2RldmljZXMgKHZvaWQpCitHT01QX09GRkxPQURfZ2V0 X251bV9kZXZpY2VzICh1bnNpZ25lZCBpbnQgb21wX3JlcXVpcmVzX21hc2spCiB7CiAgIGlm ICghaW5pdF9oc2FfY29udGV4dCAoKSkKICAgICByZXR1cm4gMDsKKyAgLyogUmV0dXJuIC0x IGlmIG5vIG9tcF9yZXF1aXJlc19tYXNrIGNhbm5vdCBiZSBmdWxmaWxsZWQgYnV0CisgICAg IGRldmljZXMgd2VyZSBwcmVzZW50LiAgKi8KKyAgaWYgKGhzYV9jb250ZXh0LmFnZW50X2Nv dW50ID4gMCAmJiBvbXBfcmVxdWlyZXNfbWFzayAhPSAwKQorICAgIHJldHVybiAtMTsKICAg cmV0dXJuIGhzYV9jb250ZXh0LmFnZW50X2NvdW50OwogfQogCmRpZmYgLS1naXQgYS9saWJn b21wL3BsdWdpbi9wbHVnaW4tbnZwdHguYyBiL2xpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0 eC5jCmluZGV4IDM4N2JjYmJjNTJhLi5iYzYzZTI3NGNkZiAxMDA2NDQKLS0tIGEvbGliZ29t cC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKKysrIGIvbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52 cHR4LmMKQEAgLTExNzUsOSArMTE3NSwxNCBAQCBHT01QX09GRkxPQURfZ2V0X3R5cGUgKHZv aWQpCiB9CiAKIGludAotR09NUF9PRkZMT0FEX2dldF9udW1fZGV2aWNlcyAodm9pZCkKK0dP TVBfT0ZGTE9BRF9nZXRfbnVtX2RldmljZXMgKHVuc2lnbmVkIGludCBvbXBfcmVxdWlyZXNf bWFzaykKIHsKLSAgcmV0dXJuIG52cHR4X2dldF9udW1fZGV2aWNlcyAoKTsKKyAgaW50IG51 bV9kZXZpY2VzID0gbnZwdHhfZ2V0X251bV9kZXZpY2VzICgpOworICAvKiBSZXR1cm4gLTEg aWYgbm8gb21wX3JlcXVpcmVzX21hc2sgY2Fubm90IGJlIGZ1bGZpbGxlZCBidXQKKyAgICAg ZGV2aWNlcyB3ZXJlIHByZXNlbnQuICAqLworICBpZiAobnVtX2RldmljZXMgPiAwICYmIG9t cF9yZXF1aXJlc19tYXNrICE9IDApCisgICAgcmV0dXJuIC0xOworICByZXR1cm4gbnVtX2Rl dmljZXM7CiB9CiAKIGJvb2wKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGFyZ2V0LmMgYi9saWJn b21wL3RhcmdldC5jCmluZGV4IDQ3NDBmOGE0NWQzLi4wZmQzZjdmNDdhZCAxMDA2NDQKLS0t IGEvbGliZ29tcC90YXJnZXQuYworKysgYi9saWJnb21wL3RhcmdldC5jCkBAIC0zNiw2ICsz Niw3IEBACiAjIGluY2x1ZGUgPGludHR5cGVzLmg+ICAvKiBGb3IgUFJJdTY0LiAgKi8KICNl bmRpZgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+ICAvKiBGb3Ig c25wcmludGYuICovCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4K IApAQCAtOTgsNiArOTksMTMgQEAgc3RhdGljIGludCBudW1fZGV2aWNlczsKIC8qIE51bWJl ciBvZiBHT01QX09GRkxPQURfQ0FQX09QRU5NUF80MDAgZGV2aWNlcy4gICovCiBzdGF0aWMg aW50IG51bV9kZXZpY2VzX29wZW5tcDsKIAorLyogU3RhcnQvZW5kIG9mIC5nbnUuZ29tcC5y ZXF1aXJlcyBzZWN0aW9uIG9mIHByb2dyYW0sIGRlZmluZWQgaW4KKyAgIGNydG9mZmxvYWRi ZWdpbi9lbmQuby4gICovCitfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkKK2V4dGVybiBjb25zdCB1 bnNpZ25lZCBpbnQgX19yZXF1aXJlc19tYXNrX3RhYmxlW107CitfX2F0dHJpYnV0ZV9fKCh3 ZWFrKSkKK2V4dGVybiBjb25zdCB1bnNpZ25lZCBpbnQgX19yZXF1aXJlc19tYXNrX3RhYmxl X2VuZFtdOworCiAvKiBTaW1pbGFyIHRvIGdvbXBfcmVhbGxvYywgYnV0IHJlbGVhc2UgcmVn aXN0ZXJfbG9jayBiZWZvcmUgZ29tcF9mYXRhbC4gICovCiAKIHN0YXRpYyB2b2lkICoKQEAg LTQwODUsNiArNDA5MywyMCBAQCBnb21wX3RhcmdldF9maW5pICh2b2lkKQogICAgIH0KIH0K IAorc3RhdGljIHZvaWQKK2dvbXBfcmVxdWlyZXNfdG9fbmFtZSAoY2hhciAqYnVmLCBzaXpl X3Qgc2l6ZSwgdW5zaWduZWQgaW50IHJlcXVpcmVzX21hc2spCit7CisgIGNoYXIgKmVuZCA9 IGJ1ZiArIHNpemUsICpwID0gYnVmOworICBpZiAocmVxdWlyZXNfbWFzayAmIEdPTVBfUkVR VUlSRVNfVU5JRklFRF9BRERSRVNTKQorICAgIHAgKz0gc25wcmludGYgKHAsIGVuZCAtIHAs ICJ1bmlmaWVkX2FkZHJlc3MiKTsKKyAgaWYgKHJlcXVpcmVzX21hc2sgJiBHT01QX1JFUVVJ UkVTX1VOSUZJRURfU0hBUkVEX01FTU9SWSkKKyAgICBwICs9IHNucHJpbnRmIChwLCBlbmQg LSBwLCAiJXN1bmlmaWVkX3NoYXJlZF9tZW1vcnkiLAorCQkgICAocCA9PSBidWYgPyAiIiA6 ICIsICIpKTsKKyAgaWYgKHJlcXVpcmVzX21hc2sgJiBHT01QX1JFUVVJUkVTX1JFVkVSU0Vf T0ZGTE9BRCkKKyAgICBwICs9IHNucHJpbnRmIChwLCBlbmQgLSBwLCAiJXNyZXZlcnNlX29m ZmxvYWQiLAorCQkgICAocCA9PSBidWYgPyAiIiA6ICIsICIpKTsKK30KKwogLyogVGhpcyBm dW5jdGlvbiBpbml0aWFsaXplcyB0aGUgcnVudGltZSBmb3Igb2ZmbG9hZGluZy4KICAgIEl0 IHBhcnNlcyB0aGUgbGlzdCBvZiBvZmZsb2FkIHBsdWdpbnMsIGFuZCB0cmllcyB0byBsb2Fk IHRoZXNlLgogICAgT24gcmV0dXJuLCB0aGUgdmFyaWFibGVzIE5VTV9ERVZJQ0VTIGFuZCBO VU1fREVWSUNFU19PUEVOTVAKQEAgLTQxMDYsNiArNDEyOCwzNSBAQCBnb21wX3RhcmdldF9p bml0ICh2b2lkKQogICBpZiAoZ29tcF90YXJnZXRfb2ZmbG9hZF92YXIgPT0gR09NUF9UQVJH RVRfT0ZGTE9BRF9ESVNBQkxFRCkKICAgICByZXR1cm47CiAKKyAgLyogTWFzayBvZiByZXF1 aXJlcyBkaXJlY3RpdmUgY2xhdXNlIHZhbHVlcywgc3VtbWFyaXplZCBmcm9tCisgICAgIC5n bnUuZ29tcC5yZXF1aXJlcyBzZWN0aW9uLiBPZmZsb2FkIHBsdWdpbnMgYXJlIHF1ZXJpZWQg d2l0aCB0aGlzIG1hc2sgdG8gc2VlCisgICAgIGlmIGFsbCByZXF1aXJlZCBmZWF0dXJlcyBh cmUgc3VwcG9ydGVkLiAgKi8KKyAgdW5zaWduZWQgaW50IHJlcXVpcmVzX21hc2sgPSAwOwor ICBjb25zdCB1bnNpZ25lZCBpbnQgKm1hc2tfcHRyID0gX19yZXF1aXJlc19tYXNrX3RhYmxl OworICBib29sIGVycm9yX2VtaXR0ZWQgPSBmYWxzZTsKKyAgd2hpbGUgKG1hc2tfcHRyICE9 IF9fcmVxdWlyZXNfbWFza190YWJsZV9lbmQpCisgICAgeworICAgICAgaWYgKHJlcXVpcmVz X21hc2sgPT0gMCkKKwlyZXF1aXJlc19tYXNrID0gKm1hc2tfcHRyOworICAgICAgZWxzZSBp ZiAocmVxdWlyZXNfbWFzayAhPSAqbWFza19wdHIpCisJeworCSAgaWYgKCFlcnJvcl9lbWl0 dGVkKQorCSAgICB7CisJICAgICAgY2hhciBidWZbNjRdLCBidWYyWzY0XTsKKwkgICAgICBn b21wX3JlcXVpcmVzX3RvX25hbWUgKGJ1Ziwgc2l6ZW9mIChidWYpLCByZXF1aXJlc19tYXNr KTsKKwkgICAgICBnb21wX3JlcXVpcmVzX3RvX25hbWUgKGJ1ZjIsIHNpemVvZiAoYnVmMiks ICptYXNrX3B0cik7CisJICAgICAgZ29tcF9lcnJvciAoInJlcXVpcmVzLWRpcmVjdGl2ZSBj bGF1c2UgaW5jb25zaXN0ZW5jeSBiZXR3ZWVuICIKKwkJCSAgImNvbXBpbGF0aW9uIHVuaXRz IGRldGVjdGVkOiAnJXMnIHZzLiAnJXMnIiwKKwkJCSAgYnVmLCBidWYyKTsKKwkgICAgICBl cnJvcl9lbWl0dGVkID0gdHJ1ZTsKKwkgICAgfQorCSAgLyogVGhpcyBpcyBpbmNvbnNpc3Rl bnQsIGJ1dCBzdGlsbCBtZXJnZSB0byBxdWVyeSBmb3IgYWxsIGZlYXR1cmVzCisJICAgICBs YXRlci4gICovCisJICByZXF1aXJlc19tYXNrIHw9ICptYXNrX3B0cjsKKwl9CisgICAgICBt YXNrX3B0cisrOworICAgIH0KKwogICBjdXIgPSBPRkZMT0FEX1BMVUdJTlM7CiAgIGlmICgq Y3VyKQogICAgIGRvCkBAIC00MTMyLDggKzQxODMsMTkgQEAgZ29tcF90YXJnZXRfaW5pdCAo dm9pZCkKIAogCWlmIChnb21wX2xvYWRfcGx1Z2luX2Zvcl9kZXZpY2UgKCZjdXJyZW50X2Rl dmljZSwgcGx1Z2luX25hbWUpKQogCSAgewotCSAgICBuZXdfbnVtX2RldnMgPSBjdXJyZW50 X2RldmljZS5nZXRfbnVtX2RldmljZXNfZnVuYyAoKTsKLQkgICAgaWYgKG5ld19udW1fZGV2 cyA+PSAxKQorCSAgICBuZXdfbnVtX2RldnMgPSBjdXJyZW50X2RldmljZS5nZXRfbnVtX2Rl dmljZXNfZnVuYyAocmVxdWlyZXNfbWFzayk7CisJICAgIGlmIChuZXdfbnVtX2RldnMgPCAw KQorCSAgICAgIHsKKwkJY2hhciBidWZbNjRdOworCQlnb21wX3JlcXVpcmVzX3RvX25hbWUg KGJ1Ziwgc2l6ZW9mIChidWYpLCByZXF1aXJlc19tYXNrKTsKKwkJY2hhciAqbmFtZSA9IChj aGFyICopIG1hbGxvYyAoY3VyX2xlbiArIDEpOworCQltZW1jcHkgKG5hbWUsIGN1ciwgY3Vy X2xlbik7CisJCW5hbWVbY3VyX2xlbl0gPSAnXDAnOworCQlHT01QX1BMVUdJTl9lcnJvciAo Im5vdGU6ICVzIGRldmljZXMgcHJlc2VudCBidXQgJ29tcCByZXF1aXJlcyAiCisJCQkJICAg IiVzJyBjYW5ub3QgYmUgZnVsZmlsbGVkIiwgbmFtZSwgYnVmKTsKKwkJZnJlZSAobmFtZSk7 CisJICAgICAgfQorCSAgICBlbHNlIGlmIChuZXdfbnVtX2RldnMgPj0gMSkKIAkgICAgICB7 CiAJCS8qIEF1Z21lbnQgREVWSUNFUyBhbmQgTlVNX0RFVklDRVMuICAqLwogCmRpZmYgLS1n aXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0x LWF1eC5jIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWly ZXMtMS1hdXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGI5 MzQxNTIzYzYKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21w LmMtYysrLWNvbW1vbi9yZXF1aXJlcy0xLWF1eC5jCkBAIC0wLDAgKzEsMTEgQEAKKy8qIHsg ZGctc2tpcC1pZiAiIiB7ICotKi0qIH0gfSAqLworCisjcHJhZ21hIG9tcCByZXF1aXJlcyBy ZXZlcnNlX29mZmxvYWQKKworaW50IHg7CisKK3ZvaWQgZm9vICh2b2lkKQoreworICAjcHJh Z21hIG9tcCB0YXJnZXQKKyAgeCA9IDE7Cit9CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3Rz dWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0xLmMgYi9saWJnb21wL3Rlc3Rz dWl0ZS9saWJnb21wLmMtYysrLWNvbW1vbi9yZXF1aXJlcy0xLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk5MGI0ZTk4MTdkCi0tLSAvZGV2L251bGwKKysr IGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMS5j CkBAIC0wLDAgKzEsMjEgQEAKKy8qIHsgZGctc2tpcC1pZiAiIiB7ICEgb2ZmbG9hZGluZ19l bmFibGVkIH0gfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLXNvdXJjZXMgcmVxdWlyZXMtMS1h dXguYyB9ICovCisKKyNwcmFnbWEgb21wIHJlcXVpcmVzIHVuaWZpZWRfc2hhcmVkX21lbW9y eQorCitpbnQgYVsxMF07CitleHRlcm4gdm9pZCBmb28gKHZvaWQpOworCitpbnQKK21haW4g KHZvaWQpCit7CisgICNwcmFnbWEgb21wIHRhcmdldAorICBmb3IgKGludCBpID0gMDsgaSA8 IDEwOyBpKyspCisgICAgYVtpXSA9IDA7CisKKyAgZm9vICgpOworICByZXR1cm4gMDsKK30K KworLyogeyBkZy1vdXRwdXQgImxpYmdvbXA6IHJlcXVpcmVzLWRpcmVjdGl2ZSBjbGF1c2Ug aW5jb25zaXN0ZW5jeSBiZXR3ZWVuIGNvbXBpbGF0aW9uIHVuaXRzIGRldGVjdGVkIiB9ICov CisvKiB7IGRnLXBydW5lLW91dHB1dCAibnZwdHggZGV2aWNlIHByZXNlbnQgYnV0ICdvbXAg cmVxdWlyZXMgdW5pZmllZF9zaGFyZWRfbWVtb3J5LCByZXZlcnNlX29mZmxvYWQsIHJldmVy c2Vfb2ZmbG9hZCcgY2Fubm90IGJlIGZ1bGZpbGxlZCIgfSAqLwpkaWZmIC0tZ2l0IGEvbGli Z29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMi1hdXguYyBi L2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTItYXV4 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQwNzc2NDgzNDdk Ci0tLSAvZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jLWMrKy1j b21tb24vcmVxdWlyZXMtMi1hdXguYwpAQCAtMCwwICsxLDExIEBACisvKiB7IGRnLXNraXAt aWYgIiIgeyAqLSotKiB9IH0gKi8KKworI3ByYWdtYSBvbXAgcmVxdWlyZXMgdW5pZmllZF9z aGFyZWRfbWVtb3J5CisKK2ludCB4OworCit2b2lkIGZvbyAodm9pZCkKK3sKKyAgI3ByYWdt YSBvbXAgdGFyZ2V0CisgIHggPSAxOworfQpkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMi5jIGIvbGliZ29tcC90ZXN0c3Vp dGUvbGliZ29tcC5jLWMrKy1jb21tb24vcmVxdWlyZXMtMi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYzU1YWIwMDFlOQotLS0gL2Rldi9udWxsCisrKyBi L2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuYy1jKystY29tbW9uL3JlcXVpcmVzLTIuYwpA QCAtMCwwICsxLDIwIEBACisvKiB7IGRnLWFkZGl0aW9uYWwtc291cmNlcyByZXF1aXJlcy0y LWF1eC5jIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IG9mZmxvYWRf ZGV2aWNlIH0gKi8KKworI3ByYWdtYSBvbXAgcmVxdWlyZXMgdW5pZmllZF9zaGFyZWRfbWVt b3J5CisKK2ludCBhWzEwXTsKK2V4dGVybiB2b2lkIGZvbyAodm9pZCk7CisKK2ludAorbWFp biAodm9pZCkKK3sKKyAgI3ByYWdtYSBvbXAgdGFyZ2V0CisgIGZvciAoaW50IGkgPSAwOyBp IDwgMTA7IGkrKykKKyAgICBhW2ldID0gMDsKKworICBmb28gKCk7CisgIHJldHVybiAwOwor fQorCisvKiB7IGRnLW91dHB1dCAiZGV2aWNlcyBwcmVzZW50IGJ1dCAnb21wIHJlcXVpcmVz IHVuaWZpZWRfc2hhcmVkX21lbW9yeScgY2Fubm90IGJlIGZ1bGZpbGxlZCIgfSAqLwpkaWZm IC0tZ2l0IGEvbGlib2ZmbG9hZG1pYy9wbHVnaW4vbGliZ29tcC1wbHVnaW4taW50ZWxtaWMu Y3BwIGIvbGlib2ZmbG9hZG1pYy9wbHVnaW4vbGliZ29tcC1wbHVnaW4taW50ZWxtaWMuY3Bw CmluZGV4IGQxNjc4ZDA1MTRlLi4zM2JhZTA2NTBiNCAxMDA2NDQKLS0tIGEvbGlib2ZmbG9h ZG1pYy9wbHVnaW4vbGliZ29tcC1wbHVnaW4taW50ZWxtaWMuY3BwCisrKyBiL2xpYm9mZmxv YWRtaWMvcGx1Z2luL2xpYmdvbXAtcGx1Z2luLWludGVsbWljLmNwcApAQCAtMTY4LDggKzE2 OCwxMiBAQCBHT01QX09GRkxPQURfZ2V0X3R5cGUgKHZvaWQpCiB9CiAKIGV4dGVybiAiQyIg aW50Ci1HT01QX09GRkxPQURfZ2V0X251bV9kZXZpY2VzICh2b2lkKQorR09NUF9PRkZMT0FE X2dldF9udW1fZGV2aWNlcyAodW5zaWduZWQgaW50IG9tcF9yZXF1aXJlc19tYXNrKQogewor ICAvKiBSZXR1cm4gLTEgaWYgbm8gb21wX3JlcXVpcmVzX21hc2sgY2Fubm90IGJlIGZ1bGZp bGxlZCBidXQKKyAgICAgZGV2aWNlcyB3ZXJlIHByZXNlbnQuICAqLworICBpZiAobnVtX2Rl dmljZXMgPiAwICYmIG9tcF9yZXF1aXJlc19tYXNrICE9IDApCisgICAgcmV0dXJuIC0xOwog ICBUUkFDRSAoIigpOiByZXR1cm4gJWQiLCBudW1fZGV2aWNlcyk7CiAgIHJldHVybiBudW1f ZGV2aWNlczsKIH0K --------------0xTpivnxxoFfBxeVUdGh4kRO--