From mboxrd@z Thu Jan 1 00:00:00 1970 From: MaoXiaoyun Subject: re:RE: blue screen in windows balloon driver Date: Sat, 26 Feb 2011 21:01:38 +0800 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_7937c4a5-1fac-41e2-9272-95c9e8d59a52_" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen devel Cc: george.dunlap@eu.citrix.com, james.harper@bendigoit.com.au List-Id: xen-devel@lists.xenproject.org --_7937c4a5-1fac-41e2-9272-95c9e8d59a52_ Content-Type: multipart/alternative; boundary="_71dc8a66-c980-4d48-8342-3cbab4653ee9_" --_71dc8a66-c980-4d48-8342-3cbab4653ee9_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: quoted-printable Thanks James. =20 I think it is GPLPV. The driver is from http://xenbits.xen.org/ext/win-pv= drivers.hg But, I have done some other things =20 1) Add pod support=20 2) enable a meminfo thread, periodically write VM meminfo into xenstore=20 We use info of Current Memory, Free memory, and Committed memory, ret= rived through NativeAPI 3) our code is based from changeset 823, attached is the diff of my curre= nt code with changset of 853. =20 Maybe I need add my code to 853, and test again. Thanks. =20 >From: James Harper [mailto:james.harper@bendigoit.com.au]=20 >To: xiaoyun.maoxy; xen-devel@lists.xensource.com >cc: george.dunlap@eu.citrix.com >Subject: RE: blue screen in windows balloon driver > >> Hi: >> We've confronted the windows 2003 Blue screen when using balloon >> driver. > >> The blue screen has the information of "NO_PAGES_AVAILABLE", and >> Technical information: >> ***STOP: 0x0000004D (0x0002A8FB,0x0002A8FB,0x00000000,0x00000000) > >> In fact we are doing the stress test on 24 windows2003 HVM on a >> 24G, 16core host. >> In dom0, there is a daemon process (balloond) will give memory >> back to the VM who acclaim memory. >> The balloond will ensure every VM at least has 512M memory. >> Each VM is started with memory=3D512 maxmem=3D2048 >> Inside each of the VM, there is two processes eat memory, each of which will eat 1G memory. >> And the page file size configured on C:\ is init size 1536M, max >> size 3072M, which I think even >> If balloond process not give back the memory back to VM, the VM > can has 512M+3072M =3D 3.5G virtual >> memory. >>=20 >> Am I right?, if so , since our eat memory process only consume >> 2G memory, how could "NO_PAGES_AVAILABLE" happen? >> Also, since we enable VM writes its memory status into xenstore, >> when blue screen, it has only has 972KB memory. >> Any comments? Many thanks. >>=20 >=20 > >You've put myself (I wrote GPLPV) and George Dunlap (from Citrix) in the >CC list but you don't say if you are using GPLPV drivers or Citrix PV >drivers. If you are using GPLPV drivers let me know and I'll get some >more information about the problem from you. If you aren't using GPLPV >drivers then I don't think I can be of much assistance... > >Thanks > >James > =20 --_71dc8a66-c980-4d48-8342-3cbab4653ee9_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable Thanks James.
 
I think it is GPLPV. The driver is from http://xenbits.xen.org/ext/win-pvdrivers.hg But, I have done some other things
 
1) Add pod support
2) enable a meminfo thread, periodically write VM meminfo into xenstore <= BR>     We use info of Current Memory, Free memory, and Commit= ted memory, retrived through NativeAPI
3) our code is based from changeset 823, attached is the diff of my curre= nt code with changset of 853.
 
Maybe I need add my code to 853, and test again.
Thanks.
 
>From: James Harper [mailto:james.harper@bendigoit.com.au]
>To:= xiaoyun.maoxy; xen-deve= l@lists.xensource.com
>cc: george.dunlap@eu.citrix.com
>Subject: RE: blue scree= n in windows balloon driver
>
>> Hi:
>> &nbs= p;    We've confronted the windows 2003 Blue screen when u= sing balloon
>> driver.
>
>>   &nb= sp;  The blue screen has the information of "NO_PAGES_AVAILABLE", an= d
>>      Technical information:
>= ;>      ***STOP: 0x0000004D (0x0002A8FB,0x000= 2A8FB,0x00000000,0x00000000)
>
>>    &= nbsp; In fact we are doing the stress test on 24 windows2003 HVM on a
= >>      24G, 16core host.
>> = ;     In dom0, there is a daemon process (balloond) will give memory
>>   = ;   back  to the VM who acclaim memory.
>> &= nbsp;    The balloond will ensure every VM at least has 51= 2M memory.
>>      Each VM is started w= ith memory=3D512 maxmem=3D2048
>>      = Inside each of the VM, there is two processes eat memory, each
 &= nbsp;      of which will eat 1G memory.
>&= gt;      And the page file size configured on C:= \ is init size 1536M, max
>>      size = 3072M, which I think even
>>      If balloond process not give back = the memory back to VM, the VM
>      = can has 512M+3072M =3D 3.5G virtual
>>    &= nbsp; memory.
>>
>>      Am I= right?, if so , since our eat memory process only consume
>>&nb= sp;     2G  memory, how could "NO_PAGES_AVAILABL= E" happen?
>>      Also, since we enabl= e VM writes its memory status into xenstore,
>>   = ;   when blue screen, it has only has 972KB memory.
>>=       Any comments? Many thanks.
>> >
>
>You've put myself (I wrote GPLPV) and George Dunlap= (from Citrix) in the
>CC list but you don't say if you are using G= PLPV drivers or Citrix PV
>drivers. If you are using GPLPV drivers = let me know and I'll get some
>more i nformation about the problem from you. If you aren't using GPLPV
>= drivers then I don't think I can be of much assistance...
>
>= Thanks
>
>James
>
--_71dc8a66-c980-4d48-8342-3cbab4653ee9_-- --_7937c4a5-1fac-41e2-9272-95c9e8d59a52_ Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="changset823.diff" ZGlmZiAtcnVOIC4uL3dpbi1wdmRyaXZlcnMuaGcveGVucGNpL2V2dGNobi5jIHhlbnBjaS9ldnRj aG4uYwotLS0gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5wY2kvZXZ0Y2huLmMJMjAxMS0wMi0yNiAy MDo0MzoxMi4wMDAwMDAwMDAgKzA4MDAKKysrIHhlbnBjaS9ldnRjaG4uYwkyMDExLTAyLTI2IDIw OjQ0OjMzLjAwMDAwMDAwMCArMDgwMApAQCAtMTU0LDUwICsxNTQsMzggQEAKICAgICAgIHN3aXRj aCAoZXZfYWN0aW9uLT50eXBlKQ0KICAgICAgIHsNCiAgICAgICBjYXNlIEVWVF9BQ1RJT05fVFlQ RV9OT1JNQUw6DQotICAgICAgICAvL0tkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgRVZUX0FD VElPTl9UWVBFX05PUk1BTCBwb3J0ID0gJWRcbiIsIHBvcnQpKTsNCisgICAgICAgIC8vS2RQcmlu dCgoX19EUklWRVJfTkFNRSAiICAgICBFVlRfQUNUSU9OX1RZUEVfTk9STUFMXG4iKSk7DQogICAg ICAgICBldl9hY3Rpb24tPlNlcnZpY2VSb3V0aW5lKGV2X2FjdGlvbi0+U2VydmljZUNvbnRleHQp Ow0KICAgICAgICAgYnJlYWs7DQogICAgICAgY2FzZSBFVlRfQUNUSU9OX1RZUEVfSVJROg0KLSAg ICAgICAgLy9LZFByaW50KChfX0RSSVZFUl9OQU1FICIgICAgIEVWVF9BQ1RJT05fVFlQRV9JUlEg cG9ydCA9ICVkXG4iLCBwb3J0KSk7DQorICAgICAgICAvL0tkUHJpbnQoKF9fRFJJVkVSX05BTUUg IiAgICAgRVZUX0FDVElPTl9UWVBFX0lSUVxuIikpOw0KICAgICAgICAgc3luY2hfc2V0X2JpdChl dnRfYml0LCAodm9sYXRpbGUgeGVuX2xvbmdfdCAqKSZ4cGRkLT5ldnRjaG5fcGVuZGluZ19wdnRb cGNwdV1bZXZ0X3dvcmRdKTsNCiAgICAgICAgIGRlZmVycmVkID0gVFJVRTsNCiAgICAgICAgIGJy ZWFrOw0KICAgICAgIGNhc2UgRVZUX0FDVElPTl9UWVBFX0RQQzoNCi0gICAgICAgIC8vS2RQcmlu dCgoX19EUklWRVJfTkFNRSAiICAgICBFVlRfQUNUSU9OX1RZUEVfRFBDIHBvcnQgPSAlZFxuIiwg cG9ydCkpOw0KKyAgICAgICAgLy9LZFByaW50KChfX0RSSVZFUl9OQU1FICIgICAgIEVWVF9BQ1RJ T05fVFlQRV9EUENcbiIpKTsNCiAgICAgICAgIEtlSW5zZXJ0UXVldWVEcGMoJmV2X2FjdGlvbi0+ RHBjLCBOVUxMLCBOVUxMKTsNCiAgICAgICAgIGJyZWFrOw0KICAgICAgIGNhc2UgRVZUX0FDVElP Tl9UWVBFX1NVU1BFTkQ6DQogICAgICAgICBLZFByaW50KChfX0RSSVZFUl9OQU1FICIgICAgIEVW VF9BQ1RJT05fVFlQRV9TVVNQRU5EXG4iKSk7DQogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRSh4cGRkLT5ldnRjaG5fcGVuZGluZ19wdnRbcGNwdV0pOyBpKyspDQogICAgICAgICB7 DQotICAgICAgICAgIGlmICghKHhwZGQtPmV2X2FjdGlvbnNbaV0uZmxhZ3MgJiBFVlRfQUNUSU9O X0ZMQUdTX05PX1NVU1BFTkQpKQ0KKyAgICAgICAgICBpZiAoeHBkZC0+ZXZfYWN0aW9uc1tpXS50 eXBlID09IEVWVF9BQ1RJT05fVFlQRV9JUlEpDQogICAgICAgICAgIHsNCi0gICAgICAgICAgICBz d2l0Y2goeHBkZC0+ZXZfYWN0aW9uc1tpXS50eXBlKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAg ICAgICBjYXNlIEVWVF9BQ1RJT05fVFlQRV9JUlE6DQotICAgICAgICAgICAgICB7DQotICAgICAg ICAgICAgICAgIGludCBzdXNwZW5kX2JpdCA9IGkgJiAoQklUU19QRVJfTE9ORyAtIDEpOw0KLSAg ICAgICAgICAgICAgICBpbnQgc3VzcGVuZF93b3JkID0gaSA+PiBCSVRTX1BFUl9MT05HX1NISUZU Ow0KLSAgICAgICAgICAgICAgICBzeW5jaF9zZXRfYml0KHN1c3BlbmRfYml0LCAodm9sYXRpbGUg eGVuX2xvbmdfdCAqKSZ4cGRkLT5ldnRjaG5fcGVuZGluZ19wdnRbcGNwdV1bc3VzcGVuZF93b3Jk XSk7DQotICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAg ICBjYXNlIEVWVF9BQ1RJT05fVFlQRV9OT1JNQUw6DQotICAgICAgICAgICAgICBpZiAoeHBkZC0+ ZXZfYWN0aW9uc1tpXS5TZXJ2aWNlUm91dGluZSkNCi0gICAgICAgICAgICAgIHsNCi0gICAgICAg ICAgICAgICAgeHBkZC0+ZXZfYWN0aW9uc1tpXS5TZXJ2aWNlUm91dGluZSh4cGRkLT5ldl9hY3Rp b25zW2ldLlNlcnZpY2VDb250ZXh0KTsNCi0gICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAg IGJyZWFrOw0KLSAgICAgICAgICAgIGNhc2UgRVZUX0FDVElPTl9UWVBFX0RQQzoNCi0gICAgICAg ICAgICAgIEtlSW5zZXJ0UXVldWVEcGMoJnhwZGQtPmV2X2FjdGlvbnNbaV0uRHBjLCBOVUxMLCBO VUxMKTsNCi0gICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIH0NCisgICAgICAgICAg ICBpbnQgc3VzcGVuZF9iaXQgPSBpICYgKEJJVFNfUEVSX0xPTkcgLSAxKTsNCisgICAgICAgICAg ICBpbnQgc3VzcGVuZF93b3JkID0gaSA+PiBCSVRTX1BFUl9MT05HX1NISUZUOw0KKyAgICAgICAg ICAgIHN5bmNoX3NldF9iaXQoc3VzcGVuZF9iaXQsICh2b2xhdGlsZSB4ZW5fbG9uZ190ICopJnhw ZGQtPmV2dGNobl9wZW5kaW5nX3B2dFtwY3B1XVtzdXNwZW5kX3dvcmRdKTsNCisgICAgICAgICAg fQ0KKyAgICAgICAgICBlbHNlIGlmICh4cGRkLT5ldl9hY3Rpb25zW2ldLnR5cGUgPT0gRVZUX0FD VElPTl9UWVBFX05PUk1BTCAmJiB4cGRkLT5ldl9hY3Rpb25zW2ldLlNlcnZpY2VSb3V0aW5lKQ0K KyAgICAgICAgICB7DQorICAgICAgICAgICAgeHBkZC0+ZXZfYWN0aW9uc1tpXS5TZXJ2aWNlUm91 dGluZSh4cGRkLT5ldl9hY3Rpb25zW2ldLlNlcnZpY2VDb250ZXh0KTsNCiAgICAgICAgICAgfQ0K ICAgICAgICAgfQ0KICAgICAgICAgS2VJbnNlcnRRdWV1ZURwYygmZXZfYWN0aW9uLT5EcGMsIE5V TEwsIE5VTEwpOw0KICAgICAgICAgZGVmZXJyZWQgPSBUUlVFOw0KICAgICAgICAgYnJlYWs7DQog ICAgICAgZGVmYXVsdDoNCi0gICAgICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgVW5o YW5kbGVkIEV2ZW50ISEhIHBvcnQ9JWRcbiIsIHBvcnQpKTsNCisgICAgICAgIEtkUHJpbnQoKF9f RFJJVkVSX05BTUUgIiAgICAgVW5oYW5kbGVkIEV2ZW50ISEhXG4iKSk7DQogICAgICAgICBicmVh azsNCiAgICAgICB9DQogICAgIH0NCkBAIC0yMzUsNyArMjIzLDcgQEAKIH0NCiANCiBOVFNUQVRV Uw0KLUV2dENobl9CaW5kKFBWT0lEIENvbnRleHQsIGV2dGNobl9wb3J0X3QgUG9ydCwgUFhFTl9F VlRDSE5fU0VSVklDRV9ST1VUSU5FIFNlcnZpY2VSb3V0aW5lLCBQVk9JRCBTZXJ2aWNlQ29udGV4 dCwgVUxPTkcgZmxhZ3MpDQorRXZ0Q2huX0JpbmQoUFZPSUQgQ29udGV4dCwgZXZ0Y2huX3BvcnRf dCBQb3J0LCBQWEVOX0VWVENITl9TRVJWSUNFX1JPVVRJTkUgU2VydmljZVJvdXRpbmUsIFBWT0lE IFNlcnZpY2VDb250ZXh0KQ0KIHsNCiAgIFBYRU5QQ0lfREVWSUNFX0RBVEEgeHBkZCA9IENvbnRl eHQ7DQogICBldl9hY3Rpb25fdCAqYWN0aW9uID0gJnhwZGQtPmV2X2FjdGlvbnNbUG9ydF07DQpA QCAtMjUxLDcgKzIzOSw2IEBACiAgIHhwZGQtPmV2X2FjdGlvbnNbUG9ydF0uU2VydmljZVJvdXRp bmUgPSBTZXJ2aWNlUm91dGluZTsNCiAgIHhwZGQtPmV2X2FjdGlvbnNbUG9ydF0uU2VydmljZUNv bnRleHQgPSBTZXJ2aWNlQ29udGV4dDsNCiAgIHhwZGQtPmV2X2FjdGlvbnNbUG9ydF0ueHBkZCA9 IHhwZGQ7DQotICB4cGRkLT5ldl9hY3Rpb25zW1BvcnRdLmZsYWdzID0gZmxhZ3M7DQogICBLZU1l bW9yeUJhcnJpZXIoKTsNCiAgIHhwZGQtPmV2X2FjdGlvbnNbUG9ydF0udHlwZSA9IEVWVF9BQ1RJ T05fVFlQRV9OT1JNQUw7DQogDQpAQCAtMjYzLDcgKzI1MCw3IEBACiB9DQogDQogTlRTVEFUVVMN Ci1FdnRDaG5fQmluZERwYyhQVk9JRCBDb250ZXh0LCBldnRjaG5fcG9ydF90IFBvcnQsIFBYRU5f RVZUQ0hOX1NFUlZJQ0VfUk9VVElORSBTZXJ2aWNlUm91dGluZSwgUFZPSUQgU2VydmljZUNvbnRl eHQsIFVMT05HIGZsYWdzKQ0KK0V2dENobl9CaW5kRHBjKFBWT0lEIENvbnRleHQsIGV2dGNobl9w b3J0X3QgUG9ydCwgUFhFTl9FVlRDSE5fU0VSVklDRV9ST1VUSU5FIFNlcnZpY2VSb3V0aW5lLCBQ Vk9JRCBTZXJ2aWNlQ29udGV4dCkNCiB7DQogICBQWEVOUENJX0RFVklDRV9EQVRBIHhwZGQgPSBD b250ZXh0Ow0KICAgZXZfYWN0aW9uX3QgKmFjdGlvbiA9ICZ4cGRkLT5ldl9hY3Rpb25zW1BvcnRd Ow0KQEAgLTI3OSw3ICsyNjYsNiBAQAogICB4cGRkLT5ldl9hY3Rpb25zW1BvcnRdLlNlcnZpY2VS b3V0aW5lID0gU2VydmljZVJvdXRpbmU7DQogICB4cGRkLT5ldl9hY3Rpb25zW1BvcnRdLlNlcnZp Y2VDb250ZXh0ID0gU2VydmljZUNvbnRleHQ7DQogICB4cGRkLT5ldl9hY3Rpb25zW1BvcnRdLnhw ZGQgPSB4cGRkOw0KLSAgeHBkZC0+ZXZfYWN0aW9uc1tQb3J0XS5mbGFncyA9IGZsYWdzOw0KICAg S2VNZW1vcnlCYXJyaWVyKCk7IC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSBuZXcgc2VydmljZSByb3V0 aW5lIGlzIG9ubHkgY2FsbGVkIG9uY2UgdGhlIGNvbnRleHQgaXMgc2V0IHVwDQogICBJbnRlcmxv Y2tlZEV4Y2hhbmdlKCh2b2xhdGlsZSBMT05HICopJmFjdGlvbi0+dHlwZSwgRVZUX0FDVElPTl9U WVBFX0RQQyk7DQogDQpAQCAtMjkxLDcgKzI3Nyw3IEBACiB9DQogDQogTlRTVEFUVVMNCi1FdnRD aG5fQmluZElycShQVk9JRCBDb250ZXh0LCBldnRjaG5fcG9ydF90IFBvcnQsIFVMT05HIHZlY3Rv ciwgUENIQVIgZGVzY3JpcHRpb24sIFVMT05HIGZsYWdzKQ0KK0V2dENobl9CaW5kSXJxKFBWT0lE IENvbnRleHQsIGV2dGNobl9wb3J0X3QgUG9ydCwgVUxPTkcgdmVjdG9yLCBQQ0hBUiBkZXNjcmlw dGlvbikNCiB7DQogICBQWEVOUENJX0RFVklDRV9EQVRBIHhwZGQgPSBDb250ZXh0Ow0KICAgZXZf YWN0aW9uX3QgKmFjdGlvbiA9ICZ4cGRkLT5ldl9hY3Rpb25zW1BvcnRdOw0KQEAgLTMwOSw4ICsy OTUsNyBAQAogICBLZU1lbW9yeUJhcnJpZXIoKTsNCiAgIHhwZGQtPmV2X2FjdGlvbnNbUG9ydF0u dHlwZSA9IEVWVF9BQ1RJT05fVFlQRV9JUlE7DQogICBSdGxTdHJpbmdDYkNvcHlBKHhwZGQtPmV2 X2FjdGlvbnNbUG9ydF0uZGVzY3JpcHRpb24sIDEyOCwgZGVzY3JpcHRpb24pOw0KLSAgeHBkZC0+ ZXZfYWN0aW9uc1tQb3J0XS5mbGFncyA9IGZsYWdzOw0KLSAgDQorDQogICBFdnRDaG5fVW5tYXNr KENvbnRleHQsIFBvcnQpOw0KIA0KICAgRlVOQ1RJT05fRVhJVCgpOw0KQEAgLTQ2MSw3ICs0NDYs NyBAQAogDQogICBLZUluaXRpYWxpemVFdmVudCgmeHBkZC0+cGRvX3N1c3BlbmRfZXZlbnQsIFN5 bmNocm9uaXphdGlvbkV2ZW50LCBGQUxTRSk7DQogICB4cGRkLT5wZG9fZXZlbnRfY2hhbm5lbCA9 IEV2dENobl9BbGxvY0lwaSh4cGRkLCAwKTsNCi0gIEV2dENobl9CaW5kRHBjKHhwZGQsIHhwZGQt PnBkb19ldmVudF9jaGFubmVsLCBFdnRDaG5fUGRvRXZlbnRDaGFubmVsRHBjLCB4cGRkLCBFVlRf QUNUSU9OX0ZMQUdTX0RFRkFVTFQpOw0KKyAgRXZ0Q2huX0JpbmREcGMoeHBkZCwgeHBkZC0+cGRv X2V2ZW50X2NoYW5uZWwsIEV2dENobl9QZG9FdmVudENoYW5uZWxEcGMsIHhwZGQpOw0KICAgeHBk ZC0+ZXZfYWN0aW9uc1t4cGRkLT5wZG9fZXZlbnRfY2hhbm5lbF0udHlwZSA9IEVWVF9BQ1RJT05f VFlQRV9TVVNQRU5EOyAvKiBvdmVycmlkZSBkcGMgdHlwZSAqLw0KICAgDQogICBLZFByaW50KChf X0RSSVZFUl9OQU1FICIgICAgIHBkb19ldmVudF9jaGFubmVsID0gJWRcbiIsIHhwZGQtPnBkb19l dmVudF9jaGFubmVsKSk7DQpkaWZmIC1ydU4gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5wY2kvZ2V0 cGh5aW5mby5jIHhlbnBjaS9nZXRwaHlpbmZvLmMKLS0tIC4uL3dpbi1wdmRyaXZlcnMuaGcveGVu cGNpL2dldHBoeWluZm8uYwkxOTcwLTAxLTAxIDA4OjAwOjAwLjAwMDAwMDAwMCArMDgwMAorKysg eGVucGNpL2dldHBoeWluZm8uYwkyMDExLTAyLTI2IDIwOjQ0OjMzLjAwMDAwMDAwMCArMDgwMApA QCAtMCwwICsxLDM0OCBAQAorI2luY2x1ZGUgImdldHBoeWluZm8uaCINCisjaW5jbHVkZSA8V2lu RXJyb3IuaD4NCisNCisvL2NvcHkgZnJvbSB0aGUgInhlbnBjaS5oIg0KKyNkZWZpbmUgWEVOUENJ X1BPT0xfVEFHIChVTE9ORykgJ1hlblAnDQorDQordHlwZWRlZiBzdHJ1Y3QgX1NZU1RFTV9QRVJG T1JNQU5DRV9JTkZPUk1BVElPTnsNCisgICAgICAgIExBUkdFX0lOVEVHRVIgSWRsZVRpbWU7DQor ICAgICAgICBMQVJHRV9JTlRFR0VSIFJlYWRUcmFuc2ZlckNvdW50Ow0KKyAgICAgICAgTEFSR0Vf SU5URUdFUiBXcml0ZVRyYW5zZmVyQ291bnQ7DQorICAgICAgICBMQVJHRV9JTlRFR0VSIE90aGVy VHJhbnNmZXJDb3VudDsNCisgICAgICAgIFVMT05HIFJlYWRPcGVyYXRpb25Db3VudDsNCisgICAg ICAgIFVMT05HIFdyaXRlT3BlcmF0aW9uQ291bnQ7DQorICAgICAgICBVTE9ORyBPdGhlck9wZXJh dGlvbkNvdW50Ow0KKyAgICAgICAgVUxPTkcgQXZhaWxhYmxlUGFnZXM7DQorICAgICAgICBVTE9O RyBUb3RhbENvbW1pdHRlZFBhZ2VzOw0KKyAgICAgICAgVUxPTkcgVG90YWxDb21taXRMaW1pdDsN CisgICAgICAgIFVMT05HIFBlYWtDb21taXRtZW50Ow0KKyAgICAgICAgVUxPTkcgUGFnZUZhdWx0 czsNCisgICAgICAgIFVMT05HIFdyaXRlQ29weUZhdWx0czsNCisgICAgICAgIFVMT05HIFRyYW5z aXRpb25GYXVsdHM7DQorICAgICAgICBVTE9ORyBSZXNlcnZlZDE7DQorICAgICAgICBVTE9ORyBE ZW1hbmRaZXJvRmF1bHRzOw0KKyAgICAgICAgVUxPTkcgUGFnZXNSZWFkOw0KKyAgICAgICAgVUxP TkcgUGFnZVJlYWRJb3M7DQorICAgICAgICBVTE9ORyBSZXNlcnZlZDJbMl07DQorICAgICAgICBV TE9ORyBQYWdlZmlsZVBhZ2VzV3JpdHRlbjsNCisgICAgICAgIFVMT05HIFBhZ2VmaWxlUGFnZVdy aXRlSW9zOw0KKyAgICAgICAgVUxPTkcgTWFwcGVkRmlsZVBhZ2VzV3JpdHRlbjsNCisgICAgICAg IFVMT05HIE1hcHBlZEZpbGVQYWdlV3JpdGVJb3M7DQorICAgICAgICBVTE9ORyBQYWdlZFBvb2xV c2FnZTsNCisgICAgICAgIFVMT05HIE5vblBhZ2VkUG9vbFVzYWdlOw0KKyAgICAgICAgVUxPTkcg UGFnZWRQb29sQWxsb2NzOw0KKyAgICAgICAgVUxPTkcgUGFnZWRQb29sRnJlZXM7DQorICAgICAg ICBVTE9ORyBOb25QYWdlZFBvb2xBbGxvY3M7DQorICAgICAgICBVTE9ORyBOb25QYWdlZFBvb2xG cmVlczsNCisgICAgICAgIFVMT05HIFRvdGFsRnJlZVN5c3RlbVB0ZXM7DQorICAgICAgICBVTE9O RyBTeXN0ZW1Db2RlUGFnZTsNCisgICAgICAgIFVMT05HIFRvdGFsU3lzdGVtRHJpdmVyUGFnZXM7 DQorICAgICAgICBVTE9ORyBUb3RhbFN5c3RlbUNvZGVQYWdlczsNCisgICAgICAgIFVMT05HIFNt YWxsTm9uUGFnZWRMb29rYXNpZGVMaXN0QWxsb2NhdGVIaXRzOw0KKyAgICAgICAgVUxPTkcgU21h bGxQYWdlZExvb2thc2lkZUxpc3RBbGxvY2F0ZUhpdHM7DQorICAgICAgICBVTE9ORyBSZXNlcnZl ZDM7DQorICAgICAgICBVTE9ORyBNbVN5c3RlbUNhY2hlUGFnZTsNCisgICAgICAgIFVMT05HIFBh Z2VkUG9vbFBhZ2U7DQorICAgICAgICBVTE9ORyBTeXN0ZW1Ecml2ZXJQYWdlOw0KKyAgICAgICAg VUxPTkcgRmFzdFJlYWROb1dhaXQ7DQorICAgICAgICBVTE9ORyBGYXN0UmVhZFdhaXQ7DQorICAg ICAgICBVTE9ORyBGYXN0UmVhZFJlc291cmNlTWlzczsNCisgICAgICAgIFVMT05HIEZhc3RSZWFk Tm90UG9zc2libGU7DQorICAgICAgICBVTE9ORyBGYXN0TWRsUmVhZE5vV2FpdDsNCisgICAgICAg IFVMT05HIEZhc3RNZGxSZWFkV2FpdDsNCisgICAgICAgIFVMT05HIEZhc3RNZGxSZWFkUmVzb3Vy Y2VNaXNzOw0KKyAgICAgICAgVUxPTkcgRmFzdE1kbFJlYWROb3RQb3NzaWJsZTsNCisgICAgICAg IFVMT05HIE1hcERhdGFOb1dhaXQ7DQorICAgICAgICBVTE9ORyBNYXBEYXRhV2FpdDsNCisgICAg ICAgIFVMT05HIE1hcERhdGFOb1dhaXRNaXNzOw0KKyAgICAgICAgVUxPTkcgTWFwRGF0YVdhaXRN aXNzOw0KKyAgICAgICAgVUxPTkcgUGluTWFwcGVkRGF0YUNvdW50Ow0KKyAgICAgICAgVUxPTkcg UGluUmVhZE5vV2FpdDsNCisgICAgICAgIFVMT05HIFBpblJlYWRXYWl0Ow0KKyAgICAgICAgVUxP TkcgUGluUmVhZE5vV2FpdE1pc3M7DQorICAgICAgICBVTE9ORyBQaW5SZWFkV2FpdE1pc3M7DQor ICAgICAgICBVTE9ORyBDb3B5UmVhZE5vV2FpdDsNCisgICAgICAgIFVMT05HIENvcHlSZWFkV2Fp dDsNCisgICAgICAgIFVMT05HIENvcHlSZWFkTm9XYWl0TWlzczsNCisgICAgICAgIFVMT05HIENv cHlSZWFkV2FpdE1pc3M7DQorICAgICAgICBVTE9ORyBNZGxSZWFkTm9XYWl0Ow0KKyAgICAgICAg VUxPTkcgTWRsUmVhZFdhaXQ7DQorICAgICAgICBVTE9ORyBNZGxSZWFkTm9XYWl0TWlzczsNCisg ICAgICAgIFVMT05HIE1kbFJlYWRXYWl0TWlzczsNCisgICAgICAgIFVMT05HIFJlYWRBaGVhZElv czsNCisgICAgICAgIFVMT05HIExhenlXcml0ZUlvczsNCisgICAgICAgIFVMT05HIExhenlXcml0 ZVBhZ2VzOw0KKyAgICAgICAgVUxPTkcgRGF0YUZsdXNoZXM7DQorICAgICAgICBVTE9ORyBEYXRh UGFnZXM7DQorICAgICAgICBVTE9ORyBDb250ZXh0U3dpdGNoZXM7DQorICAgICAgICBVTE9ORyBG aXJzdExldmVsVGJGaWxsczsNCisgICAgICAgIFVMT05HIFNlY29uZExldmVsVGJGaWxsczsNCisg ICAgICAgIFVMT05HIFN5c3RlbUNhbGxzOw0KKyAgICB9IFNZU1RFTV9QRVJGT1JNQU5DRV9JTkZP Uk1BVElPTiwgKlBTWVNURU1fUEVSRk9STUFOQ0VfSU5GT1JNQVRJT047DQorDQordHlwZWRlZiBz dHJ1Y3QgX1NZU1RFTV9CQVNJQ19JTkZPUk1BVElPTnsNCisgICAgICAgIFVMT05HIFVua25vd247 DQorICAgICAgICBVTE9ORyBNYXhpbXVtSW5jcmVtZW50Ow0KKyAgICAgICAgVUxPTkcgUGFnZVNp emU7DQorICAgICAgICBVTE9ORyBOdW1iZXJPZlBoeXNpY2FsUGFnZXM7DQorICAgICAgICBVTE9O RyBMb3dlc3RQaHlzaWNhbFBhZ2U7DQorICAgICAgICBVTE9ORyBIaWdoZXN0UGh5c2ljYWxQYWdl Ow0KKyAgICAgICAgVUxPTkcgQWxsb2NhdGlvbkdyYW51bGFyaXR5Ow0KKyAgICAgICAgVUxPTkdf UFRSIExvd2VzdFVzZXJBZGRyZXNzOw0KKyAgICAgICAgVUxPTkdfUFRSIEhpZ2hlc3RVc2VyQWRk cmVzczsNCisgICAgICAgIFVMT05HX1BUUiBBY3RpdmVQcm9jZXNzb3JzOw0KKyAgICAgICAgQ0NI QVIgTnVtYmVyUHJvY2Vzc29yczsNCisgICAgfVNZU1RFTV9CQVNJQ19JTkZPUk1BVElPTiwgKlBT WVNURU1fQkFTSUNfSU5GT1JNQVRJT047DQorDQorDQordHlwZWRlZiBlbnVtIF9TWVNURU1fSU5G T1JNQVRJT05fQ0xBU1Mgew0KKyAgICBTeXN0ZW1CYXNpY0luZm9ybWF0aW9uLCAvLyAwIFkgTg0K KyAgICBTeXN0ZW1Qcm9jZXNzb3JJbmZvcm1hdGlvbiwgLy8gMSBZIE4NCisgICAgU3lzdGVtUGVy Zm9ybWFuY2VJbmZvcm1hdGlvbiwgLy8gMiBZIE4NCisgICAgU3lzdGVtVGltZU9mRGF5SW5mb3Jt YXRpb24sIC8vIDMgWSBODQorICAgIFN5c3RlbU5vdEltcGxlbWVudGVkMSwgLy8gNCBZIE4NCisg ICAgU3lzdGVtUHJvY2Vzc2VzQW5kVGhyZWFkc0luZm9ybWF0aW9uLCAvLyA1IFkgTg0KKyAgICBT eXN0ZW1DYWxsQ291bnRzLCAvLyA2IFkgTg0KKyAgICBTeXN0ZW1Db25maWd1cmF0aW9uSW5mb3Jt YXRpb24sIC8vIDcgWSBODQorICAgIFN5c3RlbVByb2Nlc3NvclRpbWVzLCAvLyA4IFkgTg0KKyAg ICBTeXN0ZW1HbG9iYWxGbGFnLCAvLyA5IFkgWQ0KKyAgICBTeXN0ZW1Ob3RJbXBsZW1lbnRlZDIs IC8vIDEwIFkgTg0KKyAgICBTeXN0ZW1Nb2R1bGVJbmZvcm1hdGlvbiwgLy8gMTEgWSBODQorICAg IFN5c3RlbUxvY2tJbmZvcm1hdGlvbiwgLy8gMTIgWSBODQorICAgIFN5c3RlbU5vdEltcGxlbWVu dGVkMywgLy8gMTMgWSBODQorICAgIFN5c3RlbU5vdEltcGxlbWVudGVkNCwgLy8gMTQgWSBODQor ICAgIFN5c3RlbU5vdEltcGxlbWVudGVkNSwgLy8gMTUgWSBODQorICAgIFN5c3RlbUhhbmRsZUlu Zm9ybWF0aW9uLCAvLyAxNiBZIE4NCisgICAgU3lzdGVtT2JqZWN0SW5mb3JtYXRpb24sIC8vIDE3 IFkgTg0KKyAgICBTeXN0ZW1QYWdlZmlsZUluZm9ybWF0aW9uLCAvLyAxOCBZIE4NCisgICAgU3lz dGVtSW5zdHJ1Y3Rpb25FbXVsYXRpb25Db3VudHMsIC8vIDE5IFkgTg0KKyAgICBTeXN0ZW1JbnZh bGlkSW5mb0NsYXNzMSwgLy8gMjANCisgICAgU3lzdGVtQ2FjaGVJbmZvcm1hdGlvbiwgLy8gMjEg WSBZDQorICAgIFN5c3RlbVBvb2xUYWdJbmZvcm1hdGlvbiwgLy8gMjIgWSBODQorICAgIFN5c3Rl bVByb2Nlc3NvclN0YXRpc3RpY3MsIC8vIDIzIFkgTg0KKyAgICBTeXN0ZW1EcGNJbmZvcm1hdGlv biwgLy8gMjQgWSBZDQorICAgIFN5c3RlbU5vdEltcGxlbWVudGVkNiwgLy8gMjUgWSBODQorICAg IFN5c3RlbUxvYWRJbWFnZSwgLy8gMjYgTiBZDQorICAgIFN5c3RlbVVubG9hZEltYWdlLCAvLyAy NyBOIFkNCisgICAgU3lzdGVtVGltZUFkanVzdG1lbnQsIC8vIDI4IFkgWQ0KKyAgICBTeXN0ZW1O b3RJbXBsZW1lbnRlZDcsIC8vIDI5IFkgTg0KKyAgICBTeXN0ZW1Ob3RJbXBsZW1lbnRlZDgsIC8v IDMwIFkgTg0KKyAgICBTeXN0ZW1Ob3RJbXBsZW1lbnRlZDksIC8vIDMxIFkgTg0KKyAgICBTeXN0 ZW1DcmFzaER1bXBJbmZvcm1hdGlvbiwgLy8gMzIgWSBODQorICAgIFN5c3RlbUV4Y2VwdGlvbklu Zm9ybWF0aW9uLCAvLyAzMyBZIE4NCisgICAgU3lzdGVtQ3Jhc2hEdW1wU3RhdGVJbmZvcm1hdGlv biwgLy8gMzQgWSBZL04NCisgICAgU3lzdGVtS2VybmVsRGVidWdnZXJJbmZvcm1hdGlvbiwgLy8g MzUgWSBODQorICAgIFN5c3RlbUNvbnRleHRTd2l0Y2hJbmZvcm1hdGlvbiwgLy8gMzYgWSBODQor ICAgIFN5c3RlbVJlZ2lzdHJ5UXVvdGFJbmZvcm1hdGlvbiwgLy8gMzcgWSBZDQorICAgIFN5c3Rl bUxvYWRBbmRDYWxsSW1hZ2UsIC8vIDM4IE4gWQ0KKyAgICBTeXN0ZW1Qcmlvcml0eVNlcGFyYXRp b24sIC8vIDM5IE4gWQ0KKyAgICBTeXN0ZW1Ob3RJbXBsZW1lbnRlZDEwLCAvLyA0MCBZIE4NCisg ICAgU3lzdGVtTm90SW1wbGVtZW50ZWQxMSwgLy8gNDEgWSBODQorICAgIFN5c3RlbUludmFsaWRJ bmZvQ2xhc3MyLCAvLyA0Mg0KKyAgICBTeXN0ZW1JbnZhbGlkSW5mb0NsYXNzMywgLy8gNDMNCisg ICAgU3lzdGVtVGltZVpvbmVJbmZvcm1hdGlvbiwgLy8gNDQgWSBODQorICAgIFN5c3RlbUxvb2th c2lkZUluZm9ybWF0aW9uLCAvLyA0NSBZIE4NCisgICAgU3lzdGVtU2V0VGltZVNsaXBFdmVudCwg Ly8gNDYgTiBZDQorICAgIFN5c3RlbUNyZWF0ZVNlc3Npb24sIC8vIDQ3IE4gWQ0KKyAgICBTeXN0 ZW1EZWxldGVTZXNzaW9uLCAvLyA0OCBOIFkNCisgICAgU3lzdGVtSW52YWxpZEluZm9DbGFzczQs IC8vIDQ5DQorICAgIFN5c3RlbVJhbmdlU3RhcnRJbmZvcm1hdGlvbiwgLy8gNTAgWSBODQorICAg IFN5c3RlbVZlcmlmaWVySW5mb3JtYXRpb24sIC8vIDUxIFkgWQ0KKyAgICBTeXN0ZW1BZGRWZXJp ZmllciwgLy8gNTIgTiBZDQorICAgIFN5c3RlbVNlc3Npb25Qcm9jZXNzZXNJbmZvcm1hdGlvbiAv LyA1MyBZIE4NCit9IFNZU1RFTV9JTkZPUk1BVElPTl9DTEFTUzsNCisNCisNCisNCit0eXBlZGVm IGVudW0gew0KKyAgICBTdGF0ZUluaXRpYWxpemVkLA0KKyAgICBTdGF0ZVJlYWR5LA0KKyAgICBT dGF0ZVJ1bm5pbmcsDQorICAgIFN0YXRlU3RhbmRieSwNCisgICAgU3RhdGVUZXJtaW5hdGVkLA0K KyAgICBTdGF0ZVdhaXQsDQorICAgIFN0YXRlVHJhbnNpdGlvbiwNCisgICAgU3RhdGVVbmtub3du DQorfSBUSFJFQURfU1RBVEU7DQorDQordHlwZWRlZiBzdHJ1Y3QgX1NZU1RFTV9USFJFQURTIHsN CisgICAgTEFSR0VfSU5URUdFUiBLZXJuZWxUaW1lOw0KKyAgICBMQVJHRV9JTlRFR0VSIFVzZXJU aW1lOw0KKyAgICBMQVJHRV9JTlRFR0VSIENyZWF0ZVRpbWU7DQorICAgIFVMT05HIFdhaXRUaW1l Ow0KKyAgICBQVk9JRCBTdGFydEFkZHJlc3M7DQorICAgIENMSUVOVF9JRCBDbGllbnRJZDsNCisg ICAgS1BSSU9SSVRZIFByaW9yaXR5Ow0KKyAgICBLUFJJT1JJVFkgQmFzZVByaW9yaXR5Ow0KKyAg ICBVTE9ORyBDb250ZXh0U3dpdGNoQ291bnQ7DQorICAgIFRIUkVBRF9TVEFURSBTdGF0ZTsNCisg ICAgS1dBSVRfUkVBU09OIFdhaXRSZWFzb247DQorfSBTWVNURU1fVEhSRUFEUywgKlBTWVNURU1f VEhSRUFEUzsNCisNCisjaWYgZGVmaW5lZChfV0lONjQpDQorDQorLyoNCisgICAgdGhlIHN0cnVj dCBoYXMgYmVlbiBjaGFuZ2VkIHRvIGF2b2lkIGVycm9yISANCisqLw0KK3R5cGVkZWYgc3RydWN0 IF9WTV9DT1VOVEVSU0VYIHsNCisgICAgICAgIFVMT05HTE9ORyBQZWFrVmlydHVhbFNpemU7ICAg ICAgICAgICAgICAgICAgICAvLyB1c2VkIHRvIGJlIFVMT05HDQorICAgICAgICBVTE9OR0xPTkcg VmlydHVhbFNpemU7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCB0byBiZSBVTE9ORw0K KyAgICAgICAgVUxPTkcgUGFnZUZhdWx0Q291bnQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8v IHVzZWQgdG8gYmUgVUxPTkcNCisgICAgICAgIFVMT05HTE9ORyBQZWFrV29ya2luZ1NldFNpemU7 ICAgICAgICAgICAgICAgICAvLyB1c2VkIHRvIGJlIFVMT05HDQorICAgICAgICBVTE9OR0xPTkcg V29ya2luZ1NldFNpemU7ICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCB0byBiZSBVTE9ORw0K KyAgICAgICAgVUxPTkdMT05HIFF1b3RhUGVha1BhZ2VkUG9vbFVzYWdlOyAgICAgICAgICAgIC8v IHVzZWQgdG8gYmUgVUxPTkcNCisgICAgICAgIFVMT05HTE9ORyBRdW90YVBhZ2VkUG9vbFVzYWdl OyAgICAgICAgICAgICAgICAvLyB1c2VkIHRvIGJlIFVMT05HDQorICAgICAgICBVTE9OR0xPTkcg UXVvdGFQZWFrTm9uUGFnZWRQb29sVXNhZ2U7ICAgICAgICAgLy8gdXNlZCB0byBiZSBVTE9ORw0K KyAgICAgICAgVUxPTkdMT05HIFF1b3RhTm9uUGFnZWRQb29sVXNhZ2U7ICAgICAgICAgICAgIC8v IHVzZWQgdG8gYmUgVUxPTkcNCisgICAgICAgIFVMT05HTE9ORyBQYWdlZmlsZVVzYWdlOyAgICAg ICAgICAgICAgICAgICAgICAvLyB1c2VkIHRvIGJlIFVMT05HDQorICAgICAgICBVTE9OR0xPTkcg UGVha1BhZ2VmaWxlVXNhZ2U7ICAgICAgICAgICAgICAgICAgLy8gdXNlZCB0byBiZSBVTE9ORw0K KyAgICAgICAgVUxPTkdMT05HIFByaXZhdGVCeXRlOyAgICAgICAgICAgICAgICAgICAgICAgIC8v IGFkZCBieSBwZW5nZmVpLnpoYW5ncGYNCit9IFZNX0NPVU5URVJTRVgsICpQVk1fQ09VTlRFUlNF WDsNCisNCit0eXBlZGVmIHN0cnVjdCBfU1lTVEVNX1BST0NFU1NFUyB7IA0KKyAgICBVTE9ORyBO ZXh0RW50cnlEZWx0YTsNCisgICAgVUxPTkcgVGhyZWFkQ291bnQ7DQorICAgIFVMT05HIFJlc2Vy dmVkMVs2XTsNCisgICAgTEFSR0VfSU5URUdFUiBDcmVhdGVUaW1lOw0KKyAgICBMQVJHRV9JTlRF R0VSIFVzZXJUaW1lOw0KKyAgICBMQVJHRV9JTlRFR0VSIEtlcm5lbFRpbWU7DQorICAgIFVOSUNP REVfU1RSSU5HIFByb2Nlc3NOYW1lOw0KKyAgICBLUFJJT1JJVFkgQmFzZVByaW9yaXR5Ow0KKyAg ICBVTE9OR0xPTkcgUHJvY2Vzc0lkOyAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgdG8gYmUg VUxPTkcNCisgICAgVUxPTkdMT05HIEluaGVyaXRlZEZyb21Qcm9jZXNzSWQ7ICAgICAgICAvLyB1 c2VkIHRvIGJlIFVMT05HDQorICAgIFVMT05HTE9ORyBIYW5kbGVDb3VudDsgICAgICAgICAgICAg ICAgICAgLy8gdXNlZCB0byBiZSBVTE9ORw0KKyAgICBVTE9ORyBSZXNlcnZlZDJbMl07DQorICAg IFZNX0NPVU5URVJTRVggVm1Db3VudGVyczsNCisgICAgSU9fQ09VTlRFUlMgSW9Db3VudGVyczsN CisgICAgU1lTVEVNX1RIUkVBRFMgVGhyZWFkc1sxXTsNCit9IFNZU1RFTV9QUk9DRVNTRVMsICpQ U1lTVEVNX1BST0NFU1NFUzsNCisNCisjZWxzZQ0KK3R5cGVkZWYgc3RydWN0IF9WTV9DT1VOVEVS U0VYIHsNCisgICAgICAgIFVMT05HIFBlYWtWaXJ0dWFsU2l6ZTsNCisgICAgICAgIFVMT05HIFZp cnR1YWxTaXplOw0KKyAgICAgICAgVUxPTkcgUGFnZUZhdWx0Q291bnQ7DQorICAgICAgICBVTE9O RyBQZWFrV29ya2luZ1NldFNpemU7DQorICAgICAgICBVTE9ORyBXb3JraW5nU2V0U2l6ZTsNCisg ICAgICAgIFVMT05HIFF1b3RhUGVha1BhZ2VkUG9vbFVzYWdlOw0KKyAgICAgICAgVUxPTkcgUXVv dGFQYWdlZFBvb2xVc2FnZTsNCisgICAgICAgIFVMT05HIFF1b3RhUGVha05vblBhZ2VkUG9vbFVz YWdlOw0KKyAgICAgICAgVUxPTkcgUXVvdGFOb25QYWdlZFBvb2xVc2FnZTsNCisgICAgICAgIFVM T05HIFBhZ2VmaWxlVXNhZ2U7DQorICAgICAgICBVTE9ORyBQZWFrUGFnZWZpbGVVc2FnZTsNCisg ICAgICAgIFVMT05HIFByaXZhdGVCeXRlOyAgICAgICAgICAgICAgICAgICAgLy8gYWRkIGJ5IHBl bmdmZWkuemhhbmdwZg0KK30gVk1fQ09VTlRFUlNFWCwgKlBWTV9DT1VOVEVSU0VYOw0KKw0KK3R5 cGVkZWYgc3RydWN0IF9TWVNURU1fUFJPQ0VTU0VTIHsgDQorICAgIFVMT05HIE5leHRFbnRyeURl bHRhOw0KKyAgICBVTE9ORyBUaHJlYWRDb3VudDsNCisgICAgVUxPTkcgUmVzZXJ2ZWQxWzZdOw0K KyAgICBMQVJHRV9JTlRFR0VSIENyZWF0ZVRpbWU7DQorICAgIExBUkdFX0lOVEVHRVIgVXNlclRp bWU7DQorICAgIExBUkdFX0lOVEVHRVIgS2VybmVsVGltZTsNCisgICAgVU5JQ09ERV9TVFJJTkcg UHJvY2Vzc05hbWU7DQorICAgIEtQUklPUklUWSBCYXNlUHJpb3JpdHk7DQorICAgIFVMT05HIFBy b2Nlc3NJZDsNCisgICAgVUxPTkcgSW5oZXJpdGVkRnJvbVByb2Nlc3NJZDsNCisgICAgVUxPTkcg SGFuZGxlQ291bnQ7DQorICAgIFVMT05HIFJlc2VydmVkMlsyXTsNCisgICAgVk1fQ09VTlRFUlNF WCBWbUNvdW50ZXJzOw0KKyAgICBJT19DT1VOVEVSUyBJb0NvdW50ZXJzOyANCisgICAgU1lTVEVN X1RIUkVBRFMgVGhyZWFkc1sxXTsNCit9IFNZU1RFTV9QUk9DRVNTRVMsICpQU1lTVEVNX1BST0NF U1NFUzsNCisjZW5kaWYNCisNCisjZGVmaW5lIERFRl9CVUZfU0laRSA2NTUzNg0KKw0KK05UU1lT QVBJIA0KKyAgICBOVFNUQVRVUw0KKyAgICBOVEFQSQ0KKyAgICBOdFF1ZXJ5U3lzdGVtSW5mb3Jt YXRpb24oDQorICAgIElOIFNZU1RFTV9JTkZPUk1BVElPTl9DTEFTUyBTeXN0ZW1JbmZvcm1hdGlv bkNsYXNzLA0KKyAgICBPVVQgUFZPSUQgICAgICAgICAgICAgICBTeXN0ZW1JbmZvcm1hdGlvbiwN CisgICAgSU4gVUxPTkcgICAgICAgICAgICAgICAgU3lzdGVtSW5mb3JtYXRpb25MZW5ndGgsDQor ICAgIE9VVCBQVUxPTkcgICAgICAgICAgICAgIFJldHVybkxlbmd0aCBPUFRJT05BTCApOw0KKw0K K05UU1RBVFVTIE5UQVBJDQorUHZHbG9iYWxNZW1vcnlTdGF0dXMoUFZPSUQgcEJ1ZmZlcikNCit7 DQorICAgIExQTUVNT1JZU1RBVFVTIHBCdWZmZXJYc01lbTsNCisgICAgU1lTVEVNX0JBU0lDX0lO Rk9STUFUSU9OIEJhc2VDYWNoZWRTeXNJbmZvOw0KKyAgICBTWVNURU1fUEVSRk9STUFOQ0VfSU5G T1JNQVRJT04gUGVyZm9ybWFuY2VJbmZvOw0KKyAgICBVTE9ORyB1U2l6ZVN5c0luZm87DQorICAg IFVMT05HTE9ORyB0b3RhbENvbW1pdFNpemU7DQorICAgIE5UU1RBVFVTIHN0YXR1czsNCisgICAg UFZPSUQgcEJ1ZmZlclN5c01lbTsNCisgICAgUFNZU1RFTV9QUk9DRVNTRVMgcEluZm87DQorICAg IA0KKyAgICBwQnVmZmVyWHNNZW0gPSAoTFBNRU1PUllTVEFUVVMpcEJ1ZmZlcjsNCisNCisgICAg c3RhdHVzID0gTnRRdWVyeVN5c3RlbUluZm9ybWF0aW9uKFN5c3RlbUJhc2ljSW5mb3JtYXRpb24s DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQmFzZUNhY2hlZFN5c0lu Zm8sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoQmFzZUNh Y2hlZFN5c0luZm8pLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCk7DQorICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIHN0YXR1 czsNCisNCisgICAgLyogUXVlcnkgcGVyZm9ybWFuY2UgaW5mb3JtYXRpb24gKi8NCisgICAgc3Rh dHVzID0gTnRRdWVyeVN5c3RlbUluZm9ybWF0aW9uKFN5c3RlbVBlcmZvcm1hbmNlSW5mb3JtYXRp b24sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUGVyZm9ybWFuY2VJ bmZvLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFBlcmZv cm1hbmNlSW5mbyksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM KTsNCisgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQorICAgICAgICByZXR1cm4gc3RhdHVz Ow0KKw0KKyAgICBwQnVmZmVyWHNNZW0tPnRvdGFsUGh5cyA9IEJhc2VDYWNoZWRTeXNJbmZvLk51 bWJlck9mUGh5c2ljYWxQYWdlcyAqIEJhc2VDYWNoZWRTeXNJbmZvLlBhZ2VTaXplOw0KKw0KKyAg ICAvKiBOb3cgc2F2ZSBhdmFpbGFibGUgcGh5c2ljYWwgbWVtb3J5ICovDQorICAgIHBCdWZmZXJY c01lbS0+TWVtRnJlZSA9IChQZXJmb3JtYW5jZUluZm8uQXZhaWxhYmxlUGFnZXMgKiBCYXNlQ2Fj aGVkU3lzSW5mby5QYWdlU2l6ZSkgPj4gMTA7DQorDQorICAgIHVTaXplU3lzSW5mbyA9IERFRl9C VUZfU0laRTsNCisNCisgICAgZG97DQorICAgICAgICBwQnVmZmVyU3lzTWVtID0gRXhBbGxvY2F0 ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgdVNpemVTeXNJbmZvLCBYRU5QQ0lfUE9PTF9UQUcp Ow0KKyAgICAgICAgaWYocEJ1ZmZlclN5c01lbSA9PSBOVUxMKQ0KKyAgICAgICAgICAgIHJldHVy biBzdGF0dXM7DQorDQorICAgICAgICBzdGF0dXMgPSBOdFF1ZXJ5U3lzdGVtSW5mb3JtYXRpb24o U3lzdGVtUHJvY2Vzc2VzQW5kVGhyZWFkc0luZm9ybWF0aW9uLCBwQnVmZmVyU3lzTWVtLCB1U2l6 ZVN5c0luZm8sIE5VTEwpOw0KKw0KKyAgICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQor ICAgICAgICB7DQorICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBTVEFUVVNfSU5GT19MRU5HVEhf TUlTTUFUQ0gpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB1U2l6ZVN5c0luZm8g Kz0gREVGX0JVRl9TSVpFIDsNCisgICAgICAgICAgICAgICAgRXhGcmVlUG9vbFdpdGhUYWcocEJ1 ZmZlclN5c01lbSwgWEVOUENJX1BPT0xfVEFHKTsNCisgICAgICAgICAgICAgICAgY29udGludWU7 DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICB7DQorICAg ICAgICAgICAgICAgIEV4RnJlZVBvb2xXaXRoVGFnKHBCdWZmZXJTeXNNZW0sIFhFTlBDSV9QT09M X1RBRyk7DQorICAgICAgICAgICAgICAgIHJldHVybiBTVEFUVVNfU0VWRVJJVFlfRVJST1I7DQor ICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIGJy ZWFrOw0KKw0KKyAgICB9d2hpbGUoIU5UX1NVQ0NFU1Moc3RhdHVzKSk7LyogUXVlcnkgcHJvY2Vz cyBpbmZvcm1hdGlvbiAqLw0KKyAgICANCisgICAgS2RQcmludCgoInhlbnBjaSIiY2JmZmVyOi0t LS0tLSVkXG4iLCB1U2l6ZVN5c0luZm8pKTsNCisgICAgcEluZm8gPSAoUFNZU1RFTV9QUk9DRVNT RVMpcEJ1ZmZlclN5c01lbTsNCisgICAgdG90YWxDb21taXRTaXplID0gMDsNCisNCisgICAgZm9y ICg7Oykgew0KKw0KKyAgICAgICAgaWYgKHBJbmZvIC0+IFByb2Nlc3NJZCAhPSAwKQ0KKyAgICAg ICAgICAgIHRvdGFsQ29tbWl0U2l6ZSArPSAocEluZm8tPlZtQ291bnRlcnMpLlBhZ2VmaWxlVXNh Z2U7DQorDQorICAgICAgICBpZiAocEluZm8tPk5leHRFbnRyeURlbHRhID09IDApDQorICAgICAg ICAgICAgYnJlYWs7DQorDQorICAgICAgICBwSW5mbyA9IChQU1lTVEVNX1BST0NFU1NFUykoKChQ VUNIQVIpcEluZm8pICsgcEluZm8tPk5leHRFbnRyeURlbHRhKTsNCisgICAgfQ0KKw0KKyAgICBw QnVmZmVyWHNNZW0tPkNvbW1pdHRlZF9BUyA9KHRvdGFsQ29tbWl0U2l6ZSA+PjEwKTsNCisgICAg RXhGcmVlUG9vbFdpdGhUYWcocEJ1ZmZlclN5c01lbSwgWEVOUENJX1BPT0xfVEFHKTsNCisgICAg DQorICAgIHJldHVybiAwOw0KK30NCisNCmRpZmYgLXJ1TiAuLi93aW4tcHZkcml2ZXJzLmhnL3hl bnBjaS9nZXRwaHlpbmZvLmggeGVucGNpL2dldHBoeWluZm8uaAotLS0gLi4vd2luLXB2ZHJpdmVy cy5oZy94ZW5wY2kvZ2V0cGh5aW5mby5oCTE5NzAtMDEtMDEgMDg6MDA6MDAuMDAwMDAwMDAwICsw ODAwCisrKyB4ZW5wY2kvZ2V0cGh5aW5mby5oCTIwMTEtMDItMjYgMjA6NDQ6MzMuMDAwMDAwMDAw ICswODAwCkBAIC0wLDAgKzEsMjggQEAKKyNpZiAhZGVmaW5lZChfR0VUUEhZSU5GT19IXykNCisj ZGVmaW5lIF9HRVRQSFlJTkZPX0hfDQorDQorI2RlZmluZSBEREtBUEkNCisjaW5jbHVkZSA8bnRk ZGsuaD4NCisjaW5jbHVkZSA8d2RtLmg+DQorI2RlZmluZSBOVFNUUlNBRkVfTElCDQorI2luY2x1 ZGUgPG50c3Ryc2FmZS5oPg0KKyNpbmNsdWRlIDxzdGRsaWIuaD4NCisNCisvKg0KKyAgIGlmIG1l bWluZm8gY2hhbmdlZCB2YWx1ZSBsZXNzIHRoYW4gQk9VTkRfVkFMVUUsIG5vIHhlbnN0b3JlIHVw ZGF0ZWQNCisgICBkZWZhdWx0IDVNDQorKi8NCisjZGVmaW5lIEJPVU5EX1ZBTFVFIDUxMjANCisj ZGVmaW5lIENIQU5HRUQoeCx5KSAoKCh4KT4oeSkrQk9VTkRfVkFMVUUpfHwoKHkpPih4KStCT1VO RF9WQUxVRSkpDQorDQordHlwZWRlZiBzdHJ1Y3QgX01FTU9SWVNUQVRVUyB7DQorICAgIFVMT05H IHRvdGFsUGh5czsNCisgICAgVUxPTkcgTWVtQ3VyOw0KKyAgICBVTE9ORyBNZW1GcmVlOyANCisg ICAgVUxPTkdMT05HIENvbW1pdHRlZF9BUzsNCit9IE1FTU9SWVNUQVRVUywgKkxQTUVNT1JZU1RB VFVTOw0KKw0KK05UU1RBVFVTIE5UQVBJDQorUHZHbG9iYWxNZW1vcnlTdGF0dXMoUFZPSUQgcEJ1 ZmZlcik7DQorDQorI2VuZGlmDQpkaWZmIC1ydU4gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5wY2kv Z250dGJsLmMgeGVucGNpL2dudHRibC5jCi0tLSAuLi93aW4tcHZkcml2ZXJzLmhnL3hlbnBjaS9n bnR0YmwuYwkyMDExLTAyLTI2IDIwOjQzOjEyLjAwMDAwMDAwMCArMDgwMAorKysgeGVucGNpL2du dHRibC5jCTIwMTEtMDItMjYgMjA6NDQ6MzMuMDAwMDAwMDAwICswODAwCkBAIC0yNywxMiArMjcs MTIgQEAKICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUih0YWcpOw0KICAgDQogI2lmIERCRw0KLSAg aWYgKHhwZGQtPmdudHRibF90YWdbcmVmXSAhPSB0YWcpDQotICAgIEtkUHJpbnQoKF9fRFJJVkVS X05BTUUgIiAgICAgR3JhbnQgRW50cnkgJWQgZm9yICUuNHMgZG9lc24ndCBtYXRjaCAlLjRzXG4i LCByZWYsIChQVUNIQVIpJnRhZywgKFBVQ0hBUikmeHBkZC0+Z250dGJsX3RhZ1tyZWZdKSk7DQot ICBBU1NFUlQoeHBkZC0+Z250dGJsX3RhZ1tyZWZdID09IHRhZyk7DQotICB4cGRkLT5nbnR0Ymxf dGFnW3JlZl0gPSAwOw0KKyAgaWYgKHhwZGQtPmdudHRhYl90YWdbcmVmXSAhPSB0YWcpDQorICAg IEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgR3JhbnQgRW50cnkgJWQgZm9yICUuNHMgZG9l c24ndCBtYXRjaCAlLjRzXG4iLCByZWYsIChQVUNIQVIpJnRhZywgKFBVQ0hBUikmeHBkZC0+Z250 dGFiX3RhZ1tyZWZdKSk7DQorICBBU1NFUlQoeHBkZC0+Z250dGFiX3RhZ1tyZWZdID09IHRhZyk7 DQorICB4cGRkLT5nbnR0YWJfdGFnW3JlZl0gPSAwOw0KICNlbmRpZg0KLSAgc3RhY2tfcHVzaCh4 cGRkLT5nbnR0Ymxfc3MsIChQVk9JRClyZWYpOw0KKyAgc3RhY2tfcHVzaCh4cGRkLT5nbnR0YWJf c3MsIChQVk9JRClyZWYpOw0KIH0NCiANCiBncmFudF9yZWZfdA0KQEAgLTQ0LDE3ICs0NCwxNyBA QAogDQogICBVTlJFRkVSRU5DRURfUEFSQU1FVEVSKHRhZyk7DQogDQotICBpZiAoIXN0YWNrX3Bv cCh4cGRkLT5nbnR0Ymxfc3MsICZwdHJfcmVmKSkNCisgIGlmICghc3RhY2tfcG9wKHhwZGQtPmdu dHRhYl9zcywgJnB0cl9yZWYpKQ0KICAgew0KICAgICBLZFByaW50KChfX0RSSVZFUl9OQU1FICIg ICAgIE5vIGZyZWUgZ3JhbnQgcmVmc1xuIikpOw0KICAgICByZXR1cm4gSU5WQUxJRF9HUkFOVF9S RUY7DQogICB9DQogICByZWYgPSAoZ3JhbnRfcmVmX3QpKFVMT05HX1BUUilwdHJfcmVmOw0KICNp ZiBEQkcNCi0gIGlmICh4cGRkLT5nbnR0YmxfdGFnW3JlZl0pDQotICAgIEtkUHJpbnQoKF9fRFJJ VkVSX05BTUUgIiAgICAgR3JhbnQgRW50cnkgJWQgZm9yICUuNHMgaW4gdXNlIGJ5ICUuNHNcbiIs IHJlZiwgKFBVQ0hBUikmdGFnLCAoUFVDSEFSKSZ4cGRkLT5nbnR0YmxfdGFnW3JlZl0pKTsNCi0g IEFTU0VSVCgheHBkZC0+Z250dGJsX3RhZ1tyZWZdKTsNCi0gIHhwZGQtPmdudHRibF90YWdbcmVm XSA9IHRhZzsNCisgIGlmICh4cGRkLT5nbnR0YWJfdGFnW3JlZl0pDQorICAgIEtkUHJpbnQoKF9f RFJJVkVSX05BTUUgIiAgICAgR3JhbnQgRW50cnkgJWQgZm9yICUuNHMgaW4gdXNlIGJ5ICUuNHNc biIsIHJlZiwgKFBVQ0hBUikmdGFnLCAoUFVDSEFSKSZ4cGRkLT5nbnR0YWJfdGFnW3JlZl0pKTsN CisgIEFTU0VSVCgheHBkZC0+Z250dGFiX3RhZ1tyZWZdKTsNCisgIHhwZGQtPmdudHRhYl90YWdb cmVmXSA9IHRhZzsNCiAjZW5kaWYNCiANCiAgIHJldHVybiByZWY7DQpAQCAtNjcsMTkgKzY3LDE3 IEBACiAgIHN0cnVjdCB4ZW5fYWRkX3RvX3BoeXNtYXAgeGF0cDsNCiAgIHVuc2lnbmVkIGludCBp ID0gZW5kX2lkeDsNCiANCi0gIEZVTkNUSU9OX0VOVEVSKCk7DQogICAvKiBMb29wIGJhY2t3YXJk cywgc28gdGhhdCB0aGUgZmlyc3QgaHlwZXJjYWxsIGhhcyB0aGUgbGFyZ2VzdCBpbmRleCwgIGVu c3VyaW5nIHRoYXQgdGhlIHRhYmxlIHdpbGwgZ3JvdyBvbmx5IG9uY2UuICAqLw0KICAgZG8gew0K ICAgICB4YXRwLmRvbWlkID0gRE9NSURfU0VMRjsNCiAgICAgeGF0cC5pZHggPSBpOw0KICAgICB4 YXRwLnNwYWNlID0gWEVOTUFQU1BBQ0VfZ3JhbnRfdGFibGU7DQotICAgIHhhdHAuZ3BmbiA9ICh4 ZW5fcGZuX3QpTW1HZXRNZGxQZm5BcnJheSh4cGRkLT5nbnR0YmxfbWRsKVtpXTsNCisgICAgeGF0 cC5ncGZuID0gKHhlbl9wZm5fdCkoeHBkZC0+Z250dGFiX3RhYmxlX3BoeXNpY2FsLlF1YWRQYXJ0 ID4+IFBBR0VfU0hJRlQpICsgaTsNCiAgICAgaWYgKEhZUEVSVklTT1JfbWVtb3J5X29wKHhwZGQs IFhFTk1FTV9hZGRfdG9fcGh5c21hcCwgJnhhdHApKQ0KICAgICB7DQotICAgICAgS2RQcmludCgo X19EUklWRVJfTkFNRSAiICAgICAqKiogRVJST1IgTUFQUElORyBGUkFNRSAlZCAqKipcbiIsIGkp KTsNCisgICAgICBLZFByaW50KChfX0RSSVZFUl9OQU1FICIgICAgICoqKkVSUk9SIE1BUFBJTkcg RlJBTUUqKipcbiIpKTsNCiAgICAgfQ0KICAgfSB3aGlsZSAoaS0tID4gc3RhcnRfaWR4KTsNCi0g IEZVTkNUSU9OX0VYSVQoKTsNCiANCiAgIHJldHVybiAwOw0KIH0NCkBAIC0xMDIsMjQgKzEwMCwy NCBAQAogICBpZiAocmVmID09IElOVkFMSURfR1JBTlRfUkVGKQ0KICAgICByZXR1cm4gcmVmOw0K IA0KLSAgQVNTRVJUKHhwZGQtPmdudHRibF90YWdbcmVmXSA9PSB0YWcpOw0KKyAgQVNTRVJUKHhw ZGQtPmdudHRhYl90YWdbcmVmXSA9PSB0YWcpOw0KICAgDQotICB4cGRkLT5nbnR0YmxfdGFibGVb cmVmXS5mcmFtZSA9IGZyYW1lOw0KLSAgeHBkZC0+Z250dGJsX3RhYmxlW3JlZl0uZG9taWQgPSBk b21pZDsNCisgIHhwZGQtPmdudHRhYl90YWJsZVtyZWZdLmZyYW1lID0gZnJhbWU7DQorICB4cGRk LT5nbnR0YWJfdGFibGVbcmVmXS5kb21pZCA9IGRvbWlkOw0KIA0KLSAgaWYgKHhwZGQtPmdudHRi bF90YWJsZVtyZWZdLmZsYWdzKQ0KKyAgaWYgKHhwZGQtPmdudHRhYl90YWJsZVtyZWZdLmZsYWdz KQ0KICAgew0KICNpZiBEQkcNCi0gICAgS2RQcmludCgoX19EUklWRVJfTkFNRSAiICAgICBHcmFu dCBFbnRyeSAlZCBmb3IgJS40cyBzdGlsbCBpbiB1c2UgYnkgJS40c1xuIiwgcmVmLCAoUFVDSEFS KSZ0YWcsIChQVUNIQVIpJnhwZGQtPmdudHRibF90YWdbcmVmXSkpOw0KKyAgICBLZFByaW50KChf X0RSSVZFUl9OQU1FICIgICAgIEdyYW50IEVudHJ5ICVkIGZvciAlLjRzIHN0aWxsIGluIHVzZSBi eSAlLjRzXG4iLCByZWYsIChQVUNIQVIpJnRhZywgKFBVQ0hBUikmeHBkZC0+Z250dGFiX3RhZ1ty ZWZdKSk7DQogI2Vsc2UNCiAgICAgS2RQcmludCgoX19EUklWRVJfTkFNRSAiICAgICBHcmFudCBF bnRyeSAlZCBmb3IgJS40cyBzdGlsbCBpbiB1c2VcbiIsIHJlZiwgKFBVQ0hBUikmdGFnKSk7DQog I2VuZGlmDQogICB9DQotICBBU1NFUlQoIXhwZGQtPmdudHRibF90YWJsZVtyZWZdLmZsYWdzKTsN CisgIEFTU0VSVCgheHBkZC0+Z250dGFiX3RhYmxlW3JlZl0uZmxhZ3MpOw0KIA0KICAgS2VNZW1v cnlCYXJyaWVyKCk7DQogICByZWFkb25seSAqPSBHVEZfcmVhZG9ubHk7DQotICB4cGRkLT5nbnR0 YmxfdGFibGVbcmVmXS5mbGFncyA9IEdURl9wZXJtaXRfYWNjZXNzIHwgKHVpbnQxNl90KXJlYWRv bmx5Ow0KKyAgeHBkZC0+Z250dGFiX3RhYmxlW3JlZl0uZmxhZ3MgPSBHVEZfcGVybWl0X2FjY2Vz cyB8ICh1aW50MTZfdClyZWFkb25seTsNCiANCiAgIHJldHVybiByZWY7DQogfQ0KQEAgLTEzNSw5 ICsxMzMsOSBAQAogICB1bnNpZ25lZCBzaG9ydCBmbGFncywgbmZsYWdzOw0KIA0KICAgQVNTRVJU KHJlZiAhPSBJTlZBTElEX0dSQU5UX1JFRik7DQotICBBU1NFUlQoeHBkZC0+Z250dGJsX3RhZ1ty ZWZdID09IHRhZyk7DQorICBBU1NFUlQoeHBkZC0+Z250dGFiX3RhZ1tyZWZdID09IHRhZyk7DQog ICANCi0gIG5mbGFncyA9IHhwZGQtPmdudHRibF90YWJsZVtyZWZdLmZsYWdzOw0KKyAgbmZsYWdz ID0geHBkZC0+Z250dGFiX3RhYmxlW3JlZl0uZmxhZ3M7DQogICBkbyB7DQogICAgIGlmICgoZmxh Z3MgPSBuZmxhZ3MpICYgKEdURl9yZWFkaW5nfEdURl93cml0aW5nKSkNCiAgICAgew0KQEAgLTE0 NSw3ICsxNDMsNyBAQAogICAgICAgcmV0dXJuIEZBTFNFOw0KICAgICB9DQogICB9IHdoaWxlICgo bmZsYWdzID0gSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxNigNCi0gICAgKHZvbGF0aWxlIFNI T1JUICopJnhwZGQtPmdudHRibF90YWJsZVtyZWZdLmZsYWdzLCAwLCBmbGFncykpICE9IGZsYWdz KTsNCisgICAgKHZvbGF0aWxlIFNIT1JUICopJnhwZGQtPmdudHRhYl90YWJsZVtyZWZdLmZsYWdz LCAwLCBmbGFncykpICE9IGZsYWdzKTsNCiANCiAgIGlmICgha2VlcHJlZikNCiAgICAgR250VGJs X1B1dFJlZihDb250ZXh0LCByZWYsIHRhZyk7DQpAQCAtMTg1LDQ4ICsxODMsMjggQEAKICAgZ3Jh bnRfZW50cmllcyA9IG1pbihOUl9HUkFOVF9FTlRSSUVTLCAoeHBkZC0+Z3JhbnRfZnJhbWVzICog UEFHRV9TSVpFIC8gc2l6ZW9mKGdyYW50X2VudHJ5X3QpKSk7DQogICBLZFByaW50KChfX0RSSVZF Ul9OQU1FICIgICAgIGdyYW50X2VudHJpZXMgPSAlZFxuIiwgZ3JhbnRfZW50cmllcykpOw0KICAg I2lmIERCRw0KLSAgeHBkZC0+Z250dGJsX3RhZyA9IEV4QWxsb2NhdGVQb29sV2l0aFRhZyhOb25Q YWdlZFBvb2wsIGdyYW50X2VudHJpZXMgKiBzaXplb2YoVUxPTkcpLCBYRU5QQ0lfUE9PTF9UQUcp Ow0KLSAgUnRsWmVyb01lbW9yeSh4cGRkLT5nbnR0YmxfdGFnLCBncmFudF9lbnRyaWVzICogc2l6 ZW9mKFVMT05HKSk7DQotICB4cGRkLT5nbnR0YmxfdGFnX2NvcHkgPSBFeEFsbG9jYXRlUG9vbFdp dGhUYWcoTm9uUGFnZWRQb29sLCBncmFudF9lbnRyaWVzICogc2l6ZW9mKFVMT05HKSwgWEVOUENJ X1BPT0xfVEFHKTsNCisgIHhwZGQtPmdudHRhYl90YWcgPSBFeEFsbG9jYXRlUG9vbFdpdGhUYWco Tm9uUGFnZWRQb29sLCBncmFudF9lbnRyaWVzICogc2l6ZW9mKFVMT05HKSwgWEVOUENJX1BPT0xf VEFHKTsNCisgIFJ0bFplcm9NZW1vcnkoeHBkZC0+Z250dGFiX3RhZywgZ3JhbnRfZW50cmllcyAq IHNpemVvZihVTE9ORykpOw0KICAgI2VuZGlmDQotICB4cGRkLT5nbnR0YmxfdGFibGVfY29weSA9 IEV4QWxsb2NhdGVQb29sV2l0aFRhZyhOb25QYWdlZFBvb2wsIHhwZGQtPmdyYW50X2ZyYW1lcyAq IFBBR0VfU0laRSwgWEVOUENJX1BPT0xfVEFHKTsNCi0gIEFTU0VSVCh4cGRkLT5nbnR0YmxfdGFi bGVfY29weSk7IC8vIGxhenkNCi0gIHhwZGQtPmdudHRibF90YWJsZSA9IEV4QWxsb2NhdGVQb29s V2l0aFRhZyhOb25QYWdlZFBvb2wsIHhwZGQtPmdyYW50X2ZyYW1lcyAqIFBBR0VfU0laRSwgWEVO UENJX1BPT0xfVEFHKTsNCi0gIEFTU0VSVCh4cGRkLT5nbnR0YmxfdGFibGUpOyAvLyBsYXp5DQot ICAvKiBkb20wIGNyYXNoZXMgaWYgd2UgYWxsb2NhdGUgdGhlIHdyb25nIGFtb3VudCBvZiBtZW1v cnkgaGVyZSEgKi8NCi0gIHhwZGQtPmdudHRibF9tZGwgPSBJb0FsbG9jYXRlTWRsKHhwZGQtPmdu dHRibF90YWJsZSwgeHBkZC0+Z3JhbnRfZnJhbWVzICogUEFHRV9TSVpFLCBGQUxTRSwgRkFMU0Us IE5VTEwpOw0KLSAgQVNTRVJUKHhwZGQtPmdudHRibF9tZGwpOyAvLyBsYXp5DQotICBNbUJ1aWxk TWRsRm9yTm9uUGFnZWRQb29sKHhwZGQtPmdudHRibF9tZGwpOw0KLQ0KLSAgLyogbWFrZSBzb21l IGhvbGVzIGZvciB0aGUgZ3JhbnQgcGFnZXMgdG8gZmlsbCBpbiAqLw0KLSAgZm9yIChpID0gMDsg aSA8IChpbnQpeHBkZC0+Z3JhbnRfZnJhbWVzOyBpKyspDQotICB7DQotICAgIHN0cnVjdCB4ZW5f bWVtb3J5X3Jlc2VydmF0aW9uIHJlc2VydmF0aW9uOw0KLSAgICB4ZW5fcGZuX3QgcGZuOw0KLSAg ICBVTE9ORyByZXQ7DQotICAgIA0KLSAgICByZXNlcnZhdGlvbi5hZGRyZXNzX2JpdHMgPSAwOw0K LSAgICByZXNlcnZhdGlvbi5leHRlbnRfb3JkZXIgPSAwOw0KLSAgICByZXNlcnZhdGlvbi5kb21p ZCA9IERPTUlEX1NFTEY7DQotICAgIHJlc2VydmF0aW9uLm5yX2V4dGVudHMgPSAxOw0KLSAgICAj cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEyNykgLyogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBp cyBjb25zdGFudCAqLw0KLSAgICBwZm4gPSAoeGVuX3Bmbl90KU1tR2V0TWRsUGZuQXJyYXkoeHBk ZC0+Z250dGJsX21kbClbaV07DQotICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgcGZu ID0gJXhcbiIsIChVTE9ORylwZm4pKTsNCi0gICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUocmVzZXJ2 YXRpb24uZXh0ZW50X3N0YXJ0LCAmcGZuKTsNCi0gICAgDQotICAgIEtkUHJpbnQoKF9fRFJJVkVS X05BTUUgIiAgICAgQ2FsbGluZyBIWVBFUlZJU09SX21lbW9yeV9vcCAtIHBmbiA9ICV4XG4iLCAo VUxPTkcpcGZuKSk7DQotICAgIHJldCA9IEhZUEVSVklTT1JfbWVtb3J5X29wKHhwZGQsIFhFTk1F TV9kZWNyZWFzZV9yZXNlcnZhdGlvbiwgJnJlc2VydmF0aW9uKTsNCi0gICAgS2RQcmludCgoX19E UklWRVJfTkFNRSAiICAgICBkZWNyZWFzZWQgJWQgcGFnZXMgZm9yIGdyYW50IHRhYmxlIGZyYW1l ICVkXG4iLCByZXQsIGkpKTsNCisgIHhwZGQtPmdudHRhYl90YWJsZV9jb3B5ID0gRXhBbGxvY2F0 ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgeHBkZC0+Z3JhbnRfZnJhbWVzICogUEFHRV9TSVpF LCBYRU5QQ0lfUE9PTF9UQUcpOw0KKyAgQVNTRVJUKHhwZGQtPmdudHRhYl90YWJsZV9jb3B5KTsg Ly8gbGF6eQ0KKyAgeHBkZC0+Z250dGFiX3RhYmxlX3BoeXNpY2FsID0gWGVuUGNpX0FsbG9jTU1J Tyh4cGRkLCBQQUdFX1NJWkUgKiB4cGRkLT5ncmFudF9mcmFtZXMpOw0KKyAgeHBkZC0+Z250dGFi X3RhYmxlID0gTW1NYXBJb1NwYWNlKHhwZGQtPmdudHRhYl90YWJsZV9waHlzaWNhbCwgUEFHRV9T SVpFICogeHBkZC0+Z3JhbnRfZnJhbWVzLCBNbU5vbkNhY2hlZCk7DQorICBpZiAoIXhwZGQtPmdu dHRhYl90YWJsZSkNCisgIHsNCisgICAgS2RQcmludCgoX19EUklWRVJfTkFNRSAiICAgICBFcnJv ciBNYXBwaW5nIEdyYW50IFRhYmxlIFNoYXJlZCBNZW1vcnlcbiIpKTsNCisgICAgLy8gdGhpcyBz aG91bGQgYmUgYSBzaG93IHN0b3BwZXIuLi4NCisgICAgcmV0dXJuOw0KICAgfQ0KIA0KLSAgc3Rh Y2tfbmV3KCZ4cGRkLT5nbnR0Ymxfc3MsIGdyYW50X2VudHJpZXMpOw0KKyAgc3RhY2tfbmV3KCZ4 cGRkLT5nbnR0YWJfc3MsIGdyYW50X2VudHJpZXMpOw0KICAgDQogICBmb3IgKGkgPSBOUl9SRVNF UlZFRF9FTlRSSUVTOyBpIDwgZ3JhbnRfZW50cmllczsgaSsrKQ0KLSAgICBzdGFja19wdXNoKHhw ZGQtPmdudHRibF9zcywgKFBWT0lEKWkpOw0KKyAgICBzdGFja19wdXNoKHhwZGQtPmdudHRhYl9z cywgKFBWT0lEKWkpOw0KICAgDQogICBHbnRUYmxfTWFwKHhwZGQsIDAsIHhwZGQtPmdyYW50X2Zy YW1lcyAtIDEpOw0KIA0KLSAgUnRsWmVyb01lbW9yeSh4cGRkLT5nbnR0YmxfdGFibGUsIFBBR0Vf U0laRSAqIHhwZGQtPmdyYW50X2ZyYW1lcyk7DQorICBSdGxaZXJvTWVtb3J5KHhwZGQtPmdudHRh Yl90YWJsZSwgUEFHRV9TSVpFICogeHBkZC0+Z3JhbnRfZnJhbWVzKTsNCiAgIA0KICAgRlVOQ1RJ T05fRVhJVCgpOw0KIH0NCkBAIC0yMzQsNTQgKzIxMiw3IEBACiBWT0lEDQogR250VGJsX1N1c3Bl bmQoUFhFTlBDSV9ERVZJQ0VfREFUQSB4cGRkKQ0KIHsNCi0gICNpZiBEQkcNCi0gIGludCBncmFu dF9lbnRyaWVzOw0KLSAgI2VuZGlmDQotICBpbnQgaTsNCi0gIA0KLSAgRlVOQ1RJT05fRU5URVIo KTsNCi0gIA0KLSAgLyogY29weSBzb21lIGdyYW50IHJlZnMgYW5kIHN3aXRjaCB0byBhbiBhbHRl cm5hdGUgZnJlZWxpc3QsIGJ1dCBvbmx5IG9uIGhpYmVyICovDQotICBpZiAoS2VHZXRDdXJyZW50 SXJxbCgpIDw9IERJU1BBVENIX0xFVkVMKQ0KLSAgew0KLSAgICBLZFByaW50KChfX0RSSVZFUl9O QU1FICIgICAgIGJhY2tpbmcgdXAgZ3JhbnQgcmVmIHN0YWNrXG4iKSk7DQotICAgIGZvciAoaSA9 IDA7IGkgPCBISUJFUl9HUkVGX0NPVU5UOyBpKyspDQotICAgIHsNCi0gICAgICB4cGRkLT5oaWJl cl9ncmVmc1tpXSA9IElOVkFMSURfR1JBTlRfUkVGOw0KLSAgICB9DQotICAgIGZvciAoaSA9IDA7 IGkgPCBISUJFUl9HUkVGX0NPVU5UOyBpKyspDQotICAgIHsNCi0gICAgICBpZiAoKHhwZGQtPmhp YmVyX2dyZWZzW2ldID0gR250VGJsX0dldFJlZih4cGRkLCAoVUxPTkcpJ0hJQlInKSkgPT0gSU5W QUxJRF9HUkFOVF9SRUYpDQotICAgICAgICBicmVhazsNCi0gICAgfQ0KLSAgICBLZFByaW50KChf X0RSSVZFUl9OQU1FICIgICAgICVkIGdyYW50IHJlZnMgcmVzZXJ2ZWRcbiIsIGkpKTsNCi0gICAg eHBkZC0+Z250dGJsX3NzX2NvcHkgPSB4cGRkLT5nbnR0Ymxfc3M7DQotICAgIHN0YWNrX25ldygm eHBkZC0+Z250dGJsX3NzLCBISUJFUl9HUkVGX0NPVU5UKTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsN Ci0gICAgeHBkZC0+Z250dGJsX3NzX2NvcHkgPSBOVUxMOw0KLSAgfQ0KLSAgDQotICBtZW1jcHko eHBkZC0+Z250dGJsX3RhYmxlX2NvcHksIHhwZGQtPmdudHRibF90YWJsZSwgeHBkZC0+Z3JhbnRf ZnJhbWVzICogUEFHRV9TSVpFKTsNCi0gICNpZiBEQkcNCi0gIC8qIGV2ZW4gdGhvdWdoIGdudHRi bF90YWcgaXMgYWN0dWFsbHkgcHJlc2VydmVkLCBpdCBpcyB1c2VkIGJ5IHRoZSBkdW1wIGRyaXZl ciBzbyBtdXN0IGJlIHJlc3RvcmVkIHRvIGV4YWN0bHkgdGhlIHNhbWUgc3RhdGUgYXMgaXQgd2Fz IG9uIHN1c3BlbmQgKi8NCi0gIGdyYW50X2VudHJpZXMgPSBtaW4oTlJfR1JBTlRfRU5UUklFUywg KHhwZGQtPmdyYW50X2ZyYW1lcyAqIFBBR0VfU0laRSAvIHNpemVvZihncmFudF9lbnRyeV90KSkp Ow0KLSAgbWVtY3B5KHhwZGQtPmdudHRibF90YWdfY29weSwgeHBkZC0+Z250dGJsX3RhZywgZ3Jh bnRfZW50cmllcyAqIHNpemVvZihVTE9ORykpOw0KLSAgI2VuZGlmDQotDQotICAvKiBwdXQgdGhl IGdyYW50IGVudHJpZXMgb24gdGhlIG5ldyBmcmVlbGlzdCwgYWZ0ZXIgY29weWluZyB0aGUgdGFi bGVzIGFib3ZlICovDQotICBpZiAoS2VHZXRDdXJyZW50SXJxbCgpIDw9IERJU1BBVENIX0xFVkVM KQ0KLSAgew0KLSAgICBmb3IgKGkgPSAwOyBpIDwgSElCRVJfR1JFRl9DT1VOVDsgaSsrKQ0KLSAg ICB7DQotICAgICAgaWYgKHhwZGQtPmhpYmVyX2dyZWZzW2ldID09IElOVkFMSURfR1JBTlRfUkVG KQ0KLSAgICAgICAgYnJlYWs7DQotICAgICAgR250VGJsX1B1dFJlZih4cGRkLCB4cGRkLT5oaWJl cl9ncmVmc1tpXSwgKFVMT05HKSdISUJSJyk7DQotICAgIH0NCi0gIH0NCi0gIA0KLSAgRlVOQ1RJ T05fRVhJVCgpOw0KKyAgbWVtY3B5KHhwZGQtPmdudHRhYl90YWJsZV9jb3B5LCB4cGRkLT5nbnR0 YWJfdGFibGUsIHhwZGQtPmdyYW50X2ZyYW1lcyAqIFBBR0VfU0laRSk7DQogfQ0KIA0KIFZPSUQN CkBAIC0yODksNTggKzIyMCwxNSBAQAogew0KICAgVUxPTkcgbmV3X2dyYW50X2ZyYW1lczsNCiAg IFVMT05HIHJlc3VsdDsNCi0gIGludCBpOyAgDQotICAjaWYgREJHDQotICBpbnQgZ3JhbnRfZW50 cmllczsNCi0gICNlbmRpZg0KLQ0KKyAgDQogICBGVU5DVElPTl9FTlRFUigpOw0KLQ0KLSAgZm9y IChpID0gMDsgaSA8IChpbnQpeHBkZC0+Z3JhbnRfZnJhbWVzOyBpKyspDQotICB7DQotICAgIHN0 cnVjdCB4ZW5fbWVtb3J5X3Jlc2VydmF0aW9uIHJlc2VydmF0aW9uOw0KLSAgICB4ZW5fcGZuX3Qg cGZuOw0KLSAgICBVTE9ORyByZXQ7DQotICAgIA0KLSAgICByZXNlcnZhdGlvbi5hZGRyZXNzX2Jp dHMgPSAwOw0KLSAgICByZXNlcnZhdGlvbi5leHRlbnRfb3JkZXIgPSAwOw0KLSAgICByZXNlcnZh dGlvbi5kb21pZCA9IERPTUlEX1NFTEY7DQotICAgIHJlc2VydmF0aW9uLm5yX2V4dGVudHMgPSAx Ow0KLSAgICAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEyNykgLyogY29uZGl0aW9uYWwgZXhw cmVzc2lvbiBpcyBjb25zdGFudCAqLw0KLSAgICBwZm4gPSAoeGVuX3Bmbl90KU1tR2V0TWRsUGZu QXJyYXkoeHBkZC0+Z250dGJsX21kbClbaV07DQotICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUg IiAgICAgcGZuID0gJXhcbiIsIChVTE9ORylwZm4pKTsNCi0gICAgc2V0X3hlbl9ndWVzdF9oYW5k bGUocmVzZXJ2YXRpb24uZXh0ZW50X3N0YXJ0LCAmcGZuKTsNCi0gICAgDQotICAgIEtkUHJpbnQo KF9fRFJJVkVSX05BTUUgIiAgICAgQ2FsbGluZyBIWVBFUlZJU09SX21lbW9yeV9vcCAtIHBmbiA9 ICV4XG4iLCAoVUxPTkcpcGZuKSk7DQotICAgIHJldCA9IEhZUEVSVklTT1JfbWVtb3J5X29wKHhw ZGQsIFhFTk1FTV9kZWNyZWFzZV9yZXNlcnZhdGlvbiwgJnJlc2VydmF0aW9uKTsNCi0gICAgS2RQ cmludCgoX19EUklWRVJfTkFNRSAiICAgICBkZWNyZWFzZWQgJWQgcGFnZXMgZm9yIGdyYW50IHRh YmxlIGZyYW1lICVkXG4iLCByZXQsIGkpKTsNCi0gIH0NCi0NCisgIA0KICAgbmV3X2dyYW50X2Zy YW1lcyA9IEdudFRibF9RdWVyeU1heEZyYW1lcyh4cGRkKTsNCiAgIEtkUHJpbnQoKF9fRFJJVkVS X05BTUUgIiAgICAgbmV3X2dyYW50X2ZyYW1lcyA9ICVkXG4iLCBuZXdfZ3JhbnRfZnJhbWVzKSk7 DQogICBBU1NFUlQobmV3X2dyYW50X2ZyYW1lcyA+PSB4cGRkLT5ncmFudF9mcmFtZXMpOyAvLyBs YXp5DQogICByZXN1bHQgPSBHbnRUYmxfTWFwKHhwZGQsIDAsIHhwZGQtPmdyYW50X2ZyYW1lcyAt IDEpOw0KICAgS2RQcmludCgoX19EUklWRVJfTkFNRSAiICAgICBHbnRUYmxfTWFwIHJlc3VsdCA9 ICVkXG4iLCByZXN1bHQpKTsNCi0gIG1lbWNweSh4cGRkLT5nbnR0YmxfdGFibGUsIHhwZGQtPmdu dHRibF90YWJsZV9jb3B5LCB4cGRkLT5ncmFudF9mcmFtZXMgKiBQQUdFX1NJWkUpOw0KLSAgI2lm IERCRw0KLSAgZ3JhbnRfZW50cmllcyA9IG1pbihOUl9HUkFOVF9FTlRSSUVTLCAoeHBkZC0+Z3Jh bnRfZnJhbWVzICogUEFHRV9TSVpFIC8gc2l6ZW9mKGdyYW50X2VudHJ5X3QpKSk7DQotICBtZW1j cHkoeHBkZC0+Z250dGJsX3RhZywgeHBkZC0+Z250dGJsX3RhZ19jb3B5LCBncmFudF9lbnRyaWVz ICogc2l6ZW9mKFVMT05HKSk7DQotICAjZW5kaWYNCi0NCi0gIC8qIHN3aXRjaCBiYWNrIGFuZCBw dXQgdGhlIGhpYmVyIGdyYW50cyBiYWNrIGFnYWluICovDQotICBpZiAoeHBkZC0+Z250dGJsX3Nz X2NvcHkpDQotICB7DQotICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgcmVzdG9yaW5n IGdyYW50IHJlZiBzdGFja1xuIikpOw0KLSAgICBzdGFja19kZWxldGUoeHBkZC0+Z250dGJsX3Nz LCBOVUxMLCBOVUxMKTsNCi0gICAgeHBkZC0+Z250dGJsX3NzID0geHBkZC0+Z250dGJsX3NzX2Nv cHk7DQotICAgIGZvciAoaSA9IDA7IGkgPCBISUJFUl9HUkVGX0NPVU5UOyBpKyspDQotICAgIHsN Ci0gICAgICBpZiAoeHBkZC0+aGliZXJfZ3JlZnNbaV0gPT0gSU5WQUxJRF9HUkFOVF9SRUYpDQot ICAgICAgICBicmVhazsNCi0gICAgICBHbnRUYmxfUHV0UmVmKHhwZGQsIHhwZGQtPmhpYmVyX2dy ZWZzW2ldLCAoVUxPTkcpJ0hJQlInKTsNCi0gICAgfQ0KLSAgICB4cGRkLT5nbnR0Ymxfc3NfY29w eSA9IE5VTEw7DQotICB9DQotICAgIA0KKyAgbWVtY3B5KHhwZGQtPmdudHRhYl90YWJsZSwgeHBk ZC0+Z250dGFiX3RhYmxlX2NvcHksIHhwZGQtPmdyYW50X2ZyYW1lcyAqIFBBR0VfU0laRSk7DQor ICANCiAgIEZVTkNUSU9OX0VYSVQoKTsNCiB9DQpkaWZmIC1ydU4gLi4vd2luLXB2ZHJpdmVycy5o Zy94ZW5wY2kvaHlwZXJjYWxsLmggeGVucGNpL2h5cGVyY2FsbC5oCi0tLSAuLi93aW4tcHZkcml2 ZXJzLmhnL3hlbnBjaS9oeXBlcmNhbGwuaAkyMDExLTAyLTI2IDIwOjQzOjEyLjAwMDAwMDAwMCAr MDgwMAorKysgeGVucGNpL2h5cGVyY2FsbC5oCTIwMTEtMDItMjYgMjA6NDQ6MzMuMDAwMDAwMDAw ICswODAwCkBAIC01NSw2ICs1NSw3IEBACiAgIGEuZG9taWQgPSBET01JRF9TRUxGOw0KICAgYS5p bmRleCA9IGh2bV9wYXJhbTsNCiAgIGEudmFsdWUgPSB2YWx1ZTsNCisgIC8vYS52YWx1ZSA9IHZp YTsNCiAgIHJldHZhbCA9IEhZUEVSVklTT1JfaHZtX29wKHhwZGQsIEhWTU9QX3NldF9wYXJhbSwg JmEpOw0KICAgS2RQcmludCgoX19EUklWRVJfTkFNRSAiIEhZUEVSVklTT1JfaHZtX29wIHJldHZh bCA9ICVkXG4iLCByZXR2YWwpKTsNCiAgIEZVTkNUSU9OX0VYSVQoKTsNCmRpZmYgLXJ1TiAuLi93 aW4tcHZkcml2ZXJzLmhnL3hlbnBjaS9tZW1vcnlpbmZvdGhyZWFkLmMgeGVucGNpL21lbW9yeWlu Zm90aHJlYWQuYwotLS0gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5wY2kvbWVtb3J5aW5mb3RocmVh ZC5jCTE5NzAtMDEtMDEgMDg6MDA6MDAuMDAwMDAwMDAwICswODAwCisrKyB4ZW5wY2kvbWVtb3J5 aW5mb3RocmVhZC5jCTIwMTEtMDItMjYgMjA6NDQ6MzMuMDAwMDAwMDAwICswODAwCkBAIC0wLDAg KzEsNDggQEAKKyNpbmNsdWRlICJ4ZW5wY2kuaCINCisjaW5jbHVkZSAieGVucG9kLmgiDQorI2lu Y2x1ZGUgInhlbnBjaV9zbGVlcC5oIg0KKyNpbmNsdWRlICJnZXRwaHlpbmZvLmgiDQorI2RlZmlu ZSBCQUxMT09OX01FTUlORk9fUEFUSCAgICAibWVtb3J5L21lbWluZm8iDQorDQorVk9JRCBQdk1l bW9yeUluZm9UaHJlYWRQcm9jKFBWT0lEIFN0YXJ0Q29udGV4dCkNCit7DQorICAgIFBYRU5QQ0lf REVWSUNFX0RBVEEgeHBkZCA9IFN0YXJ0Q29udGV4dDsNCisgICAgTUVNT1JZU1RBVFVTIG9sZExw QnVmZmVyLGxwQnVmZmVyOw0KKyAgICBVTE9ORyBjaGFuZ2VkICxmaXJzdDsNCisgICAgRFdPUkQg c3RhdHVzOw0KKyAgICBGVU5DVElPTl9FTlRFUigpOw0KKyAgICBmaXJzdCA9IDE7DQorICAgIG9s ZExwQnVmZmVyLk1lbUN1cj0wOw0KKyAgICBvbGRMcEJ1ZmZlci5NZW1GcmVlPTA7DQorICAgIG9s ZExwQnVmZmVyLkNvbW1pdHRlZF9BUz0wOw0KKw0KKyAgICBmb3IgKDs7KQ0KKyAgICB7ICAgIA0K KyAgICAgICBzdGF0dXMgPSBQdkdsb2JhbE1lbW9yeVN0YXR1cygmbHBCdWZmZXIpOw0KKw0KKyAg ICAgICAvKmlmIGVycm9yLCB3cml0ZSBzdGF0dXMgdG8geGVuc3RvcmUgZm9yIGRlYnVnKi8NCisg ICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpew0KKyAgICAgICAgICAgWGVuQnVzX1ByaW50 Zih4cGRkLCBYQlRfTklMLCBCQUxMT09OX01FTUlORk9fUEFUSCwNCisgICAgICAgICAgICAgICAg IkVycm9yOjB4JXgiLCBzdGF0dXMpOw0KKyAgICAgICAgICAgY29udGludWU7DQorICAgICAgIH0N CisNCisgICAgICAgbHBCdWZmZXIuTWVtQ3VyID0geHBkZC0+Y3VycmVudF9tZW1vcnkgPDwgMTA7 DQorICAgICAgIGNoYW5nZWQgPSANCisgICAgICAgICAgICBmaXJzdHwNCisgICAgICAgICAgICBD SEFOR0VEKGxwQnVmZmVyLk1lbUN1ciwgb2xkTHBCdWZmZXIuTWVtQ3VyKXwNCisgICAgICAgICAg ICBDSEFOR0VEKGxwQnVmZmVyLk1lbUZyZWUsIG9sZExwQnVmZmVyLk1lbUZyZWUpfA0KKyAgICAg ICAgICAgIENIQU5HRUQobHBCdWZmZXIuQ29tbWl0dGVkX0FTLCBvbGRMcEJ1ZmZlci5Db21taXR0 ZWRfQVMpOw0KKw0KKyAgICAgICBpZihjaGFuZ2VkKXsNCisgICAgICAgICAgIFhlbkJ1c19Qcmlu dGYoeHBkZCwgWEJUX05JTCwgQkFMTE9PTl9NRU1JTkZPX1BBVEgsDQorICAgICAgICAgICAgICAg ICJDdXJyZW50OiV1LEZyZWU6JXUsQ29tbWl0OiV1IiwNCisgICAgICAgICAgICAgICAgbHBCdWZm ZXIuTWVtQ3VyLCBscEJ1ZmZlci5NZW1GcmVlLCBscEJ1ZmZlci5Db21taXR0ZWRfQVMpOw0KKyAg ICAgICAgICAgICAgICBvbGRMcEJ1ZmZlciA9IGxwQnVmZmVyOw0KKyAgICAgICAgfQ0KKw0KKyAg ICAgICAgZmlyc3QgPSAwOw0KKyAgICAgICAgUHZXYWl0TWljcm9TZWNvbmQoMTAwMCAqIDEwMDAp Oy8qIDEgc2Vjb25kKi8NCisgICAgfQ0KKyAgICAvL0ZVTkNUSU9OX0VYSVQoKTsNCit9DQpkaWZm IC1ydU4gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5wY2kvcHYuZGlmZiB4ZW5wY2kvcHYuZGlmZgot LS0gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5wY2kvcHYuZGlmZgkxOTcwLTAxLTAxIDA4OjAwOjAw LjAwMDAwMDAwMCArMDgwMAorKysgeGVucGNpL3B2LmRpZmYJMjAxMS0wMi0yNiAyMDo0NTo1NC4w MDAwMDAwMDAgKzA4MDAKQEAgLTAsMCArMSwyNTggQEAKK2RpZmYgLXIgYjYzZjY5YmY5Y2Y1IHhl bnBjaS9zb3VyY2VzCistLS0gYS94ZW5wY2kvc291cmNlcwlTYXQgT2N0IDE2IDIzOjI1OjMyIDIw MTAgKzExMDAKKysrKyBiL3hlbnBjaS9zb3VyY2VzCVNhdCBGZWIgMjYgMjA6NDU6NTQgMjAxMSAr MDgwMAorQEAgLTE5LDQgKzE5LDQgQEAKKyBTT1VSQ0VTPXhlbnBjaS5yYyB4ZW5wY2kuYyB4ZW5w Y2lfZmRvLmMgeGVucGNpX3Bkby5jIGV2dGNobi5jIFwNCisgICAgICAgICBnbnR0YmwuYyB4ZW5i dXMuYyBtZW1vcnkuYyB4ZW5wY2lfZGV2aWNlX2ludGVyZmFjZS5jIFwNCisgICAgICAgICB4ZW5i dXNfZGV2aWNlX2ludGVyZmFjZS5jIHhlbnBjaV9oaWdoc3luYy5jIHhlbnBjaV9wYXRjaF9rZXJu ZWwuYyBcDQorLSAgICAgICAgeGVucGNpX2RiZ3ByaW50LmMNCisrICAgICAgICB4ZW5wY2lfZGJn cHJpbnQuYyBnZXRwaHlpbmZvLmMgeGVucGNpX3NsZWVwLmMgbWVtb3J5aW5mb3RocmVhZC5jDQor ZGlmZiAtciBiNjNmNjliZjljZjUgeGVucGNpL3hlbnBjaS5oCistLS0gYS94ZW5wY2kveGVucGNp LmgJU2F0IE9jdCAxNiAyMzoyNTozMiAyMDEwICsxMTAwCisrKysgYi94ZW5wY2kveGVucGNpLmgJ U2F0IEZlYiAyNiAyMDo0NTo1NCAyMDExICswODAwCitAQCAtMTcxLDYgKzE3MSwxMiBAQAorICAg c3RydWN0IHhlbnN0b3JlX2RvbWFpbl9pbnRlcmZhY2UgKnhlbl9zdG9yZV9pbnRlcmZhY2U7DQor IA0KKyAjZGVmaW5lIEJBTExPT05fVU5JVFMgKDEwMjQgKiAxMDI0KSAvKiAxTUIgKi8NCisrDQor KyAgLyptZW1pbmZvIHRocmVhZCovDQorKyAgUEtUSFJFQUQgbWVtb3J5X3RocmVhZDsNCisrICBL RVZFTlQgbWVtb3J5X2V2ZW50Ow0KKysNCisrICBCT09MRUFOIG1lbW9yeV9zaHV0ZG93bjsNCisg ICBQS1RIUkVBRCBiYWxsb29uX3RocmVhZDsNCisgICBLRVZFTlQgYmFsbG9vbl9ldmVudDsNCisg ICBCT09MRUFOIGJhbGxvb25fc2h1dGRvd247DQorZGlmZiAtciBiNjNmNjliZjljZjUgeGVucGNp L3hlbnBjaV9mZG8uYworLS0tIGEveGVucGNpL3hlbnBjaV9mZG8uYwlTYXQgT2N0IDE2IDIzOjI1 OjMyIDIwMTAgKzExMDAKKysrKyBiL3hlbnBjaS94ZW5wY2lfZmRvLmMJU2F0IEZlYiAyNiAyMDo0 NTo1NCAyMDExICswODAwCitAQCAtMSw0ICsxLDQgQEAKKy0vKg0KKysgLyoNCisgUFYgRHJpdmVy cyBmb3IgV2luZG93cyBYZW4gSFZNIERvbWFpbnMNCisgQ29weXJpZ2h0IChDKSAyMDA3IEphbWVz IEhhcnBlcg0KKyANCitAQCAtMjAsMTAgKzIwLDE0IEBACisgI2luY2x1ZGUgInhlbnBjaS5oIg0K KyAjaW5jbHVkZSA8c3RkbGliLmg+DQorICNpbmNsdWRlIDxhdXhfa2xpYi5oPg0KKysjaW5jbHVk ZSAiZ2V0cGh5aW5mby5oIg0KKysjaW5jbHVkZSAieGVucG9kLmgiDQorKyNpbmNsdWRlICJ4ZW5w Y2lfc2xlZXAuaCINCisgDQorICNkZWZpbmUgU1lTUlFfUEFUSCAiY29udHJvbC9zeXNycSINCisg I2RlZmluZSBTSFVURE9XTl9QQVRIICJjb250cm9sL3NodXRkb3duIg0KKy0jZGVmaW5lIEJBTExP T05fUEFUSCAibWVtb3J5L3RhcmdldCINCisrI2RlZmluZSBCQUxMT09OX1RBUkdFVF9QQVRIICJt ZW1vcnkvdGFyZ2V0Ig0KKysjZGVmaW5lIEJBTExPT05fV09SS1RJTUVfUEFUSCAibWVtb3J5L3dv cmt0aW1lIg0KKyANCisgLyogTm90IHJlYWxseSBuZWNlc3NhcnkgYnV0IGtlZXBzIFBSRWZhc3Qg aGFwcHkgKi8NCisgc3RhdGljIEVWVF9XREZfV09SS0lURU0gWGVuUGNpX1N1c3BlbmRSZXN1bWU7 DQorQEAgLTMxLDYgKzM1LDggQEAKKyBzdGF0aWMgS1NUQVJUX1JPVVRJTkUgWGVuUGNpX0JhbGxv b25UaHJlYWRQcm9jOw0KKyAjZW5kaWYNCisgDQorK2V4dGVybiBLU1RBUlRfUk9VVElORSBQdk1l bW9yeUluZm9UaHJlYWRQcm9jOw0KKysNCisgc3RhdGljIFZPSUQNCisgWGVuUGNpX01hcEhhbFRo ZW5QYXRjaEtlcm5lbChQWEVOUENJX0RFVklDRV9EQVRBIHhwZGQpDQorIHsNCitAQCAtMjM4LDYg KzI0NCwxMSBAQAorICAgVUxPTkcgcmV0Ow0KKyAgIGludCBwZm5fY291bnQ7DQorICAgDQorKyNp ZmRlZiAgQkFMTE9PTl9QQVRIX1dPUktfVElNRQ0KKysgIFVMT05HICB3b3JrYmVnaW50aW1lOw0K KysgIFVMT05HICB3b3JrZW5kdGltZTsNCisrI2VuZGlmDQorKyAgDQorICAgRlVOQ1RJT05fRU5U RVIoKTsNCisgDQorICAgZm9yKDs7KQ0KK0BAIC0yNjcsNiArMjc4LDExIEBACisgICAgICAgS2RQ cmludCgoX19EUklWRVJfTkFNRSAiICAgICBObyBjaGFuZ2UgdG8gbWVtb3J5XG4iKSk7DQorICAg ICAgIGNvbnRpbnVlOw0KKyAgICAgfQ0KKysgICAgDQorKyNpZmRlZiAgQkFMTE9PTl9QQVRIX1dP UktfVElNRSAgICAgIA0KKysgICAgUHZHZXRUaWNrQ291bnQoJndvcmtiZWdpbnRpbWUpOw0KKysj ZW5kaWYgICAgICANCisrDQorICAgICBlbHNlIGlmICh4cGRkLT5jdXJyZW50X21lbW9yeSA8IG5l d190YXJnZXQpDQorICAgICB7DQorICAgICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAg VHJ5aW5nIHRvIHRha2UgJWQgTUIgZnJvbSBYZW5cbiIsIG5ld190YXJnZXQgLSB4cGRkLT5jdXJy ZW50X21lbW9yeSkpOw0KK0BAIC0yNzcsNiArMjkzLDEyIEBACisgICAgICAgICANCisgICAgICAg ICBwZm5fY291bnQgPSBBRERSRVNTX0FORF9TSVpFX1RPX1NQQU5fUEFHRVMoTW1HZXRNZGxWaXJ0 dWFsQWRkcmVzcyhtZGwpLCBNbUdldE1kbEJ5dGVDb3VudChtZGwpKTsNCisgICAgICAgICBwZm5z ID0gRXhBbGxvY2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgcGZuX2NvdW50ICogc2l6ZW9m KHhlbl9wZm5fdCksIFhFTlBDSV9QT09MX1RBRyk7DQorKyAgICAgICAgaWYocGZucyA9PSBOVUxM KXsNCisrICAgICAgICAgICAgbWRsLT5OZXh0ID0gaGVhZDsNCisrICAgICAgICAgICAgaGVhZCA9 IG1kbDsNCisrICAgICAgICAgICAgYnJlYWs7DQorKyAgICAgICAgfQ0KKysNCisgICAgICAgICAv KiBzaXplb2YoeGVuX3Bmbl90KSBtYXkgbm90IGJlIHRoZSBzYW1lIGFzIFBQRk5fTlVNQkVSICov DQorICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBmbl9jb3VudDsgaSsrKQ0KKyAgICAgICAgICAg cGZuc1tpXSA9ICh4ZW5fcGZuX3QpKE1tR2V0TWRsUGZuQXJyYXkobWRsKVtpXSk7DQorQEAgLTI4 OSwxMCArMzExLDI0IEBACisgICAgICAgICANCisgICAgICAgICBLZFByaW50KChfX0RSSVZFUl9O QU1FICIgICAgIENhbGxpbmcgSFlQRVJWSVNPUl9tZW1vcnlfb3AoWEVOTUVNX3BvcHVsYXRlX3Bo eXNtYXApIC0gcGZuX2NvdW50ID0gJWRcbiIsIHBmbl9jb3VudCkpOw0KKyAgICAgICAgIHJldCA9 IEhZUEVSVklTT1JfbWVtb3J5X29wKHhwZGQsIFhFTk1FTV9wb3B1bGF0ZV9waHlzbWFwLCAmcmVz ZXJ2YXRpb24pOw0KKy0gICAgICAgIEV4RnJlZVBvb2xXaXRoVGFnKHBmbnMsIFhFTlBDSV9QT09M X1RBRyk7DQorKyAgICAgICAgDQorICAgICAgICAgS2RQcmludCgoX19EUklWRVJfTkFNRSAiICAg ICBwb3B1bGF0ZWQgJWQgcGFnZXNcbiIsIHJldCkpOw0KKyAgICAgICAgIC8qIFRPRE86IHdoYXQg ZG8gd2UgZG8gaWYgbGVzcyB0aGFuIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgcGFnZXMgd2VyZSBw b3B1bGF0ZWQ/Pz8gY2FuIHRoaXMgaGFwcGVuPz8/ICovDQorKyAgICAgICAgLyogZml4ZWQhICov DQorKyAgICAgICAgaWYocmV0IDwgKFVMT05HKXBmbl9jb3VudCl7DQorKyAgICAgICAgICAgIGlm KHJldCA+IDApew0KKysgICAgICAgICAgICAgICAgLyogV2UgaGl0IHRoZSBYZW4gaGFyZCBsaW1p dDogcmVwcm9iZS4gKi8NCisrICAgICAgICAgICAgICAgIHJlc2VydmF0aW9uLm5yX2V4dGVudHMg PSByZXQ7DQorKyAgICAgICAgICAgICAgICByZXQgPSBIWVBFUlZJU09SX21lbW9yeV9vcCh4cGRk LCBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2YXRpb24sICZyZXNlcnZhdGlvbik7DQorKyAgICAgICAg ICAgICAgICBLZFByaW50KChfX0RSSVZFUl9OQU1FICIgICAgIGRlY3JlYXNlZCAlZCBwYWdlc1xu IiwgcmV0KSk7DQorKyAgICAgICAgICAgIH0NCisrICAgICAgICAgICAgbWRsLT5OZXh0ID0gaGVh ZDsNCisrICAgICAgICAgICAgaGVhZCA9IG1kbDsNCisrICAgICAgICAgICAgRXhGcmVlUG9vbFdp dGhUYWcocGZucywgWEVOUENJX1BPT0xfVEFHKTsNCisrICAgICAgICAgICAgYnJlYWs7DQorKyAg ICAgICAgfQ0KKyAgICAgICAgIA0KKysgICAgICAgIEV4RnJlZVBvb2xXaXRoVGFnKHBmbnMsIFhF TlBDSV9QT09MX1RBRyk7DQorICAgICAgICAgTW1GcmVlUGFnZXNGcm9tTWRsKG1kbCk7DQorICAg ICAgICAgRXhGcmVlUG9vbChtZGwpOw0KKyAgICAgICAgIHhwZGQtPmN1cnJlbnRfbWVtb3J5Kys7 DQorQEAgLTMzNCw2ICszNzAsMTIgQEAKKyAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAg IH0NCisgICAgICAgICAgIHBmbnMgPSBFeEFsbG9jYXRlUG9vbFdpdGhUYWcoTm9uUGFnZWRQb29s LCBwZm5fY291bnQgKiBzaXplb2YoeGVuX3Bmbl90KSwgWEVOUENJX1BPT0xfVEFHKTsNCisrICAg ICAgICAgIGlmKHBmbnMgPT0gTlVMTCl7DQorKyAgICAgICAgICAgIE1tRnJlZVBhZ2VzRnJvbU1k bChtZGwpOw0KKysgICAgICAgICAgICBFeEZyZWVQb29sKG1kbCk7DQorKyAgICAgICAgICAgIGJy ZWFrOw0KKysgICAgICAgICAgfQ0KKysNCisgICAgICAgICAgIC8qIHNpemVvZih4ZW5fcGZuX3Qp IG1heSBub3QgYmUgdGhlIHNhbWUgYXMgUFBGTl9OVU1CRVIgKi8NCisgICAgICAgICAgIGZvciAo aSA9IDA7IGkgPCBwZm5fY291bnQ7IGkrKykNCisgICAgICAgICAgICAgcGZuc1tpXSA9ICh4ZW5f cGZuX3QpKE1tR2V0TWRsUGZuQXJyYXkobWRsKVtpXSk7DQorQEAgLTM2MSw2ICs0MDMsMTEgQEAK KyAgICAgICAgIH0NCisgICAgICAgfQ0KKyAgICAgfQ0KKysjaWZkZWYgIEJBTExPT05fUEFUSF9X T1JLX1RJTUUgIA0KKysgICAgUHZHZXRUaWNrQ291bnQoJndvcmtlbmR0aW1lKTsNCisrICAgIFhl bkJ1c19QcmludGYoeHBkZCwgWEJUX05JTCwgQkFMTE9PTl9QQVRIX1dPUktfVElNRSwgIiV1Iiwg d29ya2VuZHRpbWUgLSB3b3JrYmVnaW50aW1lKTsgIA0KKysjZW5kaWYNCisrDQorICAgfQ0KKyAg IC8vRlVOQ1RJT05fRVhJVCgpOw0KKyB9DQorQEAgLTM4MCw3ICs0MjcsNyBAQAorIA0KKyAgIFhl bkJ1c19TdGFydFRyYW5zYWN0aW9uKHhwZGQsICZ4YnQpOw0KKyANCistICBYZW5CdXNfUmVhZCh4 cGRkLCBYQlRfTklMLCBCQUxMT09OX1BBVEgsICZ2YWx1ZSk7DQorKyAgWGVuQnVzX1JlYWQoeHBk ZCwgWEJUX05JTCwgQkFMTE9PTl9UQVJHRVRfUEFUSCwgJnZhbHVlKTsNCisgICANCisgICBpZiAo dmFsdWUgPT0gTlVMTCkNCisgICB7DQorQEAgLTQwNCw2ICs0NTEsNyBAQAorICAgRlVOQ1RJT05f RVhJVCgpOw0KKyB9DQorIA0KKysNCisgc3RhdGljIFZPSUQNCisgWGVuUGNpX1N1c3BlbmQwKFBW T0lEIGNvbnRleHQpDQorIHsNCitAQCAtNjQ2LDkgKzY5NCw5IEBACisgICAgICAgeHBkZC0+cGxh dGZvcm1fbW1pb19mbGFncyA9IHRyYW5zbGF0ZWRfZGVzY3JpcHRvci0+RmxhZ3M7DQorICAgICAg IGJyZWFrOw0KKyAgICAgY2FzZSBDbVJlc291cmNlVHlwZUludGVycnVwdDoNCistCSAgICB4cGRk LT5pcnFfbGV2ZWwgPSAoS0lSUUwpdHJhbnNsYXRlZF9kZXNjcmlwdG9yLT51LkludGVycnVwdC5M ZXZlbDsNCistICAJICB4cGRkLT5pcnFfdmVjdG9yID0gdHJhbnNsYXRlZF9kZXNjcmlwdG9yLT51 LkludGVycnVwdC5WZWN0b3I7DQorLQkgICAgeHBkZC0+aXJxX2FmZmluaXR5ID0gdHJhbnNsYXRl ZF9kZXNjcmlwdG9yLT51LkludGVycnVwdC5BZmZpbml0eTsNCisrICAgICAgeHBkZC0+aXJxX2xl dmVsID0gKEtJUlFMKXRyYW5zbGF0ZWRfZGVzY3JpcHRvci0+dS5JbnRlcnJ1cHQuTGV2ZWw7DQor KyAgICAgIHhwZGQtPmlycV92ZWN0b3IgPSB0cmFuc2xhdGVkX2Rlc2NyaXB0b3ItPnUuSW50ZXJy dXB0LlZlY3RvcjsNCisrICAgICAgeHBkZC0+aXJxX2FmZmluaXR5ID0gdHJhbnNsYXRlZF9kZXNj cmlwdG9yLT51LkludGVycnVwdC5BZmZpbml0eTsNCisgICAgICAgeHBkZC0+aXJxX21vZGUgPSAo dHJhbnNsYXRlZF9kZXNjcmlwdG9yLT5GbGFncyAmIENNX1JFU09VUkNFX0lOVEVSUlVQVF9MQVRD SEVEKT9MYXRjaGVkOkxldmVsU2Vuc2l0aXZlOw0KKyAgICAgICB4cGRkLT5pcnFfbnVtYmVyID0g cmF3X2Rlc2NyaXB0b3ItPnUuSW50ZXJydXB0LlZlY3RvcjsgICAgICANCisgICAgICAgS2RQcmlu dCgoX19EUklWRVJfTkFNRSAiICAgICBpcnFfbnVtYmVyID0gJTAzeFxuIiwgcmF3X2Rlc2NyaXB0 b3ItPnUuSW50ZXJydXB0LlZlY3RvcikpOw0KK0BAIC03NzcsMTIgKzgyNSwxNSBAQAorICAgTlRT VEFUVVMgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7DQorICAgUFhFTlBDSV9ERVZJQ0VfREFUQSB4 cGRkID0gR2V0WHBkZChkZXZpY2UpOw0KKyAgIFBDSEFSIHJlc3BvbnNlOw0KKy0gIGNoYXIgKnZh bHVlOw0KKyAgIGRvbWlkX3QgZG9taWQgPSBET01JRF9TRUxGOw0KKyAgIFVMT05HIHJldDsNCisr ICBVTE9ORyB0b3RhbHJhbV9iaWFzOw0KKyAgIHhlbl91bG9uZ190ICptYXhfcmFtX3BhZ2U7DQor ICAgSEFORExFIHRocmVhZF9oYW5kbGU7DQorLQ0KKysgIEhBTkRMRSBtZW1vcnlfaW5mb190aHJl YWRfaGFuZGxlOw0KKysgIFhFTl9QT0RfVEFSR0VUX1QgcG9kX3RhcmdldDsNCisrICBwb2RfdGFy Z2V0LmRvbWlkID0gRE9NSURfU0VMRjsNCisrICANCisgICBVTlJFRkVSRU5DRURfUEFSQU1FVEVS KHByZXZpb3VzX3N0YXRlKTsNCisgDQorICAgRlVOQ1RJT05fRU5URVIoKTsNCitAQCAtODA4LDE0 ICs4NTksMjEgQEAKKyANCisgICAgIGlmICgheHBkZC0+aW5pdGlhbF9tZW1vcnkpDQorICAgICB7 DQorLSAgICAgIFhlbkJ1c19SZWFkKHhwZGQsIFhCVF9OSUwsIEJBTExPT05fUEFUSCwgJnZhbHVl KTsNCistICAgICAgaWYgKGF0b2kodmFsdWUpID4gMCkNCistICAgICAgew0KKy0gICAgICAgIHhw ZGQtPmluaXRpYWxfbWVtb3J5ID0gYXRvaSh2YWx1ZSkgPj4gMTA7IC8qIGNvbnZlcnQgdG8gTUIg Ki8NCistICAgICAgICB4cGRkLT5jdXJyZW50X21lbW9yeSA9IHhwZGQtPmluaXRpYWxfbWVtb3J5 Ow0KKy0gICAgICAgIHhwZGQtPnRhcmdldF9tZW1vcnkgPSB4cGRkLT5pbml0aWFsX21lbW9yeTsN CisrICAgICAgTUVNT1JZU1RBVFVTIGxwQnVmZmVyOw0KKysgICAgICBQdkdsb2JhbE1lbW9yeVN0 YXR1cygmbHBCdWZmZXIpOw0KKysgICAgICB4cGRkLT5pbml0aWFsX21lbW9yeSA9IChVTE9ORyko bHBCdWZmZXIudG90YWxQaHlzID4+IDEwKTsgLypjb252ZXJ0IHRvIE1CKi8NCisrICAgICAgeHBk ZC0+Y3VycmVudF9tZW1vcnkgPSB4cGRkLT5pbml0aWFsX21lbW9yeTsNCisrDQorKw0KKysgICAg ICByZXQgPSBIWVBFUlZJU09SX21lbW9yeV9vcCh4cGRkLCBYRU5NRU1fZ2V0X3BvZF90YXJnZXQs ICZwb2RfdGFyZ2V0KTsNCisrDQorKyAgICAgIHRvdGFscmFtX2JpYXMgPSBIWVBFUlZJU09SX21l bW9yeV9vcCh4cGRkLCByZXQgIT0gLUVOT1NZUyAmJiByZXQgIT0gMQ0KKysgICAgICAgICAgICAg ID8gWEVOTUVNX21heGltdW1fcmVzZXJ2YXRpb24gOiBYRU5NRU1fY3VycmVudF9yZXNlcnZhdGlv biwNCisrICAgICAgICAgICAgICAmcG9kX3RhcmdldC5kb21pZCk7DQorKyAgICAgIGlmICgoVUxP TkcpdG90YWxyYW1fYmlhcyAhPSAtRU5PU1lTKSB7DQorKyAgICAgICAgICAgICAgeHBkZC0+aW5p dGlhbF9tZW1vcnkgPSB0b3RhbHJhbV9iaWFzID4+ICgyMCAtIFBBR0VfU0hJRlQpOw0KKysgICAg ICAgICAgICAgIHhwZGQtPmN1cnJlbnRfbWVtb3J5ID0geHBkZC0+aW5pdGlhbF9tZW1vcnkgKyAx OyAvKmxhc2UgbGluZSBjb252ZXJ0IHRvIE1CIG1heSBsb3N0IHNvbWUgS0IsIGp1c3QgYWRkIDFN Ki8NCisgICAgICAgfQ0KKy0gICAgICBLZFByaW50KChfX0RSSVZFUl9OQU1FICIgICAgIEluaXRp YWwgTWVtb3J5IFZhbHVlID0gJWQgKCVzKVxuIiwgeHBkZC0+aW5pdGlhbF9tZW1vcnksIHZhbHVl KSk7DQorICAgICAgIEtlSW5pdGlhbGl6ZUV2ZW50KCZ4cGRkLT5iYWxsb29uX2V2ZW50LCBTeW5j aHJvbml6YXRpb25FdmVudCwgRkFMU0UpOw0KKyAgICAgICB4cGRkLT5iYWxsb29uX3NodXRkb3du ID0gRkFMU0U7DQorICAgICAgIHN0YXR1cyA9IFBzQ3JlYXRlU3lzdGVtVGhyZWFkKCZ0aHJlYWRf aGFuZGxlLCBUSFJFQURfQUxMX0FDQ0VTUywgTlVMTCwgTlVMTCwgTlVMTCwgWGVuUGNpX0JhbGxv b25UaHJlYWRQcm9jLCB4cGRkKTsNCitAQCAtODI2LDggKzg4NCwxOCBAQAorICAgICAgIH0NCisg ICAgICAgc3RhdHVzID0gT2JSZWZlcmVuY2VPYmplY3RCeUhhbmRsZSh0aHJlYWRfaGFuZGxlLCBU SFJFQURfQUxMX0FDQ0VTUywgTlVMTCwgS2VybmVsTW9kZSwgJnhwZGQtPmJhbGxvb25fdGhyZWFk LCBOVUxMKTsNCisgICAgICAgWndDbG9zZSh0aHJlYWRfaGFuZGxlKTsNCisrICAgICAgDQorKyAg ICAgIC8qICBzdGFydCBwY2kgbWVtaW5mbyB0aHJlYWQgKi8NCisrICAgICAgc3RhdHVzID0gUHND cmVhdGVTeXN0ZW1UaHJlYWQoJm1lbW9yeV9pbmZvX3RocmVhZF9oYW5kbGUsIFRIUkVBRF9BTExf QUNDRVNTLCBOVUxMLCBOVUxMLCBOVUxMLCBQdk1lbW9yeUluZm9UaHJlYWRQcm9jLCB4cGRkKTsN CisrICAgICAgaWYgKCFOVF9TVUNDRVNTKHN0YXR1cykpDQorKyAgICAgIHsNCisrICAgICAgICBL ZFByaW50KChfX0RSSVZFUl9OQU1FICIgICAgIENvdWxkIG5vdCBzdGFydCBtZW1vcnkgdGhyZWFk XG4iKSk7DQorKyAgICAgICAgcmV0dXJuIHN0YXR1czsNCisrICAgICAgfQ0KKysgICAgICBzdGF0 dXMgPSBPYlJlZmVyZW5jZU9iamVjdEJ5SGFuZGxlKG1lbW9yeV9pbmZvX3RocmVhZF9oYW5kbGUs IFRIUkVBRF9BTExfQUNDRVNTLCBOVUxMLCBLZXJuZWxNb2RlLCAmeHBkZC0+bWVtb3J5X3RocmVh ZCwgTlVMTCk7DQorKyAgICAgIFp3Q2xvc2UobWVtb3J5X2luZm9fdGhyZWFkX2hhbmRsZSk7IA0K KyAgICAgfQ0KKy0gICAgcmVzcG9uc2UgPSBYZW5CdXNfQWRkV2F0Y2goeHBkZCwgWEJUX05JTCwg QkFMTE9PTl9QQVRILCBYZW5QY2lfQmFsbG9vbkhhbmRsZXIsIGRldmljZSk7DQorKyAgICByZXNw b25zZSA9IFhlbkJ1c19BZGRXYXRjaCh4cGRkLCBYQlRfTklMLCBCQUxMT09OX1RBUkdFVF9QQVRI LCBYZW5QY2lfQmFsbG9vbkhhbmRsZXIsIGRldmljZSk7DQorICAgfQ0KKyAgIGVsc2UNCisgICB7 DQorZGlmZiAtciBiNjNmNjliZjljZjUgeGVucGNpL3hlbnBjaV9wZG8uYworLS0tIGEveGVucGNp L3hlbnBjaV9wZG8uYwlTYXQgT2N0IDE2IDIzOjI1OjMyIDIwMTAgKzExMDAKKysrKyBiL3hlbnBj aS94ZW5wY2lfcGRvLmMJU2F0IEZlYiAyNiAyMDo0NTo1NCAyMDExICswODAwCitAQCAtNTAyLDcg KzUwMiw5IEBACisgICAgIHsNCisgICAgICAgLyogaXQncyBwb3NzaWJsZSB0aGF0IHRoZSB3b3Jr aXRlbXMgYXJlIGJsb2NrZWQgYmVjYXVzZSB0aGUgcGFnZWZpbGUgaXNuJ3QgYXZhaWxhYmxlLiBM ZXRzIGp1c3QgcmUtcmVhZCB0aGUgYmFja2VuZCB2YWx1ZSBmb3Igbm93ICovDQorICAgICAgIFhl blBjaV9VcGRhdGVCYWNrZW5kU3RhdGUoZGV2aWNlKTsNCistICAgICAgcmVtYWluaW5nIC09IHRo aXN3YWl0Ow0KKysgICAgICANCisrICAgICAgLy8gdGhpcyBjb2RlIGlzIGNvbW1lbnRlZCBiZWNh dXNlIGl0IGNhbiBjYXVzZSB0aGUgVk0gd2FpdHRpbmcgZm9yZXZlciANCisrICAgICAgLy9yZW1h aW5pbmcgLT0gdGhpc3dhaXQ7DQorICAgICAgIGlmIChyZW1haW5pbmcgPT0gMCkNCisgICAgICAg ew0KKyAgICAgICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgVGltZWQgb3V0IHdhaXRp bmcgZm9yICVkIVxuIiwgYmFja2VuZF9zdGF0ZV9yZXNwb25zZSkpOw0KZGlmZiAtcnVOIC4uL3dp bi1wdmRyaXZlcnMuaGcveGVucGNpL3NvdXJjZXMgeGVucGNpL3NvdXJjZXMKLS0tIC4uL3dpbi1w dmRyaXZlcnMuaGcveGVucGNpL3NvdXJjZXMJMjAxMS0wMi0yNiAyMDo0MzoxMi4wMDAwMDAwMDAg KzA4MDAKKysrIHhlbnBjaS9zb3VyY2VzCTIwMTEtMDItMjYgMjA6NDQ6MzMuMDAwMDAwMDAwICsw ODAwCkBAIC0xOSw0ICsxOSw0IEBACiBTT1VSQ0VTPXhlbnBjaS5yYyB4ZW5wY2kuYyB4ZW5wY2lf ZmRvLmMgeGVucGNpX3Bkby5jIGV2dGNobi5jIFwNCiAgICAgICAgIGdudHRibC5jIHhlbmJ1cy5j IG1lbW9yeS5jIHhlbnBjaV9kZXZpY2VfaW50ZXJmYWNlLmMgXA0KICAgICAgICAgeGVuYnVzX2Rl dmljZV9pbnRlcmZhY2UuYyB4ZW5wY2lfaGlnaHN5bmMuYyB4ZW5wY2lfcGF0Y2hfa2VybmVsLmMg XA0KLSAgICAgICAgeGVucGNpX2RiZ3ByaW50LmMNCisgICAgICAgIHhlbnBjaV9kYmdwcmludC5j IGdldHBoeWluZm8uYyB4ZW5wY2lfc2xlZXAuYyBtZW1vcnlpbmZvdGhyZWFkLmMNCmRpZmYgLXJ1 TiAuLi93aW4tcHZkcml2ZXJzLmhnL3hlbnBjaS94ZW5idXMuYyB4ZW5wY2kveGVuYnVzLmMKLS0t IC4uL3dpbi1wdmRyaXZlcnMuaGcveGVucGNpL3hlbmJ1cy5jCTIwMTEtMDItMjYgMjA6NDM6MTIu MDAwMDAwMDAwICswODAwCisrKyB4ZW5wY2kveGVuYnVzLmMJMjAxMS0wMi0yNiAyMDo0NDozMy4w MDAwMDAwMDAgKzA4MDAKQEAgLTI3NSwyMyArMjc1LDIxIEBACiAgIFdERl9XT1JLSVRFTV9DT05G SUcgd29ya2l0ZW1fY29uZmlnOw0KICAgV0RGX09CSkVDVF9BVFRSSUJVVEVTIHdvcmtpdGVtX2F0 dHJpYnV0ZXM7DQogICBXREZXT1JLSVRFTSB3b3JraXRlbTsNCi0gIFVMT05HIHJzcF9wcm9kOw0K IA0KICAgLy9GVU5DVElPTl9FTlRFUigpOw0KICAgDQogICBLZUFjcXVpcmVTcGluTG9ja0F0RHBj TGV2ZWwoJnhwZGQtPnhiX3Jpbmdfc3BpbmxvY2spOw0KIA0KLSAgLyogc25hcHNob3QgcnNwX3By b2Qgc28gaXQgZG9lc24ndCBjaGFuZ2Ugd2hpbGUgd2UgYXJlIGxvb2tpbmcgYXQgaXQgKi8NCi0g IHdoaWxlICgocnNwX3Byb2QgPSB4cGRkLT54ZW5fc3RvcmVfaW50ZXJmYWNlLT5yc3BfcHJvZCkg IT0geHBkZC0+eGVuX3N0b3JlX2ludGVyZmFjZS0+cnNwX2NvbnMpDQorICB3aGlsZSAoeHBkZC0+ eGVuX3N0b3JlX2ludGVyZmFjZS0+cnNwX3Byb2QgIT0geHBkZC0+eGVuX3N0b3JlX2ludGVyZmFj ZS0+cnNwX2NvbnMpDQogICB7DQotICAgIEtlTWVtb3J5QmFycmllcigpOyAvKiBtYWtlIHN1cmUg dGhlIGRhdGEgaW4gdGhlIHJpbmcgaXMgdmFsaWQgKi8NCiAgICAgaWYgKCF4cGRkLT54Yl9tc2cp DQogICAgIHsNCi0gICAgICBpZiAocnNwX3Byb2QgLSB4cGRkLT54ZW5fc3RvcmVfaW50ZXJmYWNl LT5yc3BfY29ucyA8IHNpemVvZih4c2Rfc29ja21zZ190KSkNCisgICAgICBpZiAoeHBkZC0+eGVu X3N0b3JlX2ludGVyZmFjZS0+cnNwX3Byb2QgLSB4cGRkLT54ZW5fc3RvcmVfaW50ZXJmYWNlLT5y c3BfY29ucyA8IHNpemVvZih4c2Rfc29ja21zZ190KSkNCiAgICAgICB7DQogICAgICAgICAvL0tk UHJpbnQoKF9fRFJJVkVSX05BTUUgIiArKysgTWVzc2FnZSBpbmNvbXBsZXRlIChub3QgZXZlbiBh IGZ1bGwgaGVhZGVyKVxuIikpOw0KICAgICAgICAgYnJlYWs7DQogICAgICAgfQ0KKyAgICAgIEtl TWVtb3J5QmFycmllcigpOw0KICAgICAgIG1lbWNweV9mcm9tX3JpbmcoeHBkZC0+eGVuX3N0b3Jl X2ludGVyZmFjZS0+cnNwLCAmbXNnLA0KICAgICAgICAgTUFTS19YRU5TVE9SRV9JRFgoeHBkZC0+ eGVuX3N0b3JlX2ludGVyZmFjZS0+cnNwX2NvbnMpLCBzaXplb2YoeHNkX3NvY2ttc2dfdCkpOw0K ICAgICAgIHhwZGQtPnhiX21zZyA9IEV4QWxsb2NhdGVQb29sV2l0aFRhZyhOb25QYWdlZFBvb2ws IHNpemVvZih4c2Rfc29ja21zZ190KSArIG1zZy5sZW4sIFhFTlBDSV9QT09MX1RBRyk7DQpAQCAt MzAwLDcgKzI5OCw4IEBACiAgICAgICB4cGRkLT54ZW5fc3RvcmVfaW50ZXJmYWNlLT5yc3BfY29u cyArPSBzaXplb2YoeHNkX3NvY2ttc2dfdCk7DQogICAgIH0NCiANCi0gICAgbXNnX2xlbiA9IG1p bihyc3BfcHJvZCAtIHhwZGQtPnhlbl9zdG9yZV9pbnRlcmZhY2UtPnJzcF9jb25zLCBzaXplb2Yo eHNkX3NvY2ttc2dfdCkgKyB4cGRkLT54Yl9tc2ctPmxlbiAtIHhwZGQtPnhiX21zZ19vZmZzZXQp Ow0KKyAgICBtc2dfbGVuID0gbWluKHhwZGQtPnhlbl9zdG9yZV9pbnRlcmZhY2UtPnJzcF9wcm9k IC0geHBkZC0+eGVuX3N0b3JlX2ludGVyZmFjZS0+cnNwX2NvbnMsIHNpemVvZih4c2Rfc29ja21z Z190KSArIHhwZGQtPnhiX21zZy0+bGVuIC0geHBkZC0+eGJfbXNnX29mZnNldCk7DQorICAgIEtl TWVtb3J5QmFycmllcigpOyAvKiBtYWtlIHN1cmUgdGhlIGRhdGEgaW4gdGhlIHJpbmcgaXMgdmFs aWQgKi8NCiAgICAgQVNTRVJUKHhwZGQtPnhiX21zZ19vZmZzZXQgKyBtc2dfbGVuIDw9IHNpemVv Zih4c2Rfc29ja21zZ190KSArIHhwZGQtPnhiX21zZy0+bGVuKTsNCiAgICAgbWVtY3B5X2Zyb21f cmluZyh4cGRkLT54ZW5fc3RvcmVfaW50ZXJmYWNlLT5yc3AsDQogICAgICAgKFBVQ0hBUil4cGRk LT54Yl9tc2cgKyB4cGRkLT54Yl9tc2dfb2Zmc2V0LA0KQEAgLTM1OSw3ICszNTgsNyBAQAogICBw YV94ZW5fc3RvcmVfaW50ZXJmYWNlLlF1YWRQYXJ0ID0gKFVMT05HTE9ORyl4ZW5fc3RvcmVfbWZu IDw8IFBBR0VfU0hJRlQ7DQogICB4cGRkLT54ZW5fc3RvcmVfaW50ZXJmYWNlID0gTW1NYXBJb1Nw YWNlKHBhX3hlbl9zdG9yZV9pbnRlcmZhY2UsIFBBR0VfU0laRSwgTW1Ob25DYWNoZWQpOw0KIA0K LSAgRXZ0Q2huX0JpbmREcGMoeHBkZCwgeHBkZC0+eGVuX3N0b3JlX2V2dGNobiwgWGVuQnVzX0Rw YywgeHBkZCwgRVZUX0FDVElPTl9GTEFHU19OT19TVVNQRU5EKTsNCisgIEV2dENobl9CaW5kRHBj KHhwZGQsIHhwZGQtPnhlbl9zdG9yZV9ldnRjaG4sIFhlbkJ1c19EcGMsIHhwZGQpOw0KICAgDQog ICByZXR1cm4gU1RBVFVTX1NVQ0NFU1M7DQogfQ0KQEAgLTU3MiwxMSArNTcxLDEwIEBACiAgIHsN CiAgICAgaWYgKHhwZGQtPlhlbkJ1c19XYXRjaEVudHJpZXNbaV0uQWN0aXZlKQ0KICAgICB7DQot ICAgICAgS2RQcmludCgoX19EUklWRVJfTkFNRSAiICAgICBBZGRpbmcgd2F0Y2ggZm9yIHBhdGgg PSAlc1xuIiwgeHBkZC0+WGVuQnVzX1dhdGNoRW50cmllc1tpXS5QYXRoKSk7DQorICAgICAgLy9L ZFByaW50KChfX0RSSVZFUl9OQU1FICIgICAgIEFkZGluZyB3YXRjaCBmb3IgcGF0aCA9ICVzXG4i LCB4cGRkLT5YZW5CdXNfV2F0Y2hFbnRyaWVzW2ldLlBhdGgpKTsNCiAgICAgICBYZW5CdXNfU2Vu ZEFkZFdhdGNoKHhwZGQsIFhCVF9OSUwsIHhwZGQtPlhlbkJ1c19XYXRjaEVudHJpZXNbaV0uUGF0 aCwgaSk7DQogICAgIH0NCiAgIH0NCi0NCiAgIEZVTkNUSU9OX0VYSVQoKTsNCiAgIA0KICAgcmV0 dXJuIFNUQVRVU19TVUNDRVNTOw0KQEAgLTY2Nyw3ICs2NjUsNyBAQAogICBpZiAoaSA9PSBNQVhf V0FUQ0hfRU5UUklFUykNCiAgIHsNCiAgICAgRXhSZWxlYXNlRmFzdE11dGV4KCZ4cGRkLT54Yl93 YXRjaF9tdXRleCk7DQotICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgV2F0Y2ggbm90 IHNldCBmb3IgJXMgLSBjYW4ndCByZW1vdmVcbiIsIFBhdGgpKTsNCisgICAgS2RQcmludCgoX19E UklWRVJfTkFNRSAiICAgICBXYXRjaCBub3Qgc2V0IC0gY2FuJ3QgcmVtb3ZlXG4iKSk7DQogICAg IHJldHVybiBOVUxMOw0KICAgfQ0KIA0KZGlmZiAtcnVOIC4uL3dpbi1wdmRyaXZlcnMuaGcveGVu cGNpL3hlbnBjaS5jIHhlbnBjaS94ZW5wY2kuYwotLS0gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5w Y2kveGVucGNpLmMJMjAxMS0wMi0yNiAyMDo0MzoxMi4wMDAwMDAwMDAgKzA4MDAKKysrIHhlbnBj aS94ZW5wY2kuYwkyMDExLTAyLTI2IDIwOjQ0OjMzLjAwMDAwMDAwMCArMDgwMApAQCAtNDg3LDEw ICs0ODcsMTAgQEAKICAgICBXZGZSZWdpc3RyeUNsb3NlKHNnb19rZXkpOw0KICAgICByZXR1cm47 IC8qIHNvbWV0aGluZyBpcyB2ZXJ5IHdyb25nICovDQogICB9DQotICBpZiAoZHVtbXlfZ3JvdXBf aW5kZXggPT0gMSAmJiB3ZGZfbG9hZF9ncm91cF9pbmRleCAhPSAtMSAmJg0KKyAgaWYgKGR1bW15 X2dyb3VwX2luZGV4ID09IDEgJiYgKHdkZl9sb2FkX2dyb3VwX2luZGV4ID09IC0xIHx8IA0KICAg ICAoZHVtbXlfZ3JvdXBfaW5kZXggPCB3ZGZfbG9hZF9ncm91cF9pbmRleA0KICAgICAmJiB3ZGZf bG9hZF9ncm91cF9pbmRleCA8IHhlbnBjaV9ncm91cF9pbmRleA0KLSAgICAmJiB4ZW5wY2lfZ3Jv dXBfaW5kZXggPCBib290X2J1c19leHRlbmRlcl9pbmRleCkpDQorICAgICYmIHhlbnBjaV9ncm91 cF9pbmRleCA8IGJvb3RfYnVzX2V4dGVuZGVyX2luZGV4KSkpDQogICB7DQogICAgIEZVTkNUSU9O X0VYSVQoKTsNCiAgICAgcmV0dXJuOyAvKiBvdXIgd29yayBoZXJlIGlzIGRvbmUgKi8NCkBAIC01 MDUsNyArNTA1LDcgQEAKICAgICAgIFdkZkNvbGxlY3Rpb25BZGQobmV3X2xvYWRfb3JkZXIsIHRt cF93ZGZfc3RyaW5nKTsNCiAgICAgICBXZGZPYmplY3REZWxldGUodG1wX3dkZl9zdHJpbmcpOw0K ICAgICB9DQotICAgIGlmIChpID09IDEpDQorICAgIGlmIChpID09IDEgJiYgd2RmX2xvYWRfZ3Jv dXBfaW5kZXggIT0gLTEpDQogICAgIHsNCiAgICAgICBXREZTVFJJTkcgdG1wX3dkZl9zdHJpbmc7 DQogICAgICAgV2RmU3RyaW5nQ3JlYXRlKCZ3ZGZfbG9hZF9ncm91cF9uYW1lLCBXREZfTk9fT0JK RUNUX0FUVFJJQlVURVMsICZ0bXBfd2RmX3N0cmluZyk7DQpkaWZmIC1ydU4gLi4vd2luLXB2ZHJp dmVycy5oZy94ZW5wY2kveGVucGNpX2Zkby5jIHhlbnBjaS94ZW5wY2lfZmRvLmMKLS0tIC4uL3dp bi1wdmRyaXZlcnMuaGcveGVucGNpL3hlbnBjaV9mZG8uYwkyMDExLTAyLTI2IDIwOjQzOjEyLjAw MDAwMDAwMCArMDgwMAorKysgeGVucGNpL3hlbnBjaV9mZG8uYwkyMDExLTAyLTI2IDIwOjQ0OjMz LjAwMDAwMDAwMCArMDgwMApAQCAtMSw0ICsxLDQgQEAKLS8qDQorIC8qDQogUFYgRHJpdmVycyBm b3IgV2luZG93cyBYZW4gSFZNIERvbWFpbnMNCiBDb3B5cmlnaHQgKEMpIDIwMDcgSmFtZXMgSGFy cGVyDQogDQpAQCAtMjAsMTAgKzIwLDE0IEBACiAjaW5jbHVkZSAieGVucGNpLmgiDQogI2luY2x1 ZGUgPHN0ZGxpYi5oPg0KICNpbmNsdWRlIDxhdXhfa2xpYi5oPg0KKyNpbmNsdWRlICJnZXRwaHlp bmZvLmgiDQorI2luY2x1ZGUgInhlbnBvZC5oIg0KKyNpbmNsdWRlICJ4ZW5wY2lfc2xlZXAuaCIN CiANCiAjZGVmaW5lIFNZU1JRX1BBVEggImNvbnRyb2wvc3lzcnEiDQogI2RlZmluZSBTSFVURE9X Tl9QQVRIICJjb250cm9sL3NodXRkb3duIg0KLSNkZWZpbmUgQkFMTE9PTl9QQVRIICJtZW1vcnkv dGFyZ2V0Ig0KKyNkZWZpbmUgQkFMTE9PTl9UQVJHRVRfUEFUSCAibWVtb3J5L3RhcmdldCINCisj ZGVmaW5lIEJBTExPT05fV09SS1RJTUVfUEFUSCAibWVtb3J5L3dvcmt0aW1lIg0KIA0KIC8qIE5v dCByZWFsbHkgbmVjZXNzYXJ5IGJ1dCBrZWVwcyBQUkVmYXN0IGhhcHB5ICovDQogc3RhdGljIEVW VF9XREZfV09SS0lURU0gWGVuUGNpX1N1c3BlbmRSZXN1bWU7DQpAQCAtMzEsNiArMzUsOCBAQAog c3RhdGljIEtTVEFSVF9ST1VUSU5FIFhlblBjaV9CYWxsb29uVGhyZWFkUHJvYzsNCiAjZW5kaWYN CiANCitleHRlcm4gS1NUQVJUX1JPVVRJTkUgUHZNZW1vcnlJbmZvVGhyZWFkUHJvYzsNCisNCiBz dGF0aWMgVk9JRA0KIFhlblBjaV9NYXBIYWxUaGVuUGF0Y2hLZXJuZWwoUFhFTlBDSV9ERVZJQ0Vf REFUQSB4cGRkKQ0KIHsNCkBAIC0yMzgsNiArMjQ0LDExIEBACiAgIFVMT05HIHJldDsNCiAgIGlu dCBwZm5fY291bnQ7DQogICANCisjaWZkZWYgIEJBTExPT05fUEFUSF9XT1JLX1RJTUUNCisgIFVM T05HICB3b3JrYmVnaW50aW1lOw0KKyAgVUxPTkcgIHdvcmtlbmR0aW1lOw0KKyNlbmRpZg0KKyAg DQogICBGVU5DVElPTl9FTlRFUigpOw0KIA0KICAgZm9yKDs7KQ0KQEAgLTI2Nyw2ICsyNzgsMTEg QEAKICAgICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgTm8gY2hhbmdlIHRvIG1lbW9y eVxuIikpOw0KICAgICAgIGNvbnRpbnVlOw0KICAgICB9DQorICAgIA0KKyNpZmRlZiAgQkFMTE9P Tl9QQVRIX1dPUktfVElNRSAgICAgIA0KKyAgICBQdkdldFRpY2tDb3VudCgmd29ya2JlZ2ludGlt ZSk7DQorI2VuZGlmICAgICAgDQorDQogICAgIGVsc2UgaWYgKHhwZGQtPmN1cnJlbnRfbWVtb3J5 IDwgbmV3X3RhcmdldCkNCiAgICAgew0KICAgICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAg ICAgVHJ5aW5nIHRvIHRha2UgJWQgTUIgZnJvbSBYZW5cbiIsIG5ld190YXJnZXQgLSB4cGRkLT5j dXJyZW50X21lbW9yeSkpOw0KQEAgLTI3Nyw2ICsyOTMsMTIgQEAKICAgICAgICAgDQogICAgICAg ICBwZm5fY291bnQgPSBBRERSRVNTX0FORF9TSVpFX1RPX1NQQU5fUEFHRVMoTW1HZXRNZGxWaXJ0 dWFsQWRkcmVzcyhtZGwpLCBNbUdldE1kbEJ5dGVDb3VudChtZGwpKTsNCiAgICAgICAgIHBmbnMg PSBFeEFsbG9jYXRlUG9vbFdpdGhUYWcoTm9uUGFnZWRQb29sLCBwZm5fY291bnQgKiBzaXplb2Yo eGVuX3Bmbl90KSwgWEVOUENJX1BPT0xfVEFHKTsNCisgICAgICAgIGlmKHBmbnMgPT0gTlVMTCl7 DQorICAgICAgICAgICAgbWRsLT5OZXh0ID0gaGVhZDsNCisgICAgICAgICAgICBoZWFkID0gbWRs Ow0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKw0KICAgICAgICAgLyogc2l6ZW9m KHhlbl9wZm5fdCkgbWF5IG5vdCBiZSB0aGUgc2FtZSBhcyBQUEZOX05VTUJFUiAqLw0KICAgICAg ICAgZm9yIChpID0gMDsgaSA8IHBmbl9jb3VudDsgaSsrKQ0KICAgICAgICAgICBwZm5zW2ldID0g KHhlbl9wZm5fdCkoTW1HZXRNZGxQZm5BcnJheShtZGwpW2ldKTsNCkBAIC0yODksMTAgKzMxMSwy NCBAQAogICAgICAgICANCiAgICAgICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgQ2Fs bGluZyBIWVBFUlZJU09SX21lbW9yeV9vcChYRU5NRU1fcG9wdWxhdGVfcGh5c21hcCkgLSBwZm5f Y291bnQgPSAlZFxuIiwgcGZuX2NvdW50KSk7DQogICAgICAgICByZXQgPSBIWVBFUlZJU09SX21l bW9yeV9vcCh4cGRkLCBYRU5NRU1fcG9wdWxhdGVfcGh5c21hcCwgJnJlc2VydmF0aW9uKTsNCi0g ICAgICAgIEV4RnJlZVBvb2xXaXRoVGFnKHBmbnMsIFhFTlBDSV9QT09MX1RBRyk7DQorICAgICAg ICANCiAgICAgICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgcG9wdWxhdGVkICVkIHBh Z2VzXG4iLCByZXQpKTsNCiAgICAgICAgIC8qIFRPRE86IHdoYXQgZG8gd2UgZG8gaWYgbGVzcyB0 aGFuIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgcGFnZXMgd2VyZSBwb3B1bGF0ZWQ/Pz8gY2FuIHRo aXMgaGFwcGVuPz8/ICovDQorICAgICAgICAvKiBmaXhlZCEgKi8NCisgICAgICAgIGlmKHJldCA8 IChVTE9ORylwZm5fY291bnQpew0KKyAgICAgICAgICAgIGlmKHJldCA+IDApew0KKyAgICAgICAg ICAgICAgICAvKiBXZSBoaXQgdGhlIFhlbiBoYXJkIGxpbWl0OiByZXByb2JlLiAqLw0KKyAgICAg ICAgICAgICAgICByZXNlcnZhdGlvbi5ucl9leHRlbnRzID0gcmV0Ow0KKyAgICAgICAgICAgICAg ICByZXQgPSBIWVBFUlZJU09SX21lbW9yeV9vcCh4cGRkLCBYRU5NRU1fZGVjcmVhc2VfcmVzZXJ2 YXRpb24sICZyZXNlcnZhdGlvbik7DQorICAgICAgICAgICAgICAgIEtkUHJpbnQoKF9fRFJJVkVS X05BTUUgIiAgICAgZGVjcmVhc2VkICVkIHBhZ2VzXG4iLCByZXQpKTsNCisgICAgICAgICAgICB9 DQorICAgICAgICAgICAgbWRsLT5OZXh0ID0gaGVhZDsNCisgICAgICAgICAgICBoZWFkID0gbWRs Ow0KKyAgICAgICAgICAgIEV4RnJlZVBvb2xXaXRoVGFnKHBmbnMsIFhFTlBDSV9QT09MX1RBRyk7 DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQogICAgICAgICANCisgICAgICAgIEV4 RnJlZVBvb2xXaXRoVGFnKHBmbnMsIFhFTlBDSV9QT09MX1RBRyk7DQogICAgICAgICBNbUZyZWVQ YWdlc0Zyb21NZGwobWRsKTsNCiAgICAgICAgIEV4RnJlZVBvb2wobWRsKTsNCiAgICAgICAgIHhw ZGQtPmN1cnJlbnRfbWVtb3J5Kys7DQpAQCAtMzM0LDYgKzM3MCwxMiBAQAogICAgICAgICAgICAg YnJlYWs7DQogICAgICAgICAgIH0NCiAgICAgICAgICAgcGZucyA9IEV4QWxsb2NhdGVQb29sV2l0 aFRhZyhOb25QYWdlZFBvb2wsIHBmbl9jb3VudCAqIHNpemVvZih4ZW5fcGZuX3QpLCBYRU5QQ0lf UE9PTF9UQUcpOw0KKyAgICAgICAgICBpZihwZm5zID09IE5VTEwpew0KKyAgICAgICAgICAgIE1t RnJlZVBhZ2VzRnJvbU1kbChtZGwpOw0KKyAgICAgICAgICAgIEV4RnJlZVBvb2wobWRsKTsNCisg ICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgfQ0KKw0KICAgICAgICAgICAvKiBzaXplb2Yo eGVuX3Bmbl90KSBtYXkgbm90IGJlIHRoZSBzYW1lIGFzIFBQRk5fTlVNQkVSICovDQogICAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBwZm5fY291bnQ7IGkrKykNCiAgICAgICAgICAgICBwZm5zW2ld ID0gKHhlbl9wZm5fdCkoTW1HZXRNZGxQZm5BcnJheShtZGwpW2ldKTsNCkBAIC0zNjEsNiArNDAz LDExIEBACiAgICAgICAgIH0NCiAgICAgICB9DQogICAgIH0NCisjaWZkZWYgIEJBTExPT05fUEFU SF9XT1JLX1RJTUUgIA0KKyAgICBQdkdldFRpY2tDb3VudCgmd29ya2VuZHRpbWUpOw0KKyAgICBY ZW5CdXNfUHJpbnRmKHhwZGQsIFhCVF9OSUwsIEJBTExPT05fUEFUSF9XT1JLX1RJTUUsICIldSIs IHdvcmtlbmR0aW1lIC0gd29ya2JlZ2ludGltZSk7ICANCisjZW5kaWYNCisNCiAgIH0NCiAgIC8v RlVOQ1RJT05fRVhJVCgpOw0KIH0NCkBAIC0zODAsNyArNDI3LDcgQEAKIA0KICAgWGVuQnVzX1N0 YXJ0VHJhbnNhY3Rpb24oeHBkZCwgJnhidCk7DQogDQotICBYZW5CdXNfUmVhZCh4cGRkLCBYQlRf TklMLCBCQUxMT09OX1BBVEgsICZ2YWx1ZSk7DQorICBYZW5CdXNfUmVhZCh4cGRkLCBYQlRfTklM LCBCQUxMT09OX1RBUkdFVF9QQVRILCAmdmFsdWUpOw0KICAgDQogICBpZiAodmFsdWUgPT0gTlVM TCkNCiAgIHsNCkBAIC00MDQsMzkgKzQ1MSwxOCBAQAogICBGVU5DVElPTl9FWElUKCk7DQogfQ0K IA0KKw0KIHN0YXRpYyBWT0lEDQogWGVuUGNpX1N1c3BlbmQwKFBWT0lEIGNvbnRleHQpDQogew0K ICAgUFhFTlBDSV9ERVZJQ0VfREFUQSB4cGRkID0gY29udGV4dDsNCiAgIFVMT05HIGNhbmNlbGxl ZDsNCi0gIFVMT05HTE9ORyBzeXNlbnRlcl9jcywgc3lzZW50ZXJfZXNwLCBzeXNlbnRlcl9laXA7 DQogICANCiAgIEZVTkNUSU9OX0VOVEVSKCk7DQogDQogICBHbnRUYmxfU3VzcGVuZCh4cGRkKTsN Ci0NCi0gIHN5c2VudGVyX2NzID0gX19yZWFkbXNyKDB4MTc0KTsNCi0gIHN5c2VudGVyX2VzcCA9 IF9fcmVhZG1zcigweDE3NSk7DQotICBzeXNlbnRlcl9laXAgPSBfX3JlYWRtc3IoMHgxNzYpOw0K ICAgDQogICBjYW5jZWxsZWQgPSBodm1fc2h1dGRvd24oeHBkZCwgU0hVVERPV05fc3VzcGVuZCk7 DQotDQotICBpZiAoX19yZWFkbXNyKDB4MTc0KSAhPSBzeXNlbnRlcl9jcykNCi0gIHsNCi0gICAg S2RQcmludCgoX19EUklWRVJfTkFNRSAiICAgICBzeXNlbnRlcl9jcyBub3QgcmVzdG9yZWQuIEZp eGluZy5cbiIpKTsNCi0gICAgX193cml0ZW1zcigweDE3NCwgc3lzZW50ZXJfY3MpOw0KLSAgfQ0K LSAgaWYgKF9fcmVhZG1zcigweDE3NSkgIT0gc3lzZW50ZXJfZXNwKQ0KLSAgew0KLSAgICBLZFBy aW50KChfX0RSSVZFUl9OQU1FICIgICAgIHN5c2VudGVyX2VzcCBub3QgcmVzdG9yZWQuIEZpeGlu Zy5cbiIpKTsNCi0gICAgX193cml0ZW1zcigweDE3NSwgc3lzZW50ZXJfZXNwKTsNCi0gIH0NCi0g IGlmIChfX3JlYWRtc3IoMHgxNzYpICE9IHN5c2VudGVyX2VpcCkNCi0gIHsNCi0gICAgICBLZFBy aW50KChfX0RSSVZFUl9OQU1FICIgICAgIHN5c2VudGVyX2VpcCBub3QgcmVzdG9yZWQuIEZpeGlu Zy5cbiIpKTsNCi0gICAgX193cml0ZW1zcigweDE3Niwgc3lzZW50ZXJfZWlwKTsNCi0gIH0NCi0N CiAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgYmFjayBmcm9tIHN1c3BlbmQsIGNhbmNl bGxlZCA9ICVkXG4iLCBjYW5jZWxsZWQpKTsNCiANCiAgIGlmIChxZW11X2hpZGVfZmxhZ3NfdmFs dWUpDQpAQCAtNDc2LDcgKzUwMiw3IEBACiAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAg c3VzcGVuZCBldmVudCBjaGFubmVsID0gJWRcbiIsIHhwZGQtPnN1c3BlbmRfZXZ0Y2huKSk7DQog ICBSdGxTdHJpbmdDYlByaW50ZkEocGF0aCwgQVJSQVlfU0laRShwYXRoKSwgImRldmljZS9zdXNw ZW5kL2V2ZW50LWNoYW5uZWwiKTsNCiAgIFhlbkJ1c19QcmludGYoeHBkZCwgWEJUX05JTCwgcGF0 aCwgIiVkIiwgeHBkZC0+c3VzcGVuZF9ldnRjaG4pOw0KLSAgRXZ0Q2huX0JpbmREcGMoeHBkZCwg eHBkZC0+c3VzcGVuZF9ldnRjaG4sIFhlblBjaV9TdXNwZW5kRXZ0RHBjLCB4cGRkLT53ZGZfZGV2 aWNlLCBFVlRfQUNUSU9OX0ZMQUdTX05PX1NVU1BFTkQpOw0KKyAgRXZ0Q2huX0JpbmREcGMoeHBk ZCwgeHBkZC0+c3VzcGVuZF9ldnRjaG4sIFhlblBjaV9TdXNwZW5kRXZ0RHBjLCB4cGRkLT53ZGZf ZGV2aWNlKTsNCiAgIA0KICAgcmV0dXJuIFNUQVRVU19TVUNDRVNTOw0KIH0NCkBAIC01MDcsNiAr NTMzLDcgQEAKICAgICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgU3VzcGVuZGluZyBj aGlsZFxuIikpOw0KICAgICAgIFhlblBjaV9QZG9fU3VzcGVuZChjaGlsZF9kZXZpY2UpOw0KICAg ICB9DQorICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgV2RmQ2hpbGRMaXN0UmV0cmll dmVOZXh0RGV2aWNlID0gJTA4eCwgU1RBVFVTX05PX01PUkVfRU5UUklFUyA9ICUwOHhcbiIsIHN0 YXR1cywgU1RBVFVTX05PX01PUkVfRU5UUklFUykpOw0KICAgICBXZGZDaGlsZExpc3RFbmRJdGVy YXRpb24oY2hpbGRfbGlzdCwgJmNoaWxkX2l0ZXJhdG9yKTsNCiANCiAgICAgWGVuQnVzX1N1c3Bl bmQoeHBkZCk7DQpAQCAtNTI0LDYgKzU1MSw3IEBACiAgICAgICBLZFByaW50KChfX0RSSVZFUl9O QU1FICIgICAgIFJlc3VtaW5nIGNoaWxkXG4iKSk7DQogICAgICAgWGVuUGNpX1Bkb19SZXN1bWUo Y2hpbGRfZGV2aWNlKTsNCiAgICAgfQ0KKyAgICBLZFByaW50KChfX0RSSVZFUl9OQU1FICIgICAg IFdkZkNoaWxkTGlzdFJldHJpZXZlTmV4dERldmljZSA9ICUwOHgsIFNUQVRVU19OT19NT1JFX0VO VFJJRVMgPSAlMDh4XG4iLCBzdGF0dXMsIFNUQVRVU19OT19NT1JFX0VOVFJJRVMpKTsNCiAgICAg V2RmQ2hpbGRMaXN0RW5kSXRlcmF0aW9uKGNoaWxkX2xpc3QsICZjaGlsZF9pdGVyYXRvcik7DQog DQogICAgIHhwZGQtPnN1c3BlbmRfc3RhdGUgPSBTVVNQRU5EX1NUQVRFX05PTkU7DQpAQCAtNjY2 LDkgKzY5NCw5IEBACiAgICAgICB4cGRkLT5wbGF0Zm9ybV9tbWlvX2ZsYWdzID0gdHJhbnNsYXRl ZF9kZXNjcmlwdG9yLT5GbGFnczsNCiAgICAgICBicmVhazsNCiAgICAgY2FzZSBDbVJlc291cmNl VHlwZUludGVycnVwdDoNCi0JICAgIHhwZGQtPmlycV9sZXZlbCA9IChLSVJRTCl0cmFuc2xhdGVk X2Rlc2NyaXB0b3ItPnUuSW50ZXJydXB0LkxldmVsOw0KLSAgCSAgeHBkZC0+aXJxX3ZlY3RvciA9 IHRyYW5zbGF0ZWRfZGVzY3JpcHRvci0+dS5JbnRlcnJ1cHQuVmVjdG9yOw0KLQkgICAgeHBkZC0+ aXJxX2FmZmluaXR5ID0gdHJhbnNsYXRlZF9kZXNjcmlwdG9yLT51LkludGVycnVwdC5BZmZpbml0 eTsNCisgICAgICB4cGRkLT5pcnFfbGV2ZWwgPSAoS0lSUUwpdHJhbnNsYXRlZF9kZXNjcmlwdG9y LT51LkludGVycnVwdC5MZXZlbDsNCisgICAgICB4cGRkLT5pcnFfdmVjdG9yID0gdHJhbnNsYXRl ZF9kZXNjcmlwdG9yLT51LkludGVycnVwdC5WZWN0b3I7DQorICAgICAgeHBkZC0+aXJxX2FmZmlu aXR5ID0gdHJhbnNsYXRlZF9kZXNjcmlwdG9yLT51LkludGVycnVwdC5BZmZpbml0eTsNCiAgICAg ICB4cGRkLT5pcnFfbW9kZSA9ICh0cmFuc2xhdGVkX2Rlc2NyaXB0b3ItPkZsYWdzICYgQ01fUkVT T1VSQ0VfSU5URVJSVVBUX0xBVENIRUQpP0xhdGNoZWQ6TGV2ZWxTZW5zaXRpdmU7DQogICAgICAg eHBkZC0+aXJxX251bWJlciA9IHJhd19kZXNjcmlwdG9yLT51LkludGVycnVwdC5WZWN0b3I7ICAg ICAgDQogICAgICAgS2RQcmludCgoX19EUklWRVJfTkFNRSAiICAgICBpcnFfbnVtYmVyID0gJTAz eFxuIiwgcmF3X2Rlc2NyaXB0b3ItPnUuSW50ZXJydXB0LlZlY3RvcikpOw0KQEAgLTcxMCw2ICs3 MzgsOCBAQAogew0KICAgTlRTVEFUVVMgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7DQogICBQWEVO UENJX0RFVklDRV9EQVRBIHhwZGQgPSBHZXRYcGRkKGRldmljZSk7DQorICBVTE9ORyBpOw0KKyAg VUxPTkcgcmV0Ow0KIA0KICAgRlVOQ1RJT05fRU5URVIoKTsNCiANCkBAIC03NTYsNiArNzg2LDI0 IEBACiAgICAgR250VGJsX0luaXQoeHBkZCk7DQogICAgIEV2dENobl9Jbml0KHhwZGQpOw0KIA0K KyAgICBmb3IgKGkgPSAwOyBpIDwgTlJfR1JBTlRfRlJBTUVTICsgMTsgaSsrKQ0KKyAgICB7DQor ICAgICAgc3RydWN0IHhlbl9tZW1vcnlfcmVzZXJ2YXRpb24gcmVzZXJ2YXRpb247DQorICAgICAg eGVuX3Bmbl90IHBmbjsNCisgICAgICBQTURMIG1kbCA9IEFsbG9jYXRlUGFnZSgpOw0KKyAgICAg IHBmbiA9ICh4ZW5fcGZuX3QpKE1tR2V0TWRsUGZuQXJyYXkobWRsKVswXSk7DQorICAgICAgcmVz ZXJ2YXRpb24uYWRkcmVzc19iaXRzID0gMDsNCisgICAgICByZXNlcnZhdGlvbi5leHRlbnRfb3Jk ZXIgPSAwOw0KKyAgICAgIHJlc2VydmF0aW9uLmRvbWlkID0gRE9NSURfU0VMRjsNCisgICAgICBy ZXNlcnZhdGlvbi5ucl9leHRlbnRzID0gMTsNCisgICAgICAjcHJhZ21hIHdhcm5pbmcoZGlzYWJs ZTogNDEyNykgLyogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudCAqLw0KKyAgICAg IHNldF94ZW5fZ3Vlc3RfaGFuZGxlKHJlc2VydmF0aW9uLmV4dGVudF9zdGFydCwgJnBmbik7DQor ICAgICAgDQorICAgICAgLy9LZFByaW50KChfX0RSSVZFUl9OQU1FICIgICAgIENhbGxpbmcgSFlQ RVJWSVNPUl9tZW1vcnlfb3AgLSBwZm4gPSAleFxuIiwgKFVMT05HKXBmbikpOw0KKyAgICAgIHJl dCA9IEhZUEVSVklTT1JfbWVtb3J5X29wKHhwZGQsIFhFTk1FTV9kZWNyZWFzZV9yZXNlcnZhdGlv biwgJnJlc2VydmF0aW9uKTsNCisgICAgICAvL0tkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAg ZGVjcmVhc2VkICVkIHBhZ2VzXG4iLCByZXQpKTsNCisgICAgfQ0KKyAgICANCiAgIC8vIHVzZSB0 aGUgbWVtb3J5X29wKHVuc2lnbmVkIGludCBvcCwgdm9pZCAqYXJnKSBoeXBlcmNhbGwgdG8gYWRq dXN0IG1lbW9yeQ0KICAgLy8gdXNlIFhFTk1FTV9pbmNyZWFzZV9yZXNlcnZhdGlvbiBhbmQgWEVO TUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uDQogICB9DQpAQCAtNzc3LDEyICs4MjUsMTUgQEAKICAg TlRTVEFUVVMgc3RhdHVzID0gU1RBVFVTX1NVQ0NFU1M7DQogICBQWEVOUENJX0RFVklDRV9EQVRB IHhwZGQgPSBHZXRYcGRkKGRldmljZSk7DQogICBQQ0hBUiByZXNwb25zZTsNCi0gIGNoYXIgKnZh bHVlOw0KICAgZG9taWRfdCBkb21pZCA9IERPTUlEX1NFTEY7DQogICBVTE9ORyByZXQ7DQorICBV TE9ORyB0b3RhbHJhbV9iaWFzOw0KICAgeGVuX3Vsb25nX3QgKm1heF9yYW1fcGFnZTsNCiAgIEhB TkRMRSB0aHJlYWRfaGFuZGxlOw0KLQ0KKyAgSEFORExFIG1lbW9yeV9pbmZvX3RocmVhZF9oYW5k bGU7DQorICBYRU5fUE9EX1RBUkdFVF9UIHBvZF90YXJnZXQ7DQorICBwb2RfdGFyZ2V0LmRvbWlk ID0gRE9NSURfU0VMRjsNCisgIA0KICAgVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihwcmV2aW91c19z dGF0ZSk7DQogDQogICBGVU5DVElPTl9FTlRFUigpOw0KQEAgLTgwOCwxNCArODU5LDIxIEBACiAN CiAgICAgaWYgKCF4cGRkLT5pbml0aWFsX21lbW9yeSkNCiAgICAgew0KLSAgICAgIFhlbkJ1c19S ZWFkKHhwZGQsIFhCVF9OSUwsIEJBTExPT05fUEFUSCwgJnZhbHVlKTsNCi0gICAgICBpZiAoYXRv aSh2YWx1ZSkgPiAwKQ0KLSAgICAgIHsNCi0gICAgICAgIHhwZGQtPmluaXRpYWxfbWVtb3J5ID0g YXRvaSh2YWx1ZSkgPj4gMTA7IC8qIGNvbnZlcnQgdG8gTUIgKi8NCi0gICAgICAgIHhwZGQtPmN1 cnJlbnRfbWVtb3J5ID0geHBkZC0+aW5pdGlhbF9tZW1vcnk7DQotICAgICAgICB4cGRkLT50YXJn ZXRfbWVtb3J5ID0geHBkZC0+aW5pdGlhbF9tZW1vcnk7DQorICAgICAgTUVNT1JZU1RBVFVTIGxw QnVmZmVyOw0KKyAgICAgIFB2R2xvYmFsTWVtb3J5U3RhdHVzKCZscEJ1ZmZlcik7DQorICAgICAg eHBkZC0+aW5pdGlhbF9tZW1vcnkgPSAoVUxPTkcpKGxwQnVmZmVyLnRvdGFsUGh5cyA+PiAxMCk7 IC8qY29udmVydCB0byBNQiovDQorICAgICAgeHBkZC0+Y3VycmVudF9tZW1vcnkgPSB4cGRkLT5p bml0aWFsX21lbW9yeTsNCisNCisNCisgICAgICByZXQgPSBIWVBFUlZJU09SX21lbW9yeV9vcCh4 cGRkLCBYRU5NRU1fZ2V0X3BvZF90YXJnZXQsICZwb2RfdGFyZ2V0KTsNCisNCisgICAgICB0b3Rh bHJhbV9iaWFzID0gSFlQRVJWSVNPUl9tZW1vcnlfb3AoeHBkZCwgcmV0ICE9IC1FTk9TWVMgJiYg cmV0ICE9IDENCisgICAgICAgICAgICAgID8gWEVOTUVNX21heGltdW1fcmVzZXJ2YXRpb24gOiBY RU5NRU1fY3VycmVudF9yZXNlcnZhdGlvbiwNCisgICAgICAgICAgICAgICZwb2RfdGFyZ2V0LmRv bWlkKTsNCisgICAgICBpZiAoKFVMT05HKXRvdGFscmFtX2JpYXMgIT0gLUVOT1NZUykgew0KKyAg ICAgICAgICAgICAgeHBkZC0+aW5pdGlhbF9tZW1vcnkgPSB0b3RhbHJhbV9iaWFzID4+ICgyMCAt IFBBR0VfU0hJRlQpOw0KKyAgICAgICAgICAgICAgeHBkZC0+Y3VycmVudF9tZW1vcnkgPSB4cGRk LT5pbml0aWFsX21lbW9yeSArIDE7IC8qbGFzZSBsaW5lIGNvbnZlcnQgdG8gTUIgbWF5IGxvc3Qg c29tZSBLQiwganVzdCBhZGQgMU0qLw0KICAgICAgIH0NCi0gICAgICBLZFByaW50KChfX0RSSVZF Ul9OQU1FICIgICAgIEluaXRpYWwgTWVtb3J5IFZhbHVlID0gJWQgKCVzKVxuIiwgeHBkZC0+aW5p dGlhbF9tZW1vcnksIHZhbHVlKSk7DQogICAgICAgS2VJbml0aWFsaXplRXZlbnQoJnhwZGQtPmJh bGxvb25fZXZlbnQsIFN5bmNocm9uaXphdGlvbkV2ZW50LCBGQUxTRSk7DQogICAgICAgeHBkZC0+ YmFsbG9vbl9zaHV0ZG93biA9IEZBTFNFOw0KICAgICAgIHN0YXR1cyA9IFBzQ3JlYXRlU3lzdGVt VGhyZWFkKCZ0aHJlYWRfaGFuZGxlLCBUSFJFQURfQUxMX0FDQ0VTUywgTlVMTCwgTlVMTCwgTlVM TCwgWGVuUGNpX0JhbGxvb25UaHJlYWRQcm9jLCB4cGRkKTsNCkBAIC04MjYsOCArODg0LDE4IEBA CiAgICAgICB9DQogICAgICAgc3RhdHVzID0gT2JSZWZlcmVuY2VPYmplY3RCeUhhbmRsZSh0aHJl YWRfaGFuZGxlLCBUSFJFQURfQUxMX0FDQ0VTUywgTlVMTCwgS2VybmVsTW9kZSwgJnhwZGQtPmJh bGxvb25fdGhyZWFkLCBOVUxMKTsNCiAgICAgICBad0Nsb3NlKHRocmVhZF9oYW5kbGUpOw0KKyAg ICAgIA0KKyAgICAgIC8qICBzdGFydCBwY2kgbWVtaW5mbyB0aHJlYWQgKi8NCisgICAgICBzdGF0 dXMgPSBQc0NyZWF0ZVN5c3RlbVRocmVhZCgmbWVtb3J5X2luZm9fdGhyZWFkX2hhbmRsZSwgVEhS RUFEX0FMTF9BQ0NFU1MsIE5VTEwsIE5VTEwsIE5VTEwsIFB2TWVtb3J5SW5mb1RocmVhZFByb2Ms IHhwZGQpOw0KKyAgICAgIGlmICghTlRfU1VDQ0VTUyhzdGF0dXMpKQ0KKyAgICAgIHsNCisgICAg ICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgQ291bGQgbm90IHN0YXJ0IG1lbW9yeSB0 aHJlYWRcbiIpKTsNCisgICAgICAgIHJldHVybiBzdGF0dXM7DQorICAgICAgfQ0KKyAgICAgIHN0 YXR1cyA9IE9iUmVmZXJlbmNlT2JqZWN0QnlIYW5kbGUobWVtb3J5X2luZm9fdGhyZWFkX2hhbmRs ZSwgVEhSRUFEX0FMTF9BQ0NFU1MsIE5VTEwsIEtlcm5lbE1vZGUsICZ4cGRkLT5tZW1vcnlfdGhy ZWFkLCBOVUxMKTsNCisgICAgICBad0Nsb3NlKG1lbW9yeV9pbmZvX3RocmVhZF9oYW5kbGUpOyAN CiAgICAgfQ0KLSAgICByZXNwb25zZSA9IFhlbkJ1c19BZGRXYXRjaCh4cGRkLCBYQlRfTklMLCBC QUxMT09OX1BBVEgsIFhlblBjaV9CYWxsb29uSGFuZGxlciwgZGV2aWNlKTsNCisgICAgcmVzcG9u c2UgPSBYZW5CdXNfQWRkV2F0Y2goeHBkZCwgWEJUX05JTCwgQkFMTE9PTl9UQVJHRVRfUEFUSCwg WGVuUGNpX0JhbGxvb25IYW5kbGVyLCBkZXZpY2UpOw0KICAgfQ0KICAgZWxzZQ0KICAgew0KQEAg LTk0MCw5ICsxMDA4LDcgQEAKICAgfQ0KICAgZWxzZQ0KICAgew0KLSAgICBFdnRDaG5fU3VzcGVu ZCh4cGRkKTsNCiAgICAgR250VGJsX1N1c3BlbmQoeHBkZCk7DQotICAgIA0KICAgfQ0KIA0KICAg RlVOQ1RJT05fRVhJVCgpOw0KZGlmZiAtcnVOIC4uL3dpbi1wdmRyaXZlcnMuaGcveGVucGNpL3hl bnBjaS5oIHhlbnBjaS94ZW5wY2kuaAotLS0gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5wY2kveGVu cGNpLmgJMjAxMS0wMi0yNiAyMDo0MzoxMi4wMDAwMDAwMDAgKzA4MDAKKysrIHhlbnBjaS94ZW5w Y2kuaAkyMDExLTAyLTI2IDIwOjQ0OjMzLjAwMDAwMDAwMCArMDgwMApAQCAtNjksMTAgKzY5LDYg QEAKICNkZWZpbmUgRVZUX0FDVElPTl9UWVBFX1NVU1BFTkQgNA0KICNkZWZpbmUgRVZUX0FDVElP Tl9UWVBFX05FVyAgICAgNSAvKiBzZXR1cCBvZiBldmVudCBpcyBpbiBwcm9ncmVzcyAqLw0KIA0K LSNkZWZpbmUgRVZUX0FDVElPTl9GTEFHU19ERUZBVUxUICAgIDAgLyogbm8gc3BlY2lhbCBmbGFn cyAqLw0KLSNkZWZpbmUgRVZUX0FDVElPTl9GTEFHU19OT19TVVNQRU5EIDEgLyogc2hvdWxkIG5v dCBiZSBmaXJlZCBvbiBFVlRfQUNUSU9OX1RZUEVfU1VTUEVORCBldmVudCAqLw0KLQ0KLQ0KICNk ZWZpbmUgWEVOX1BWX1BST0RVQ1RfTlVNQkVSICAgMHgwMDAyDQogI2RlZmluZSBYRU5fUFZfUFJP RFVDVF9CVUlMRCAgICAweDAwMDAwMDAxDQogDQpAQCAtODMsNyArNzksNiBAQAogICBQVk9JRCBT ZXJ2aWNlQ29udGV4dDsNCiAgIENIQVIgZGVzY3JpcHRpb25bMTI4XTsNCiAgIFVMT05HIHR5cGU7 IC8qIEVWVF9BQ1RJT05fVFlQRV8qICovDQotICBVTE9ORyBmbGFnczsgLyogRVZUX0FDVElPTl9G TEFHU18qICovDQogICBLRFBDIERwYzsNCiAgIFVMT05HIHBvcnQ7DQogICBVTE9ORyB2ZWN0b3I7 DQpAQCAtMTIyLDkgKzExNyw2IEBACiAjZGVmaW5lIFNVU1BFTkRfU1RBVEVfSElHSF9JUlFMIDIg LyogYWxsIHByb2Nlc3NvcnMgYXJlIGF0IGhpZ2ggSVJRTCBhbmQgc3Bpbm5pbmcgKi8NCiAjZGVm aW5lIFNVU1BFTkRfU1RBVEVfUkVTVU1JTkcgIDMgLyogd2UgYXJlIHRoZSBvdGhlciBzaWRlIG9m IHRoZSBzdXNwZW5kIGFuZCB0aGluZ3MgYXJlIHN0YXJ0aW5nIHRvIGdldCBiYWNrIHRvIG5vcm1h bCAqLw0KIA0KLS8qIHdlIHRha2Ugc29tZSBncmFudCByZWZzIG91dCBhbmQgcHV0IHRoZW0gYXNp ZGUgc28gdGhhdCB3ZSBkb250IGdldCBjb3JydXB0ZWQgYnkgaGliZXJuYXRlICovDQotI2RlZmlu ZSBISUJFUl9HUkVGX0NPVU5UIDEyOA0KLQ0KIHR5cGVkZWYgc3RydWN0IHsgIA0KICAgV0RGREVW SUNFIHdkZl9kZXZpY2U7DQogICANCkBAIC0xNTksMTYgKzE1MSwxNiBAQAogICBldnRjaG5fcG9y dF90IHhlbl9zdG9yZV9ldnRjaG47DQogDQogICAvKiBncmFudCByZWxhdGVkICovDQotICBzdHJ1 Y3Qgc3RhY2tfc3RhdGUgKmdudHRibF9zczsNCi0gIHN0cnVjdCBzdGFja19zdGF0ZSAqZ250dGJs X3NzX2NvcHk7DQotICBncmFudF9yZWZfdCBoaWJlcl9ncmVmc1tISUJFUl9HUkVGX0NPVU5UXTsN Ci0gIFBNREwgZ250dGJsX21kbDsNCi0gIGdyYW50X2VudHJ5X3QgKmdudHRibF90YWJsZTsNCi0g IGdyYW50X2VudHJ5X3QgKmdudHRibF90YWJsZV9jb3B5Ow0KKyAgc3RydWN0IHN0YWNrX3N0YXRl ICpnbnR0YWJfc3M7DQorICBncmFudF9lbnRyeV90ICpnbnR0YWJfdGFibGU7DQorICBncmFudF9l bnRyeV90ICpnbnR0YWJfdGFibGVfY29weTsNCiAgICNpZiBEQkcNCi0gIFBVTE9ORyBnbnR0Ymxf dGFnOw0KLSAgUFVMT05HIGdudHRibF90YWdfY29weTsNCisgIFBVTE9ORyBnbnR0YWJfdGFnOw0K ICAgI2VuZGlmDQorICBQSFlTSUNBTF9BRERSRVNTIGdudHRhYl90YWJsZV9waHlzaWNhbDsNCisg IC8vZ3JhbnRfcmVmX3QgKmdudHRhYl9saXN0Ow0KKyAgLy9pbnQgZ250dGFiX2xpc3RfZnJlZTsN CisgIC8vS1NQSU5fTE9DSyBncmFudF9sb2NrOw0KICAgVUxPTkcgZ3JhbnRfZnJhbWVzOw0KIA0K ICAgZXZfYWN0aW9uX3QgZXZfYWN0aW9uc1tOUl9FVkVOVFNdOw0KQEAgLTE3OSw2ICsxNzEsMTIg QEAKICAgc3RydWN0IHhlbnN0b3JlX2RvbWFpbl9pbnRlcmZhY2UgKnhlbl9zdG9yZV9pbnRlcmZh Y2U7DQogDQogI2RlZmluZSBCQUxMT09OX1VOSVRTICgxMDI0ICogMTAyNCkgLyogMU1CICovDQor DQorICAvKm1lbWluZm8gdGhyZWFkKi8NCisgIFBLVEhSRUFEIG1lbW9yeV90aHJlYWQ7DQorICBL RVZFTlQgbWVtb3J5X2V2ZW50Ow0KKw0KKyAgQk9PTEVBTiBtZW1vcnlfc2h1dGRvd247DQogICBQ S1RIUkVBRCBiYWxsb29uX3RocmVhZDsNCiAgIEtFVkVOVCBiYWxsb29uX2V2ZW50Ow0KICAgQk9P TEVBTiBiYWxsb29uX3NodXRkb3duOw0KQEAgLTI2Myw2ICsyNjEsOCBAQAogICBYRU5QQ0lfU1RB VEVfTUFQX0VMRU1FTlQgeGJfcG9zdF9jb25uZWN0X21hcFs1XTsNCiAgIFhFTlBDSV9TVEFURV9N QVBfRUxFTUVOVCB4Yl9zaHV0ZG93bl9tYXBbNV07DQogICANCisgIA0KKyAgDQogICBCT09MRUFO IGhpYmVyX3VzYWdlX2tsdWRnZTsNCiB9IFhFTlBDSV9QRE9fREVWSUNFX0RBVEEsICpQWEVOUENJ X1BET19ERVZJQ0VfREFUQTsNCiANCkBAIC00NjksMTEgKzQ2OSwxMSBAQAogTlRTVEFUVVMNCiBF dnRDaG5fVW5tYXNrKFBWT0lEIENvbnRleHQsIGV2dGNobl9wb3J0X3QgUG9ydCk7DQogTlRTVEFU VVMNCi1FdnRDaG5fQmluZChQVk9JRCBDb250ZXh0LCBldnRjaG5fcG9ydF90IFBvcnQsIFBYRU5f RVZUQ0hOX1NFUlZJQ0VfUk9VVElORSBTZXJ2aWNlUm91dGluZSwgUFZPSUQgU2VydmljZUNvbnRl eHQsIFVMT05HIGZsYWdzKTsNCitFdnRDaG5fQmluZChQVk9JRCBDb250ZXh0LCBldnRjaG5fcG9y dF90IFBvcnQsIFBYRU5fRVZUQ0hOX1NFUlZJQ0VfUk9VVElORSBTZXJ2aWNlUm91dGluZSwgUFZP SUQgU2VydmljZUNvbnRleHQpOw0KIE5UU1RBVFVTDQotRXZ0Q2huX0JpbmREcGMoUFZPSUQgQ29u dGV4dCwgZXZ0Y2huX3BvcnRfdCBQb3J0LCBQWEVOX0VWVENITl9TRVJWSUNFX1JPVVRJTkUgU2Vy dmljZVJvdXRpbmUsIFBWT0lEIFNlcnZpY2VDb250ZXh0LCBVTE9ORyBmbGFncyk7DQorRXZ0Q2hu X0JpbmREcGMoUFZPSUQgQ29udGV4dCwgZXZ0Y2huX3BvcnRfdCBQb3J0LCBQWEVOX0VWVENITl9T RVJWSUNFX1JPVVRJTkUgU2VydmljZVJvdXRpbmUsIFBWT0lEIFNlcnZpY2VDb250ZXh0KTsNCiBO VFNUQVRVUw0KLUV2dENobl9CaW5kSXJxKFBWT0lEIENvbnRleHQsIGV2dGNobl9wb3J0X3QgUG9y dCwgVUxPTkcgdmVjdG9yLCBQQ0hBUiBkZXNjcmlwdGlvbiwgVUxPTkcgZmxhZ3MpOw0KK0V2dENo bl9CaW5kSXJxKFBWT0lEIENvbnRleHQsIGV2dGNobl9wb3J0X3QgUG9ydCwgVUxPTkcgdmVjdG9y LCBQQ0hBUiBkZXNjcmlwdGlvbik7DQogZXZ0Y2huX3BvcnRfdA0KIEV2dENobl9BbGxvY0lwaShQ Vk9JRCBjb250ZXh0LCBVTE9ORyB2Y3B1KTsNCiBOVFNUQVRVUw0KZGlmZiAtcnVOIC4uL3dpbi1w dmRyaXZlcnMuaGcveGVucGNpL3hlbnBjaV9wZG8uYyB4ZW5wY2kveGVucGNpX3Bkby5jCi0tLSAu Li93aW4tcHZkcml2ZXJzLmhnL3hlbnBjaS94ZW5wY2lfcGRvLmMJMjAxMS0wMi0yNiAyMDo0Mzox Mi4wMDAwMDAwMDAgKzA4MDAKKysrIHhlbnBjaS94ZW5wY2lfcGRvLmMJMjAxMS0wMi0yNiAyMDo0 NDozMy4wMDAwMDAwMDAgKzA4MDAKQEAgLTI1MSw3ICsyNTEsNyBAQAogICBQWEVOUENJX1BET19E RVZJQ0VfREFUQSB4cHBkZCA9IEdldFhwcGRkKGRldmljZSk7DQogICBQWEVOUENJX0RFVklDRV9E QVRBIHhwZGQgPSBHZXRYcGRkKHhwcGRkLT53ZGZfZGV2aWNlX2J1c19mZG8pOw0KICAgDQotICBy ZXR1cm4gRXZ0Q2huX0JpbmQoeHBkZCwgUG9ydCwgU2VydmljZVJvdXRpbmUsIFNlcnZpY2VDb250 ZXh0LCBFVlRfQUNUSU9OX0ZMQUdTX0RFRkFVTFQpOw0KKyAgcmV0dXJuIEV2dENobl9CaW5kKHhw ZGQsIFBvcnQsIFNlcnZpY2VSb3V0aW5lLCBTZXJ2aWNlQ29udGV4dCk7DQogfQ0KIA0KIHN0YXRp YyBOVFNUQVRVUw0KQEAgLTI2MSw3ICsyNjEsNyBAQAogICBQWEVOUENJX1BET19ERVZJQ0VfREFU QSB4cHBkZCA9IEdldFhwcGRkKGRldmljZSk7DQogICBQWEVOUENJX0RFVklDRV9EQVRBIHhwZGQg PSBHZXRYcGRkKHhwcGRkLT53ZGZfZGV2aWNlX2J1c19mZG8pOw0KICAgDQotICByZXR1cm4gRXZ0 Q2huX0JpbmREcGMoeHBkZCwgUG9ydCwgU2VydmljZVJvdXRpbmUsIFNlcnZpY2VDb250ZXh0LCBF VlRfQUNUSU9OX0ZMQUdTX0RFRkFVTFQpOw0KKyAgcmV0dXJuIEV2dENobl9CaW5kRHBjKHhwZGQs IFBvcnQsIFNlcnZpY2VSb3V0aW5lLCBTZXJ2aWNlQ29udGV4dCk7DQogfQ0KIA0KIHN0YXRpYyBO VFNUQVRVUw0KQEAgLTUwMiw3ICs1MDIsOSBAQAogICAgIHsNCiAgICAgICAvKiBpdCdzIHBvc3Np YmxlIHRoYXQgdGhlIHdvcmtpdGVtcyBhcmUgYmxvY2tlZCBiZWNhdXNlIHRoZSBwYWdlZmlsZSBp c24ndCBhdmFpbGFibGUuIExldHMganVzdCByZS1yZWFkIHRoZSBiYWNrZW5kIHZhbHVlIGZvciBu b3cgKi8NCiAgICAgICBYZW5QY2lfVXBkYXRlQmFja2VuZFN0YXRlKGRldmljZSk7DQotICAgICAg cmVtYWluaW5nIC09IHRoaXN3YWl0Ow0KKyAgICAgIA0KKyAgICAgIC8vIHRoaXMgY29kZSBpcyBj b21tZW50ZWQgYmVjYXVzZSBpdCBjYW4gY2F1c2UgdGhlIFZNIHdhaXR0aW5nIGZvcmV2ZXIgDQor ICAgICAgLy9yZW1haW5pbmcgLT0gdGhpc3dhaXQ7DQogICAgICAgaWYgKHJlbWFpbmluZyA9PSAw KQ0KICAgICAgIHsNCiAgICAgICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgVGltZWQg b3V0IHdhaXRpbmcgZm9yICVkIVxuIiwgYmFja2VuZF9zdGF0ZV9yZXNwb25zZSkpOw0KQEAgLTU4 MSw4ICs1ODMsOCBAQAogICAgICAgICBFdnRDaG5fQ2xvc2UoeHBkZCwgUHRyVG9VbG9uZyh2YWx1 ZSkpOw0KICAgICAgICAgYnJlYWs7DQogICAgICAgY2FzZSBYRU5fSU5JVF9UWVBFX0dSQU5UX0VO VFJJRVM6DQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHRyVG9VbG9uZyh2YWx1ZSk7IGkrKykN Ci0gICAgICAgICAgR250VGJsX0VuZEFjY2Vzcyh4cGRkLCAoKGdyYW50X3JlZl90ICopdmFsdWUy KVtpXSwgRkFMU0UsIFB0clRvVWxvbmcoc2V0dGluZykpOw0KKyAgICAgICAgZm9yIChpID0gMDsg aSA8IFB0clRvVWxvbmcoc2V0dGluZyk7IGkrKykNCisgICAgICAgICAgR250VGJsX0VuZEFjY2Vz cyh4cGRkLCAoKGdyYW50X3JlZl90ICopdmFsdWUpW2ldLCBGQUxTRSwgKFVMT05HKSdYUERPJyk7 DQogICAgICAgICBicmVhazsNCiAgICAgICB9DQogICAgIH0NCkBAIC02NzEsNiArNjczLDcgQEAK ICAgaW5fcHRyID0gc3JjOw0KICAgd2hpbGUoKHR5cGUgPSBHRVRfWEVOX0lOSVRfUkVRKCZpbl9w dHIsIChQVk9JRCkmc2V0dGluZywgKFBWT0lEKSZ2YWx1ZSwgKFBWT0lEKSZ2YWx1ZTIpKSAhPSBY RU5fSU5JVF9UWVBFX0VORCkNCiAgIHsNCisvL0tkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAg aW5fcHRyID0gJXAsIHR5cGUgPSAlZFxuIiwgaW5fcHRyLCB0eXBlKSk7DQogICAgIEFERF9YRU5f SU5JVF9SRVEoJnhwcGRkLT5yZXF1ZXN0ZWRfcmVzb3VyY2VzX3B0ciwgdHlwZSwgc2V0dGluZywg dmFsdWUsIHZhbHVlMik7DQogDQogICAgIHN3aXRjaCAodHlwZSkNCkBAIC02OTcsNyArNzAwLDYg QEAKICAgICAgICAgICBBRERfWEVOX0lOSVRfUlNQKCZ4cHBkZC0+YXNzaWduZWRfcmVzb3VyY2Vz X3B0ciwgdHlwZSwgc2V0dGluZywgcmluZywgTlVMTCk7DQogICAgICAgICAgIC8vIGFkZCB0aGUg Z3JhbnQgZW50cnkgdG9vIHNvIGl0IGdldHMgZnJlZWQgYXV0b21hdGljYWxseQ0KICAgICAgICAg ICBfX0FERF9YRU5fSU5JVF9VQ0hBUigmeHBwZGQtPmFzc2lnbmVkX3Jlc291cmNlc19wdHIsIFhF Tl9JTklUX1RZUEVfR1JBTlRfRU5UUklFUyk7DQotICAgICAgICAgIF9fQUREX1hFTl9JTklUX1VM T05HKCZ4cHBkZC0+YXNzaWduZWRfcmVzb3VyY2VzX3B0ciwgKFVMT05HKSdYUERPJyk7DQogICAg ICAgICAgIF9fQUREX1hFTl9JTklUX1VMT05HKCZ4cHBkZC0+YXNzaWduZWRfcmVzb3VyY2VzX3B0 ciwgMSk7DQogICAgICAgICAgIF9fQUREX1hFTl9JTklUX1VMT05HKCZ4cHBkZC0+YXNzaWduZWRf cmVzb3VyY2VzX3B0ciwgZ3JlZik7DQogICAgICAgICB9DQpAQCAtNzI2LDE3ICs3MjgsMTcgQEAK ICAgICAgICAgQUREX1hFTl9JTklUX1JTUCgmeHBwZGQtPmFzc2lnbmVkX3Jlc291cmNlc19wdHIs IHR5cGUsIHNldHRpbmcsIFVsb25nVG9QdHIoZXZlbnRfY2hhbm5lbCksIE5VTEwpOw0KICAgICAg ICAgaWYgKHR5cGUgPT0gWEVOX0lOSVRfVFlQRV9FVkVOVF9DSEFOTkVMX0lSUSkNCiAgICAgICAg IHsNCi0gICAgICAgICAgRXZ0Q2huX0JpbmRJcnEoeHBkZCwgZXZlbnRfY2hhbm5lbCwgeHBwZGQt PmlycV92ZWN0b3IsIHBhdGgsIEVWVF9BQ1RJT05fRkxBR1NfREVGQVVMVCk7DQorICAgICAgICAg IEV2dENobl9CaW5kSXJxKHhwZGQsIGV2ZW50X2NoYW5uZWwsIHhwcGRkLT5pcnFfdmVjdG9yLCBw YXRoKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gWEVOX0lOSVRfVFlQ RV9FVkVOVF9DSEFOTkVMX0RQQykNCiAgICAgICAgIHsNCiAgICAgICAgICAgI3ByYWdtYSB3YXJu aW5nKHN1cHByZXNzOjQwNTUpDQotICAgICAgICAgIEV2dENobl9CaW5kRHBjKHhwZGQsIGV2ZW50 X2NoYW5uZWwsIChQWEVOX0VWVENITl9TRVJWSUNFX1JPVVRJTkUpdmFsdWUsIHZhbHVlMiwgRVZU X0FDVElPTl9GTEFHU19ERUZBVUxUKTsNCisgICAgICAgICAgRXZ0Q2huX0JpbmREcGMoeHBkZCwg ZXZlbnRfY2hhbm5lbCwgKFBYRU5fRVZUQ0hOX1NFUlZJQ0VfUk9VVElORSl2YWx1ZSwgdmFsdWUy KTsNCiAgICAgICAgIH0NCiAgICAgICAgIGVsc2UNCiAgICAgICAgIHsNCiAgICAgICAgICAgI3By YWdtYSB3YXJuaW5nKHN1cHByZXNzOjQwNTUpDQotICAgICAgICAgIEV2dENobl9CaW5kKHhwZGQs IGV2ZW50X2NoYW5uZWwsIChQWEVOX0VWVENITl9TRVJWSUNFX1JPVVRJTkUpdmFsdWUsIHZhbHVl MiwgRVZUX0FDVElPTl9GTEFHU19ERUZBVUxUKTsNCisgICAgICAgICAgRXZ0Q2huX0JpbmQoeHBk ZCwgZXZlbnRfY2hhbm5lbCwgKFBYRU5fRVZUQ0hOX1NFUlZJQ0VfUk9VVElORSl2YWx1ZSwgdmFs dWUyKTsNCiAgICAgICAgIH0NCiAgICAgICB9DQogICAgICAgZWxzZQ0KQEAgLTgzMCwxMyArODMy LDExIEBACiAgICAgICAvL0tkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgWEVOX0lOSVRfVFlQ RV9HUkFOVF9FTlRSSUVTIC0gJWRcbiIsIFB0clRvVWxvbmcodmFsdWUpKSk7DQogICAgICAgX19B RERfWEVOX0lOSVRfVUNIQVIoJm91dF9wdHIsIHR5cGUpOw0KICAgICAgIF9fQUREX1hFTl9JTklU X1VDSEFSKCZ4cHBkZC0+YXNzaWduZWRfcmVzb3VyY2VzX3B0ciwgdHlwZSk7DQotICAgICAgX19B RERfWEVOX0lOSVRfVUxPTkcoJm91dF9wdHIsIFB0clRvVWxvbmcoc2V0dGluZykpOw0KLSAgICAg IF9fQUREX1hFTl9JTklUX1VMT05HKCZ4cHBkZC0+YXNzaWduZWRfcmVzb3VyY2VzX3B0ciwgUHRy VG9VbG9uZyhzZXR0aW5nKSk7DQogICAgICAgX19BRERfWEVOX0lOSVRfVUxPTkcoJm91dF9wdHIs IFB0clRvVWxvbmcodmFsdWUpKTsNCiAgICAgICBfX0FERF9YRU5fSU5JVF9VTE9ORygmeHBwZGQt PmFzc2lnbmVkX3Jlc291cmNlc19wdHIsIFB0clRvVWxvbmcodmFsdWUpKTsNCiAgICAgICBmb3Ig KGkgPSAwOyBpIDwgUHRyVG9VbG9uZyh2YWx1ZSk7IGkrKykNCiAgICAgICB7DQotICAgICAgICBn cmVmID0gR250VGJsX0dldFJlZih4cGRkLCBQdHJUb1Vsb25nKHNldHRpbmcpKTsNCisgICAgICAg IGdyZWYgPSBHbnRUYmxfR2V0UmVmKHhwZGQsICdYUERPJyk7DQogICAgICAgICBfX0FERF9YRU5f SU5JVF9VTE9ORygmb3V0X3B0ciwgZ3JlZik7DQogICAgICAgICBfX0FERF9YRU5fSU5JVF9VTE9O RygmeHBwZGQtPmFzc2lnbmVkX3Jlc291cmNlc19wdHIsIGdyZWYpOw0KICAgICAgIH0NCkBAIC0x MTA5LDE0ICsxMTA5LDEzIEBACiAgIHsNCiAgIH0NCiANCi0jaWYgMA0KICAgaWYgKHByZXZpb3Vz X3N0YXRlID09IFdkZlBvd2VyRGV2aWNlUHJlcGFyZUZvckhpYmVybmF0aW9uIHx8IHByZXZpb3Vz X3N0YXRlID09IFdkZlBvd2VyRGV2aWNlRDMgfHwgcHJldmlvdXNfc3RhdGUgPT0gV2RmUG93ZXJE ZXZpY2VEM0ZpbmFsKQ0KICAgew0KICAgICB4cHBkZC0+cmVxdWVzdGVkX3Jlc291cmNlc19wdHIg PSB4cHBkZC0+cmVxdWVzdGVkX3Jlc291cmNlc19zdGFydDsNCiAgICAgeHBwZGQtPmFzc2lnbmVk X3Jlc291cmNlc19zdGFydCA9IHhwcGRkLT5hc3NpZ25lZF9yZXNvdXJjZXNfcHRyID0gRXhBbGxv Y2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgUEFHRV9TSVpFLCBYRU5QQ0lfUE9PTF9UQUcp Ow0KICAgfQ0KKw0KICAgWGVuQ29uZmlnX0luaXRDb25maWdQYWdlKGRldmljZSk7DQotI2VuZGlm DQogDQogICBzdGF0dXMgPSBYZW5QY2lfR2V0QmFja2VuZEFuZEFkZFdhdGNoKGRldmljZSk7DQog ICBpZiAoIU5UX1NVQ0NFU1Moc3RhdHVzKSkNCkBAIC0xMTI1LDMxICsxMTI0LDcgQEAKICAgICBG VU5DVElPTl9FWElUX1NUQVRVUyhzdGF0dXMpOw0KICAgICByZXR1cm4gc3RhdHVzOw0KICAgfQ0K LQ0KLSAgaWYgKHByZXZpb3VzX3N0YXRlID09IFdkZlBvd2VyRGV2aWNlRDMgfHwgcHJldmlvdXNf c3RhdGUgPT0gV2RmUG93ZXJEZXZpY2VEM0ZpbmFsKQ0KLSAgew0KLSAgICB4cHBkZC0+cmVxdWVz dGVkX3Jlc291cmNlc19wdHIgPSB4cHBkZC0+cmVxdWVzdGVkX3Jlc291cmNlc19zdGFydDsNCi0g ICAgeHBwZGQtPmFzc2lnbmVkX3Jlc291cmNlc19zdGFydCA9IHhwcGRkLT5hc3NpZ25lZF9yZXNv dXJjZXNfcHRyID0gRXhBbGxvY2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgUEFHRV9TSVpF LCBYRU5QQ0lfUE9PTF9UQUcpOw0KLSAgICBYZW5Db25maWdfSW5pdENvbmZpZ1BhZ2UoZGV2aWNl KTsNCi0gICAgc3RhdHVzID0gWGVuUGNpX1hlbkNvbmZpZ0RldmljZShkZXZpY2UpOw0KLSAgfQ0K LSAgZWxzZSBpZiAocHJldmlvdXNfc3RhdGUgPT0gV2RmUG93ZXJEZXZpY2VQcmVwYXJlRm9ySGli ZXJuYXRpb24pDQotICB7DQotICAgIFBWT0lEIHNyYywgZHN0Ow0KLSAgICANCi0gICAgQUREX1hF Tl9JTklUX1JFUSgmeHBwZGQtPnJlcXVlc3RlZF9yZXNvdXJjZXNfcHRyLCBYRU5fSU5JVF9UWVBF X0VORCwgTlVMTCwgTlVMTCwgTlVMTCk7DQotICAgIHNyYyA9IHhwcGRkLT5yZXF1ZXN0ZWRfcmVz b3VyY2VzX3N0YXJ0Ow0KLSAgICB4cHBkZC0+cmVxdWVzdGVkX3Jlc291cmNlc19wdHIgPSB4cHBk ZC0+cmVxdWVzdGVkX3Jlc291cmNlc19zdGFydCA9IEV4QWxsb2NhdGVQb29sV2l0aFRhZyhOb25Q YWdlZFBvb2wsIFBBR0VfU0laRSwgWEVOUENJX1BPT0xfVEFHKTs7DQotICAgIHhwcGRkLT5hc3Np Z25lZF9yZXNvdXJjZXNfcHRyID0geHBwZGQtPmFzc2lnbmVkX3Jlc291cmNlc19zdGFydDsNCi0N Ci0gICAgZHN0ID0gTW1NYXBJb1NwYWNlKHhwcGRkLT5jb25maWdfcGFnZV9waHlzLCB4cHBkZC0+ Y29uZmlnX3BhZ2VfbGVuZ3RoLCBNbU5vbkNhY2hlZCk7DQotDQotICAgIHN0YXR1cyA9IFhlblBj aV9YZW5Db25maWdEZXZpY2VTcGVjaWZ5QnVmZmVycyhkZXZpY2UsIHNyYywgZHN0KTsNCi0NCi0g ICAgTW1Vbm1hcElvU3BhY2UoZHN0LCB4cHBkZC0+Y29uZmlnX3BhZ2VfbGVuZ3RoKTsNCi0gICAg RXhGcmVlUG9vbFdpdGhUYWcoc3JjLCBYRU5QQ0lfUE9PTF9UQUcpOw0KLSAgfQ0KLQ0KKyAgc3Rh dHVzID0gWGVuUGNpX1hlbkNvbmZpZ0RldmljZShkZXZpY2UpOw0KICAgaWYgKCFOVF9TVUNDRVNT KHN0YXR1cykpDQogICB7DQogICAgIFJ0bFN0cmluZ0NiUHJpbnRmQShwYXRoLCBBUlJBWV9TSVpF KHBhdGgpLCAiJXMvc3RhdGUiLCB4cHBkZC0+YmFja2VuZF9wYXRoKTsNCkBAIC0xNDUxLDcgKzE0 MjYsNyBAQAogICAgIEtkUHJpbnQoKF9fRFJJVkVSX05BTUUgIiAgICAgV2RmRGV2aWNlQWRkUXVl cnlJbnRlcmZhY2UgZmFpbGVkIC0gJTA4eFxuIiwgc3RhdHVzKSk7DQogICAgIHJldHVybiBzdGF0 dXM7DQogICB9DQotDQorICANCiAgIFJ0bFN0cmluZ0NiQ29weUEoeHBwZGQtPnBhdGgsIEFSUkFZ X1NJWkUoeHBwZGQtPnBhdGgpLCBpZGVudGlmaWNhdGlvbi0+cGF0aCk7DQogICBSdGxTdHJpbmdD YkNvcHlBKHhwcGRkLT5kZXZpY2UsIEFSUkFZX1NJWkUoeHBwZGQtPmRldmljZSksIGlkZW50aWZp Y2F0aW9uLT5kZXZpY2UpOw0KICAgeHBwZGQtPmluZGV4ID0gaWRlbnRpZmljYXRpb24tPmluZGV4 Ow0KQEAgLTE1MDEsNyArMTQ3Niw2IEBACiAgIFBWT0lEIHNldHRpbmc7DQogICBQVk9JRCB2YWx1 ZTsNCiAgIFBWT0lEIHZhbHVlMjsNCi0gIGludCBpOw0KIA0KICAgS2RQcmludCgoX19EUklWRVJf TkFNRSAiIC0tPiAiIF9fRlVOQ1RJT05fXyAiICglcylcbiIsIHhwcGRkLT5wYXRoKSk7DQogDQpA QCAtMTUyMywyNSArMTQ5NywxOCBAQAogICAgICAgew0KICAgICAgICAgc3dpdGNoICh0eXBlKQ0K ICAgICAgICAgew0KLSAgICAgICAgY2FzZSBYRU5fSU5JVF9UWVBFX1JJTkc6IC8qIGZyb250ZW5k IHJpbmcgKi8NCi0gICAgICAgICAgRnJlZVBhZ2VzKHZhbHVlKTsNCi0gICAgICAgICAgYnJlYWs7 DQogICAgICAgICBjYXNlIFhFTl9JTklUX1RZUEVfRVZFTlRfQ0hBTk5FTDogLyogZnJvbnRlbmQg ZXZlbnQgY2hhbm5lbCAqLw0KICAgICAgICAgY2FzZSBYRU5fSU5JVF9UWVBFX0VWRU5UX0NIQU5O RUxfRFBDOiAvKiBmcm9udGVuZCBldmVudCBjaGFubmVsIGJvdW5kIHRvIGRwYyAqLw0KICAgICAg ICAgY2FzZSBYRU5fSU5JVF9UWVBFX0VWRU5UX0NIQU5ORUxfSVJROiAvKiBmcm9udGVuZCBldmVu dCBjaGFubmVsIGJvdW5kIHRvIGlycSAqLw0KICAgICAgICAgICBFdnRDaG5fVW5iaW5kKHhwZGQs IFB0clRvVWxvbmcodmFsdWUpKTsNCiAgICAgICAgICAgRXZ0Q2huX0Nsb3NlKHhwZGQsIFB0clRv VWxvbmcodmFsdWUpKTsNCiAgICAgICAgICAgYnJlYWs7DQotICAgICAgICBjYXNlIFhFTl9JTklU X1RZUEVfR1JBTlRfRU5UUklFUzoNCi0gICAgICAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpUHRy VG9VbG9uZyh2YWx1ZSk7IGkrKykNCi0gICAgICAgICAgICBHbnRUYmxfRW5kQWNjZXNzKHhwZGQs ICgoZ3JhbnRfcmVmX3QgKil2YWx1ZTIpW2ldLCBGQUxTRSwgUHRyVG9VbG9uZyhzZXR0aW5nKSk7 DQotICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgfQ0KICAgICAgIH0NCiAgICAgfQ0KIA0KICAg ICBSdGxTdHJpbmdDYlByaW50ZkEocGF0aCwgQVJSQVlfU0laRShwYXRoKSwgIiVzL3N0YXRlIiwg eHBwZGQtPmJhY2tlbmRfcGF0aCk7DQotICAgIFhlbkJ1c19SZW1XYXRjaCh4cGRkLCBYQlRfTklM LCBwYXRoLCBYZW5QY2lfQmFja2VuZFN0YXRlSGFuZGxlciwgZGV2aWNlKTsgIA0KKyAgICBYZW5C dXNfUmVtV2F0Y2goeHBkZCwgWEJUX05JTCwgcGF0aCwgWGVuUGNpX0JhY2tlbmRTdGF0ZUhhbmRs ZXIsIHhwcGRkKTsgIA0KICAgfQ0KICAgZWxzZQ0KICAgew0KQEAgLTE1ODYsOSArMTU1Myw5IEBA CiAgICAgICBzcmMgPSB4cHBkZC0+cmVxdWVzdGVkX3Jlc291cmNlc19zdGFydDsNCiAgICAgICB4 cHBkZC0+cmVxdWVzdGVkX3Jlc291cmNlc19wdHIgPSB4cHBkZC0+cmVxdWVzdGVkX3Jlc291cmNl c19zdGFydCA9IEV4QWxsb2NhdGVQb29sV2l0aFRhZyhOb25QYWdlZFBvb2wsIFBBR0VfU0laRSwg WEVOUENJX1BPT0xfVEFHKTs7DQogICAgICAgeHBwZGQtPmFzc2lnbmVkX3Jlc291cmNlc19wdHIg PSB4cHBkZC0+YXNzaWduZWRfcmVzb3VyY2VzX3N0YXJ0Ow0KLQ0KKyAgICAgIA0KICAgICAgIGRz dCA9IE1tTWFwSW9TcGFjZSh4cHBkZC0+Y29uZmlnX3BhZ2VfcGh5cywgeHBwZGQtPmNvbmZpZ19w YWdlX2xlbmd0aCwgTW1Ob25DYWNoZWQpOw0KLQ0KKyAgICAgIA0KICAgICAgIHN0YXR1cyA9IFhl blBjaV9YZW5Db25maWdEZXZpY2VTcGVjaWZ5QnVmZmVycyhkZXZpY2UsIHNyYywgZHN0KTsNCiAN CiAgICAgICBNbVVubWFwSW9TcGFjZShkc3QsIHhwcGRkLT5jb25maWdfcGFnZV9sZW5ndGgpOw0K ZGlmZiAtcnVOIC4uL3dpbi1wdmRyaXZlcnMuaGcveGVucGNpL3hlbnBjaV9zbGVlcC5jIHhlbnBj aS94ZW5wY2lfc2xlZXAuYwotLS0gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5wY2kveGVucGNpX3Ns ZWVwLmMJMTk3MC0wMS0wMSAwODowMDowMC4wMDAwMDAwMDAgKzA4MDAKKysrIHhlbnBjaS94ZW5w Y2lfc2xlZXAuYwkyMDExLTAyLTI2IDIwOjQ0OjMzLjAwMDAwMDAwMCArMDgwMApAQCAtMCwwICsx LDIzIEBACisjaW5jbHVkZSAieGVucGNpX3NsZWVwLmgiDQorDQorVk9JRCBQdldhaXRNaWNyb1Nl Y29uZChVTE9ORyB1bE1pcmNvU2Vjb25kKQ0KK3sNCisgICAgS1RJTUVSIGtUaW1lcjsNCisgICAg TEFSR0VfSU5URUdFUiB0aW1lb3V0Ow0KKyAgICBLZUluaXRpYWxpemVUaW1lcigma1RpbWVyKTsN CisgICAgdGltZW91dCA9IFJ0bENvbnZlcnRMb25nVG9MYXJnZUludGVnZXIodWxNaXJjb1NlY29u ZCAqIC0xMCk7DQorICAgIA0KKyAgICBLZVNldFRpbWVyKCZrVGltZXIsIHRpbWVvdXQsIE5VTEwp Ow0KKyAgICBLZVdhaXRGb3JTaW5nbGVPYmplY3QoJmtUaW1lciwgRXhlY3V0aXZlLCBLZXJuZWxN b2RlLCBGQUxTRSwgTlVMTCk7DQorfQ0KKw0KK3ZvaWQgUHZHZXRUaWNrQ291bnQoUFVMT05HIG1z ZWMpDQorew0KKyAgICBMQVJHRV9JTlRFR0VSIHRpY2tfY291bnQ7DQorICAgIFVMT05HIG15aW5j ID0gS2VRdWVyeVRpbWVJbmNyZW1lbnQoKTsNCisgICAgS2VRdWVyeVRpY2tDb3VudCgmdGlja19j b3VudCk7DQorICAgIHRpY2tfY291bnQuUXVhZFBhcnQgKj0gbXlpbmM7DQorICAgIHRpY2tfY291 bnQuUXVhZFBhcnQgLz0gIDEwMDAwOw0KKyAgICAqbXNlYyA9IHRpY2tfY291bnQuTG93UGFydDsN Cit9DQorDQpkaWZmIC1ydU4gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5wY2kveGVucGNpX3NsZWVw LmggeGVucGNpL3hlbnBjaV9zbGVlcC5oCi0tLSAuLi93aW4tcHZkcml2ZXJzLmhnL3hlbnBjaS94 ZW5wY2lfc2xlZXAuaAkxOTcwLTAxLTAxIDA4OjAwOjAwLjAwMDAwMDAwMCArMDgwMAorKysgeGVu cGNpL3hlbnBjaV9zbGVlcC5oCTIwMTEtMDItMjYgMjA6NDQ6MzMuMDAwMDAwMDAwICswODAwCkBA IC0wLDAgKzEsMTQgQEAKKyNpZiAhZGVmaW5lZChfWEVOUENJU0xFRVBfSF8pDQorI2RlZmluZSBf WEVOUENJU0xFRVBfSF8NCisNCisjZGVmaW5lIERES0FQSQ0KKyNpbmNsdWRlIDxudGRkay5oPg0K KyNpbmNsdWRlIDx3ZG0uaD4NCisjZGVmaW5lIE5UU1RSU0FGRV9MSUINCisjaW5jbHVkZSA8bnRz dHJzYWZlLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKw0KK1ZPSUQgUHZXYWl0TWljcm9TZWNv bmQoVUxPTkcgdWxNaXJjb1NlY29uZCk7DQorVk9JRCBQdkdldFRpY2tDb3VudChQVUxPTkcgbXNl Yyk7DQorDQorI2VuZGlmDQpkaWZmIC1ydU4gLi4vd2luLXB2ZHJpdmVycy5oZy94ZW5wY2kveGVu cG9kLmggeGVucGNpL3hlbnBvZC5oCi0tLSAuLi93aW4tcHZkcml2ZXJzLmhnL3hlbnBjaS94ZW5w b2QuaAkxOTcwLTAxLTAxIDA4OjAwOjAwLjAwMDAwMDAwMCArMDgwMAorKysgeGVucGNpL3hlbnBv ZC5oCTIwMTEtMDItMjYgMjA6NDQ6MzMuMDAwMDAwMDAwICswODAwCkBAIC0wLDAgKzEsMTQgQEAK KyNpZiAhZGVmaW5lZChfWEVOUE9EX0hfKQorI2RlZmluZSBfWEVOUE9EX0hfCisKKyNkZWZpbmUg WEVOTUVNX2dldF9wb2RfdGFyZ2V0IDE3CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBVTE9ORyB0 YXJnZXRfcGFnZXM7CisgICAgVUxPTkcgdG90X3BhZ2VzOworICAgIFVMT05HIHBvZF9jYWNoZV9w YWdlczsKKyAgICBVTE9ORyBwb2RfZW50cmllczsKKyAgICBkb21pZF90IGRvbWlkOworfSBYRU5f UE9EX1RBUkdFVF9UOworCisjZW5kaWYK --_7937c4a5-1fac-41e2-9272-95c9e8d59a52_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --_7937c4a5-1fac-41e2-9272-95c9e8d59a52_--