[PATCH] OS/2 parallel port and scsi matching support

Yuri Dario (mc6530@mclink.it)
Thu, 23 Jul 1998 09:56:08 +0100

--_=_=_=IMA.BOUNDARY.EWJW1J138764=_=_=_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

Hi,

I have attached a first set of patches for

1) parallel support (part of PIO code and configure.in changes are from Rocco Caputo / troc@netrus.net)
2) support for sanei_scsi_find_devices;

But I don't know if PIO code works, because Rocco didn't tell it to me.

Bye,

Yuri Dario

/*
* member of TeamOS/2 - Italy
*/

--_=_=_=IMA.BOUNDARY.EWJW1J138764=_=_=_
Content-Type: application/octet-stream; name="patch1.073"
Content-Transfer-Encoding: base64

ZGlmZiAtdXJiQiBiYWNrZW5kL3FjYW0uYyBiYWNrZW5kL3FjYW0uYw0KLS0tIGJhY2tlbmQvcWNh
bS5jCVR1ZSBKYW4gMjcgMDg6Mzg6MTIgMTk5OA0KKysrIGJhY2tlbmQvcWNhbS5jCUZyaSBNYXkg
MjkgMTc6NDQ6MjAgMTk5OA0KQEAgLTIwMCwxMyArMjAwLDE4IEBADQogc3RhdGljIGNvbnN0IFNB
TkVfUmFuZ2UgYndfeV9yYW5nZSA9IHswLCAyNDEsIDF9OyANCiBzdGF0aWMgY29uc3QgU0FORV9S
YW5nZSBvZGRfYndfeV9yYW5nZSA9IHsxLCAyNDIsIDF9OyANCiANCi0jaWZkZWYgX19saW51eF9f
DQorI2lmIGRlZmluZWQoIF9fbGludXhfXykgfHwgSEFWRV9TWVNfSFdfSA0KIA0KLSNpZiBfX0dO
VV9MSUJSQVJZX18gLSAwIDwgNg0KLSMgaW5jbHVkZSA8YXNtL2lvLmg+DQotI2Vsc2UNCisjIGlm
IEhBVkVfU1lTX0lPX0gNCiAjIGluY2x1ZGUgPHN5cy9pby5oPg0KLSNlbmRpZg0KKyMgZWxpZiBI
QVZFX0FTTV9JT19IDQorIyAgaW5jbHVkZSA8YXNtL2lvLmg+DQorIyBlbGlmIEhBVkVfU1lTX0hX
X0gNCisjICBpbmNsdWRlIDxzeXMvaHcuaD4NCisjICBkZWZpbmUgaW5iKHApICAgICAgICBfaW5w
OChwKQ0KKyMgIGRlZmluZSBvdXRiKHYscCkgICAgIF9vdXRwOCgocCksKHYpKQ0KKyMgIGRlZmlu
ZSBpb3Blcm0oYixsLG8pIF9wb3J0YWNjZXNzKChiKSwoYikrKGwpLTEpDQorIyBlbmRpZg0KIA0K
ICNkZWZpbmUgcmVhZF9scGRhdGEoZCkJCWluYiAoKGQpLT5wb3J0KQ0KICNkZWZpbmUgcmVhZF9s
cHN0YXR1cyhkKQlpbmIgKChkKS0+cG9ydCArIDEpDQpAQCAtMjcxLDE4ICsyNzYsMjYgQEANCiBz
dGF0aWMgU0FORV9TdGF0dXMNCiBxY19sb2NrX3dhaXQgKFFDX0RldmljZSAqIHEsIGludCB3YWl0
KQ0KIHsNCisjaWZuZGVmIF9fRU1YX18NCiAgIHN0cnVjdCBmbG9jayBzZmw7DQorI2VuZGlmDQog
DQogICBEQkcoMywgInFjX2xvY2tfd2FpdDogYWNxdWlyaW5nIGxvY2sgZm9yIDB4JXhcbiIsIHEt
PnBvcnQpOw0KIA0KKyNpZm5kZWYgX19FTVhfXw0KICAgbWVtc2V0ICgmc2ZsLCAwLCBzaXplb2Yg
KHNmbCkpOw0KKyNlbmRpZg0KIA0KICAgaWYgKHEtPmxvY2tfZmQgPCAwKQ0KICAgICB7DQogICAg
ICAgY2hhciBsb2NrZmlsZVsxMjhdOw0KIA0KICAgICAgIHNwcmludGYgKGxvY2tmaWxlLCAiL3Rt
cC9MT0NLLnFjYW0uMHgleCIsIHEtPnBvcnQpOw0KLSAgICAgIHEtPmxvY2tfZmQgPSBvcGVuIChs
b2NrZmlsZSwgT19XUk9OTFkgfCBPX0NSRUFULCAwNjY2KTsNCisgICAgICBxLT5sb2NrX2ZkID0g
b3BlbiAobG9ja2ZpbGUsIE9fV1JPTkxZIHwgT19DUkVBVA0KKyNpZmRlZiBfX0VNWF9fDQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9fRVhDTA0KKyNlbmRp
Zg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAwNjY2KTsN
CiAgICAgICBpZiAocS0+bG9ja19mZCA8IDApDQogCXsNCiAJICBEQkcoMSwgInFjX2xvY2tfd2Fp
dDogZmFpbGVkIHRvIG9wZW4gJXMgKCVzKVxuIiwNCkBAIC0yOTIsNiArMzA1LDcgQEANCiANCiAg
ICAgfQ0KIA0KKyNpZm5kZWYgX19FTVhfXw0KICAgc2ZsLmxfdHlwZSA9IEZfV1JMQ0s7DQogICBp
ZiAoZmNudGwgKHEtPmxvY2tfZmQsIHdhaXQgPyBGX1NFVExLVyA6IEZfU0VUTEssICZzZmwpICE9
IDApDQogICAgIHsNCkBAIC0yOTksNiArMzEzLDcgQEANCiAJICBzdHJlcnJvciAoZXJybm8pKTsN
CiAgICAgICByZXR1cm4gU0FORV9TVEFUVVNfSU5WQUw7DQogICAgIH0NCisjZW5kaWYNCiANCiAg
IERCRygzLCAicWNfbG9ja193YWl0OiBnb3QgbG9jayBmb3IgMHgleFxuIiwgcS0+cG9ydCk7DQog
ICByZXR1cm4gU0FORV9TVEFUVVNfR09PRDsNCkBAIC0zMDcsMTUgKzMyMiwxOCBAQA0KIHN0YXRp
YyBTQU5FX1N0YXR1cw0KIHFjX3VubG9jayAoUUNfRGV2aWNlICpxKQ0KIHsNCisjaWZuZGVmIF9f
RU1YX18NCiAgIHN0cnVjdCBmbG9jayBzZmw7DQogDQogICBEQkcoMywgInFjX2xvY2tfd2FpdDog
cmVsZWFzaW5nIGxvY2sgZm9yIDB4JXhcbiIsIHEtPnBvcnQpOw0KIA0KICAgbWVtc2V0ICgmc2Zs
LCAwLCBzaXplb2YgKHNmbCkpOw0KKyNlbmRpZg0KIA0KICAgaWYgKHEtPmxvY2tfZmQgPCAwKQ0K
ICAgICByZXR1cm4gU0FORV9TVEFUVVNfSU5WQUw7CQkgLyogcG9ydCB3YXMgbm90IGxvY2tlZCAq
Lw0KIA0KKyNpZm5kZWYgX19FTVhfXw0KICAgLyogY2xlYXIgdGhlIGV4Y2x1c2l2ZSBsb2NrICov
DQogICBzZmwubF90eXBlID0gRl9VTkxDSzsNCiAgIGlmIChmY250bCAocS0+bG9ja19mZCwgRl9T
RVRMSywgJnNmbCkgIT0gMCkNCkBAIC0zMjQsNiArMzQyLDggQEANCiAJICBzdHJlcnJvciAoZXJy
bm8pKTsNCiAgICAgICByZXR1cm4gU0FORV9TVEFUVVNfSU5WQUw7DQogICAgIH0NCisjZW5kaWYN
CisNCiAgIHJldHVybiBTQU5FX1NUQVRVU19HT09EOw0KIH0NCiANCk9ubHkgaW4gYmFja2VuZDog
cWNhbS5sbw0KT25seSBpbiBiYWNrZW5kOiBxY2FtLm8NCk9ubHkgaW4gYmFja2VuZDogczkwMzYt
cy5jDQpPbmx5IGluIGJhY2tlbmQ6IHM5MDM2LXMubG8NCk9ubHkgaW4gYmFja2VuZDogczkwMzYt
cy5vDQpPbmx5IGluIGJhY2tlbmQ6IHM5MDM2LmxvDQpPbmx5IGluIGJhY2tlbmQ6IHM5MDM2Lm8N
Ck9ubHkgaW4gYmFja2VuZDogc2FuZV9zdHJzdGF0dXMubG8NCk9ubHkgaW4gYmFja2VuZDogc2Fu
ZV9zdHJzdGF0dXMubw0KT25seSBpbiBiYWNrZW5kOiBzYW5laV9zY3NpLmxvDQpPbmx5IGluIGJh
Y2tlbmQ6IHNhbmVpX3Njc2kubw0KT25seSBpbiBiYWNrZW5kOiBzbmFwc2Nhbi1zLmMNCk9ubHkg
aW4gYmFja2VuZDogc25hcHNjYW4tcy5sbw0KT25seSBpbiBiYWNrZW5kOiBzbmFwc2Nhbi1zLm8N
Ck9ubHkgaW4gYmFja2VuZDogc25hcHNjYW4ubG8NCk9ubHkgaW4gYmFja2VuZDogc25hcHNjYW4u
bw0KT25seSBpbiBiYWNrZW5kOiB0YW1hcmFjay1zLmMNCmRpZmYgLXVyYkIgY29uZmlndXJlLmlu
IGNvbmZpZ3VyZS5pbg0KLS0tIGNvbmZpZ3VyZS5pbglTYXQgTWF5IDE2IDA1OjUwOjI0IDE5OTgN
CisrKyBjb25maWd1cmUuaW4JRnJpIE1heSAyOSAxNzowNjo1NCAxOTk4DQpAQCAtMzksNyArMzks
NyBAQA0KIEFDX0NIRUNLX0hFQURFUlMoZmNudGwuaCB1bmlzdGQuaCBsaWJpbnRsLmggbGliYy5o
IHN5cy9kc3JlcS5oIHN5cy9zZWxlY3QuaCBcDQogICAgIHN5cy9zY2FuaW8uaCBzY3NpLmggc3lz
L3Njc2kuaCBzeXMvc2NzaWNtZC5oIHN5cy9zY3NpaW8uaCBcDQogICAgIGJzZC9kZXYvc2NzaXJl
Zy5oIHNjc2kvc2cuaCAvdXNyL3NyYy9saW51eC9pbmNsdWRlL3Njc2kvc2cuaCBpby9jYW0vY2Ft
LmggXA0KLSAgICBvczIuaCBzeXMvc29ja2V0Lmggc3lzL2lvLmggYXNtL2lvLmggZ3NjZGRzLmgg
XA0KKyAgICBvczIuaCBzeXMvc29ja2V0Lmggc3lzL2lvLmggYXNtL2lvLmggZ3NjZGRzLmggc3lz
L2h3Lmggc3lzL3R5cGVzLmggXA0KICAgICBzeXMvc2NzaS9zZ2RlZnMuaCBzeXMvc2NzaS90YXJn
ZXRzL3NjZ2lvLmggYXBvbGxvL3Njc2kuaCkNCiANCiBkbmwgQ2hlY2tzIGZvciB0eXBlZGVmcywg
c3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4NCkBAIC03MCwxMyArNzAs
MTQgQEANCiBBQ19DSEVDS19MSUIoaW50bCxnZXR0ZXh0KQ0KIEFDX0NIRUNLX0xJQihuc2wsZ2V0
aG9zdGJ5YWRkcikNCiBBQ19DSEVDS19MSUIoc29ja2V0LHNvY2tldCkNCitBQ19DSEVDS19MSUIo
c3lzbG9nLHN5c2xvZykgICAgICAgICAgICAgIyBPUy8yIG5lZWRzIHRoaXMNCiANCiBkbmwgQ2hl
Y2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucy4NCiBBTV9GVU5DX0FMTE9DQQ0KIEFDX0ZVTkNfTU1B
UA0KIEFDX0NIRUNLX0ZVTkNTKGF0ZXhpdCBpb3Blcm0gbWtkaXIgc2NzaXJlcV9lbnRlciBzaWdw
cm9jbWFzayBcDQogICAgIHN0cmR1cCBzdHJuZHVwIHN0cmZ0aW1lIHN0cnN0ciBzdHJzZXAgc3Ry
dG9kIHNucHJpbnRmIHVzbGVlcCBcDQotICAgIHN0cm5jYXNlY21wKQ0KKyAgICBzdHJuY2FzZWNt
cCBfcG9ydGFjY2VzcykNCiANCiBkbmwgaW5pdGlhbGl6ZSBsaWJ0b29sDQogQU1fUFJPR19MSUJU
T09MDQpAQCAtMTQwLDcgKzE0MSw3IEBADQogICBQSU5UPXBpbnQNCiBmaQ0KIEFDX1NVQlNUKFBJ
TlQpDQotaWYgdGVzdCAiJHthY19jdl9mdW5jX2lvcGVybX0iID0gIm5vIjsgdGhlbg0KK2lmIHRl
c3QgIiR7YWNfY3ZfZnVuY19pb3Blcm19IiA9ICJubyIgJiYgdGVzdCAiJHthY19jdl9mdW5jX19w
b3J0YWNjZXNzfSIgPSAibm8iOyB0aGVuDQogICBlY2hvICJkaXNhYmxpbmcgUXVpY2tDYW0gYmFj
a2VuZCINCiAgIFFDQU09DQogZWxzZQ0KZGlmZiAtdXJiQiBpbmNsdWRlL3NhbmUvY29uZmlnLmgu
aW4gaW5jbHVkZS9zYW5lL2NvbmZpZy5oLmluDQotLS0gaW5jbHVkZS9zYW5lL2NvbmZpZy5oLmlu
CUZyaSBNYXkgMTUgMDY6MjI6MzAgMTk5OA0KKysrIGluY2x1ZGUvc2FuZS9jb25maWcuaC5pbglG
cmkgTWF5IDI5IDE3OjAyOjQwIDE5OTgNCkBAIC0yNzIsNiArMjcyLDEyIEBADQogLyogRGVmaW5l
IGlmIHlvdSBoYXZlIHRoZSA8b3MyLmg+IGhlYWRlciBmaWxlLiAgKi8NCiAjdW5kZWYgSEFWRV9P
UzJfSA0KIA0KKy8qIERlZmluZSBpZiB5b3UgaGF2ZSBFTVgncyBzeXMvaHcuaCBoZWFkZXJzLiAq
Lw0KKyN1bmRlZiBIQVZFX1NZU19IV19IDQorDQorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHN5cy90
eXBlcy5oLiBPUy8yIHdhbnRzIHRoZW0gYmVmb3JlIHNlbGVjdC5oLCBldGMuICovDQorI3VuZGVm
IEhBVkVfU1lTX1RZUEVTX0gNCisNCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQu
aD4gaGVhZGVyIGZpbGUuICAqLw0KICN1bmRlZiBIQVZFX1VOSVNURF9IDQogDQpkaWZmIC11cmJC
IGxpYi91c2xlZXAuYyBsaWIvdXNsZWVwLmMNCi0tLSBsaWIvdXNsZWVwLmMJRnJpIEFwciAgMyAw
NToxNzoyNiAxOTk4DQorKysgbGliL3VzbGVlcC5jCUZyaSBNYXkgMjkgMTc6MjI6MTAgMTk5OA0K
QEAgLTIzLDYgKzIzLDEwIEBADQogI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KICNpbmNsdWRlIDxz
eXMvdGltZS5oPg0KIA0KKyNpZmRlZiBIQVZFX1NZU19TRUxFQ1RfSA0KKyMgaW5jbHVkZSA8c3lz
L3NlbGVjdC5oPg0KKyNlbmRpZg0KKw0KICNpZmRlZiBhcG9sbG8NCiAjIGluY2x1ZGUgPGFwb2xs
by9iYXNlLmg+DQogIyBpbmNsdWRlIDxhcG9sbG8vdGltZS5oPg0KT25seSBpbiBsaWI6IHVzbGVl
cC5sbw0KT25seSBpbiBsaWI6IHVzbGVlcC5vDQpPbmx5IGluIHNhbmUtMC43M2IzOiBsaWJ0b29s
DQpPbmx5IGluIHNhbmVpOiBzYW5laV9uZXQubw0KZGlmZiAtdXJiQiBzYW5laS9zYW5laV9waW8u
YyBzYW5laS9zYW5laV9waW8uYw0KLS0tIHNhbmVpL3NhbmVpX3Bpby5jCVRodSBBcHIgIDkgMTY6
NDI6MzIgMTk5OA0KKysrIHNhbmVpL3NhbmVpX3Bpby5jCUZyaSBNYXkgMjkgMTc6MjY6NDQgMTk5
OA0KQEAgLTU5LDYgKzU5LDEzIEBADQogIyBpbmNsdWRlIDxzeXMvaW8uaD4JLyogdXNlIHdoZXJl
IGF2YWlsYWJsZSAoZ2xpYmMgMi54LCBmb3IgZXhhbXBsZSkgKi8NCiAjZWxpZiBIQVZFX0FTTV9J
T19IDQogIyBpbmNsdWRlIDxhc20vaW8uaD4JCS8qIHVnbHksIGJ1dCBiYWNrd2FyZHMgY29tcGF0
aWJsZSAqLw0KKyNlbGlmIEhBVkVfU1lTX0hXX0ggICAgIC8qIE9TLzIgaGFyZHdhcmUgc3R1ZmYg
Ki8NCisNCisjaW5jbHVkZSA8c3lzL2h3Lmg+DQorI2RlZmluZSBpbmIocCkgICAgICAgIF9pbnA4
KHApDQorI2RlZmluZSBvdXRiKHYscCkgICAgIF9vdXRwOCgocCksKHYpKQ0KKyNkZWZpbmUgaW9w
ZXJtKGIsbCxvKSBfcG9ydGFjY2VzcygoYiksKGIpKyhsKS0xKQ0KKw0KICNlbGlmIGRlZmluZWQo
X19pMzg2X18pICAmJiBkZWZpbmVkIChfX0dOVUNfXykNCiANCiBzdGF0aWMgX19pbmxpbmVfXyB2
b2lkDQpPbmx5IGluIHNhbmVpOiBzYW5laV9waW8ubG8NCk9ubHkgaW4gc2FuZWk6IHNhbmVpX3Nh
dmVfdmFsdWVzLm8NCmRpZmYgLXVyYkIgc2FuZWkvc2FuZWlfc2NzaS5jIHNhbmVpL3NhbmVpX3Nj
c2kuYw0KLS0tIHNhbmVpL3NhbmVpX3Njc2kuYwlGcmkgTWF5IDE1IDA5OjEwOjI4IDE5OTgNCisr
KyBzYW5laS9zYW5laV9zY3NpLmMJU2F0IEp1biAgNiAxNzowMjoyNiAxOTk4DQpAQCAtNDgsNiAr
NDgsNyBAQA0KICNpbmNsdWRlIDxsYWxsb2NhLmg+DQogDQogI2luY2x1ZGUgPGFzc2VydC5oPg0K
KyNpbmNsdWRlIDxjdHlwZS5oPg0KICNpbmNsdWRlIDxlcnJuby5oPg0KICNpbmNsdWRlIDxmY250
bC5oPg0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCkBAIC0yNzgsNiArMjc5LDE3IEBADQogc3RhdGlj
IEhGSUxFIGRyaXZlcl9oYW5kbGUgPSAwOwkvKiBmaWxlIGhhbmRsZSBmb3IgZGV2aWNlIGRyaXZl
ciAqLw0KIHN0YXRpYyBQVk9JRCBhc3BpX2J1ZiA9IDA7CS8qIEJpZyBkYXRhIGJ1ZmZlciBsb2Nr
ZWQgYnkgZHJpdmVyLiAqLw0KIHN0YXRpYyBpbnQgYXNwaV9yZWZfY291bnQgPSAwOwkvKiAjIG9m
IGZkcyB1c2luZyBBU1BJICovDQorc3RhdGljIGNoYXIgdG1wQXNwaVsgTUFYUEFUSExFTl07ICAg
ICAgICAvLyBzY3NpIGNoYWluIHNjYW4NCisjZGVmaW5lIElOUVVJUlkJCQkJCTB4MTINCisjZGVm
aW5lIHNldF9pbnF1aXJ5X3JldHVybl9zaXplKGljYix2YWwpCWljYlsweDA0XT12YWwNCisjZGVm
aW5lIElOX3BlcmlwaF9kZXZ0eXBlX2NwdQkJCTB4MDMNCisjZGVmaW5lIElOX3BlcmlwaF9kZXZ0
eXBlX3NjYW5uZXIJCTB4MDYNCisjZGVmaW5lIGdldF9pbnF1aXJ5X3ZlbmRvcihpbiwgYnVmKQkJ
c3RybmNweShidWYsIGluICsgMHgwOCwgMHgwOCkNCisjZGVmaW5lIGdldF9pbnF1aXJ5X3Byb2R1
Y3QoaW4sIGJ1ZikJCXN0cm5jcHkoYnVmLCBpbiArIDB4MTAsIDB4MDEwKQ0KKyNkZWZpbmUgZ2V0
X2lucXVpcnlfdmVyc2lvbihpbiwgYnVmKQkJc3RybmNweShidWYsIGluICsgMHgyMCwgMHgwNCkN
CisjZGVmaW5lIGdldF9pbnF1aXJ5X3BlcmlwaF9kZXZ0eXBlKGluKQkJKGluWzBdICYgMHgxZikN
CisjZGVmaW5lIGdldF9pbnF1aXJ5X2FkZGl0aW9uYWxfbGVuZ3RoKGluKQlpblsweDA0XQ0KKyNk
ZWZpbmUgc2V0X2lucXVpcnlfbGVuZ3RoKG91dCxuKQkJb3V0WzB4MDRdPW4tNQ0KIA0KIC8qIE9w
ZW4gT1MyIEFTUEkgZHJpdmVyLg0KIA0KQEAgLTI5MSw2ICszMDMsMTQgQEANCiAgIFVTSE9SVCBs
b2NrU2VnbWVudFJldHVybjsNCiAgIHVuc2lnbmVkIGxvbmcgY2JyZXR1cm47DQogICB1bnNpZ25l
ZCBsb25nIGNiUGFyYW07DQorICBTUkIgU1JCbG9jazsJCQkgICAgICAgICAvLyBTQ1NJIFJlcXVl
c3QgQmxvY2sNCisgIGludCAgICBpLCBudW1fYWRhcHRlcnM7ICAgICAgICAgICAgICAgIC8vIG5v
LiBvZiBzY3NpIGFkYXB0ZXJzIGluc3RhbGxlZA0KKyAgY2hhciAqZGV2dHlwZXNbXSA9IHsNCisg
ICAgICAiZGlzayIsICJ0YXBlIiwgInByaW50ZXIiLCAicHJvY2Vzc29yIiwgIkNELXdyaXRlciIs
DQorICAgICAgIkNELWRyaXZlIiwgInNjYW5uZXIiLCAib3B0aWNhbC1kcml2ZSIsICJqdWtlYm94
IiwNCisgICAgICAiY29tbXVuaWNhdG9yIg0KKyAgfTsNCisgIEZJTEUqIHRtcDsNCiANCiAgIGlm
IChkcml2ZXJfaGFuZGxlKQ0KICAgICByZXR1cm4gMTsJCQkvKiBBbHJlYWR5IG9wZW4uICovDQpA
QCAtMzQ0LDYgKzM2NCwxNTIgQEANCiAgICAgICBEQkcgKDEsICJvcGVuX2FzcGk6ICBDYW4ndCBs
b2NrIGJ1ZmZlci5cbiIpOw0KICAgICAgIHJldHVybiAwOw0KICAgICB9DQorDQorICAgICAgLy8g
cXVlcnkgbnVtYmVyIG9mIGluc3RhbGxlZCBhZGFwdGVycw0KKyAgIG1lbXNldCggJlNSQmxvY2ss
IDAsIHNpemVvZiggU1JCbG9jaykpOw0KKyAgIFNSQmxvY2suY21kID0gU1JCX0lucXVpcnk7ICAg
ICAgICAgICAgLy8gaG9zdCBhZGFwdGVyIGlucXVpcnkNCisgICBTUkJsb2NrLmhhX251bT0wOyAg
ICAgICAgICAgICAgICAgICAgIC8vIGhvc3QgYWRhcHRlciBudW1iZXINCisgICBTUkJsb2NrLmZs
YWdzPTA7ICAgICAgICAgICAgICAgICAgICAgIC8vIG5vIGZsYWdzIHNldA0KKyAgIHJjID0gRG9z
RGV2SU9DdGwoIGRyaXZlcl9oYW5kbGUsIDB4OTIsIDB4MDIsDQorICAgICAgICAgICAgICAgICAg
ICAodm9pZCopICZTUkJsb2NrLCBzaXplb2YoU1JCKSwgJmNiUGFyYW0sDQorICAgICAgICAgICAg
ICAgICAgICAodm9pZCopICZTUkJsb2NrLCBzaXplb2YoU1JCKSwgJmNicmV0dXJuKTsNCisgICBu
dW1fYWRhcHRlcnMgPSBTUkJsb2NrLnUuaW5xLm51bV9oYTsNCisNCisgICBEQkcoIDEsICJPUy8y
OiBpbnN0YWxsZWQgYWRhcHRlcnMgJWRcbiIsIG51bV9hZGFwdGVycyk7DQorICAgREJHKCAxLCAi
T1MvMjogQVNQSSBtYW5hZ2VyIGlzICclcydcbiIsIFNSQmxvY2sudS5pbnEuYXNwaW1ncl9pZCk7
DQorICAgREJHKCAxLCAiT1MvMjogaG9zdCBhZGFwdGVyIGlzICclcydcbiIsIFNSQmxvY2sudS5p
bnEuaG9zdF9pZCk7DQorICAgREJHKCAxLCAiT1MvMjogdW5pcXVlIGlkIGlzICAgICclcydcbiIs
IFNSQmxvY2sudS5pbnEudW5pcXVlX2lkKTsNCisNCisgICBzdHJjcHkoIHRtcEFzcGksICJhc1hY
WFhYWCIpOw0KKyAgIG1rdGVtcCggdG1wQXNwaSk7DQorICAgREJHICgxLCAib3Blbl9hc3BpOiB0
ZW1wb3JhcnkgZmlsZSBpcyAnJXMnXG4iLCB0bXBBc3BpKTsNCisgICB0bXAgPSBmb3BlbiggdG1w
QXNwaSwgInciKTsNCisgICBpZiAoIXRtcCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGNhbid0IG9wZW4gdG1wIGZpbGUNCisgICAgICBEQkcgKDEsICJvcGVuX2FzcGk6ICBDYW4ndCBv
cGVuIHRlbXBvcmFyeSBmaWxlLlxuIik7DQorICAgICAgcmV0dXJuIDA7DQorICAgfQ0KKw0KKyAg
ICAgIC8vIHNjYW4gYWxsIGluc3RhbGxlZCBhZGFwdGVycw0KKyAgIGZvciggaT0wOyBpIDwgbnVt
X2FkYXB0ZXJzOyBpKyspIHsNCisgICAgICBpbnQgaWQ7DQorICAgICAgICAgLy8gcXVlcnkgYWRh
cHRlciBuYW1lDQorICAgICAgbWVtc2V0KCAmU1JCbG9jaywgMCwgc2l6ZW9mKCBTUkJsb2NrKSk7
DQorICAgICAgU1JCbG9jay5jbWQ9U1JCX0lucXVpcnk7ICAgICAgICAgICAvLyBob3N0IGFkYXB0
ZXIgaW5xdWlyeQ0KKyAgICAgIFNSQmxvY2suaGFfbnVtPWk7ICAgICAgICAgICAgICAgICAgLy8g
aG9zdCBhZGFwdGVyIG51bWJlcg0KKyAgICAgIFNSQmxvY2suZmxhZ3M9MDsgICAgICAgICAgICAg
ICAgICAgLy8gbm8gZmxhZ3Mgc2V0DQorICAgICAgcmMgPSBEb3NEZXZJT0N0bCggZHJpdmVyX2hh
bmRsZSwgMHg5MiwgMHgwMiwNCisgICAgICAgICAgICAgICAgICAgICh2b2lkKikgJlNSQmxvY2ss
IHNpemVvZihTUkIpLCAmY2JQYXJhbSwNCisgICAgICAgICAgICAgICAgICAgICh2b2lkKikgJlNS
QmxvY2ssIHNpemVvZihTUkIpLCAmY2JyZXR1cm4pOw0KKyAgICAgIERCRyggMSwgIk9TLzI6IGFk
YXB0ZXIjJTAyZCAnJXMnXG4iLCBpLCBTUkJsb2NrLnUuaW5xLmhvc3RfaWQpOw0KKw0KKyAgICAg
ICAgIC8vIHNjYW4gc2NzaSBjaGFpbiAobmVlZCAxNSBmb3Igd2lkZT8pDQorICAgICAgZm9yKCBp
ZD0wOyBpZDw3OyBpZCsrKSB7DQorICAgICAgICAgdW5zaWduZWQgY2hhciBsZW47DQorICAgICAg
ICAgdW5zaWduZWQgY2hhciB2ZW5kb3JbOV07DQorICAgICAgICAgdW5zaWduZWQgY2hhciBwcm9k
dWN0WzE3XTsNCisgICAgICAgICB1bnNpZ25lZCBjaGFyIHZlcnNpb25bNV07DQorICAgICAgICAg
dW5zaWduZWQgY2hhciAqcHA7DQorDQorICAgICAgICAgbWVtc2V0KCAmU1JCbG9jaywgMCwgc2l6
ZW9mKCBTUkJsb2NrKSk7DQorICAgICAgICAgU1JCbG9jay5jbWQgPSBTUkJfRGV2aWNlOyAgICAg
ICAvLyBnZXQgZGV2aWNlIHR5cGUNCisgICAgICAgICBTUkJsb2NrLmhhX251bT1pOyAgICAgICAg
ICAgICAgIC8vIGhvc3QgYWRhcHRlciBudW1iZXINCisgICAgICAgICBTUkJsb2NrLmZsYWdzPTA7
ICAgICAgICAgICAgICAgIC8vIG5vIGZsYWdzIHNldA0KKyAgICAgICAgIFNSQmxvY2sudS5kZXYu
dGFyZ2V0PWlkOyAgICAgICAgLy8gdGFyZ2V0IGlkDQorICAgICAgICAgU1JCbG9jay51LmRldi5s
dW49MDsgICAgICAgICAgICAvLyB0YXJnZXQgTFVODQorICAgICAgICAgcmMgPSBEb3NEZXZJT0N0
bChkcml2ZXJfaGFuZGxlLCAweDkyLCAweDAyLA0KKyAgICAgICAgICAgICAgICAgICAgKHZvaWQq
KSAmU1JCbG9jaywgc2l6ZW9mKFNSQiksICZjYlBhcmFtLA0KKyAgICAgICAgICAgICAgICAgICAg
KHZvaWQqKSAmU1JCbG9jaywgc2l6ZW9mKFNSQiksICZjYnJldHVybik7DQorICAgICAgICAgREJH
KCAxLCAiT1MvMjogICAgICAgICAgICAgaWQjJTAyZCBzdGF0dXM9JTAyeGhcbiIsIGlkLCBTUkJs
b2NrLnN0YXR1cyk7DQorDQorICAgICAgICAgICAgLy8gc2tpcCBpZiBkZXZpY2Ugbm90IGNvbm5l
Y3RlZA0KKyAgICAgICAgIGlmIChTUkJsb2NrLnN0YXR1cyA9PSBTUkJfQmFkRGV2aWNlKQ0KKyAg
ICAgICAgICAgIGNvbnRpbnVlOw0KKw0KKyAgICAgICAgIERCRyggMSwgIk9TLzI6ICAgICAgICAg
ICAgICAgICAgIHR5cGUgaXMgJyVzJ1xuIiwNCisgICAgICAgICAgICAgICAgIFNSQmxvY2sudS5k
ZXYuZGV2dHlwZSA8IHNpemVvZihkZXZ0eXBlcykvc2l6ZW9mKGNoYXIqKSA/IA0KKyAgICAgICAg
ICAgICAgICAgZGV2dHlwZXNbU1JCbG9jay51LmRldi5kZXZ0eXBlXSA6ICJ1bmtub3duIGRldmlj
ZSIpOw0KKw0KKyAgICAgICAgICAgIC8vIHF1ZXJ5IGFkYXB0ZXIgc3RyaW5nIGlkDQorICAgICAg
ICAgbWVtc2V0KCAmU1JCbG9jaywgMCwgc2l6ZW9mKCBTUkJsb2NrKSk7DQorICAgICAgICAgU1JC
bG9jay5jbWQgPSBTUkJfQ29tbWFuZDsgICAgICAvLyBleGVjdXRlIFNDU0kgY29tbWFuZA0KKyAg
ICAgICAgIFNSQmxvY2suaGFfbnVtID0gaTsgICAgICAgICAgICAgLy8gaG9zdCBhZGFwdGVyIG51
bWJlcg0KKyAgICAgICAgIFNSQmxvY2suZmxhZ3M9U1JCX1JlYWQgfCBTUkJfUG9zdDsvLyBkYXRh
IHRyYW5zZmVyLCBwb3N0aW5nDQorICAgICAgICAgU1JCbG9jay51LmNtZC50YXJnZXQ9aWQ7ICAg
ICAgICAvLyBUYXJnZXQgU0NTSSBJRA0KKyAgICAgICAgIFNSQmxvY2sudS5jbWQubHVuPTA7ICAg
ICAgICAgICAgLy8gVGFyZ2V0IFNDU0kgTFVODQorICAgICAgICAgU1JCbG9jay51LmNtZC5kYXRh
X2xlbj01OyAgICAgICAvLyAjIG9mIGJ5dGVzIHRyYW5zZmVycmVkDQorICAgICAgICAgU1JCbG9j
ay51LmNtZC5zZW5zZV9sZW49MTY7ICAgICAvLyBsZW5ndGggb2Ygc2Vuc2UgYnVmZmVyDQorICAg
ICAgICAgU1JCbG9jay51LmNtZC5kYXRhX3B0cj1OVUxMOyAgICAvLyBwb2ludGVyIHRvIGRhdGEg
YnVmZmVyDQorICAgICAgICAgU1JCbG9jay51LmNtZC5saW5rX3B0cj1OVUxMOyAgICAvLyBwb2lu
dGVyIHRvIG5leHQgU1JCDQorICAgICAgICAgU1JCbG9jay51LmNtZC5jZGJfbGVuPTY7ICAgICAg
ICAvLyBTQ1NJIGNvbW1hbmQgbGVuZ3RoDQorICAgICAgICAgU1JCbG9jay51LmNtZC5jZGJfc3Rb
MF09SU5RVUlSWTsvLyBpbnF1aXJ5IGNvbW1hbmQNCisgICAgICAgICBTUkJsb2NrLnUuY21kLmNk
Yl9zdFsxXT0wOyAgICAgIC8vID8/IGxlbmd0aA0KKyAgICAgICAgIFNSQmxvY2sudS5jbWQuY2Ri
X3N0WzJdPTA7ICAgICAgLy8gdHJhbnNmZXIgbGVuZ3RoIE1TQg0KKyAgICAgICAgIFNSQmxvY2su
dS5jbWQuY2RiX3N0WzNdPTA7ICAgICAgLy8gdHJhbnNmZXIgbGVuZ3RoDQorICAgICAgICAgU1JC
bG9jay51LmNtZC5jZGJfc3RbNF09NTsgICAgICAvLyB0cmFuc2ZlciBsZW5ndGggTFNCDQorICAg
ICAgICAgU1JCbG9jay51LmNtZC5jZGJfc3RbNV09MDsNCisgICAgICAgICByYyA9IERvc0RldklP
Q3RsKGRyaXZlcl9oYW5kbGUsIDB4OTIsIDB4MDIsDQorICAgICAgICAgICAgICAgICAgICh2b2lk
KikgJlNSQmxvY2ssIHNpemVvZihTUkIpLCAmY2JQYXJhbSwNCisgICAgICAgICAgICAgICAgICAg
KHZvaWQqKSAmU1JCbG9jaywgc2l6ZW9mKFNSQiksICZjYnJldHVybik7DQorICAgICAgICAgRG9z
V2FpdEV2ZW50U2VtIChwb3N0U2VtYSwgLTEpOw0KKyAgICAgICAgIERvc1Jlc2V0RXZlbnRTZW0g
KHBvc3RTZW1hLCAmcmMpOw0KKyAgICAgICAgIGxlbiA9ICgoY2hhciopYXNwaV9idWYpWzRdOyAg
ICAgICAgICAgICAgLy8gYWRkaXRpb25hbCBsZW5ndGgNCisNCisgICAgICAgICAgICAvLyBxdWVy
eSBpZCBzdHJpbmcNCisgICAgICAgICBtZW1zZXQoICZTUkJsb2NrLCAwLCBzaXplb2YoIFNSQmxv
Y2spKTsNCisgICAgICAgICBTUkJsb2NrLmNtZCA9IFNSQl9Db21tYW5kOyAgICAgIC8vIGV4ZWN1
dGUgU0NTSSBjb21tYW5kDQorICAgICAgICAgU1JCbG9jay5oYV9udW0gPSBpOyAgICAgICAgICAg
ICAvLyBob3N0IGFkYXB0ZXIgbnVtYmVyDQorICAgICAgICAgU1JCbG9jay5mbGFncz1TUkJfUmVh
ZCB8IFNSQl9Qb3N0Oy8vIGRhdGEgdHJhbnNmZXIsIHBvc3RpbmcNCisgICAgICAgICBTUkJsb2Nr
LnUuY21kLnRhcmdldD1pZDsgICAgICAgIC8vIFRhcmdldCBTQ1NJIElEDQorICAgICAgICAgU1JC
bG9jay51LmNtZC5sdW49MDsgICAgICAgICAgICAgICAgICAgICAgIC8vIFRhcmdldCBTQ1NJIExV
Tg0KKyAgICAgICAgIFNSQmxvY2sudS5jbWQuZGF0YV9sZW49NStsZW47ICAgLy8gIyBvZiBieXRl
cyB0cmFuc2ZlcnJlZA0KKyAgICAgICAgIFNSQmxvY2sudS5jbWQuc2Vuc2VfbGVuPTE2OyAgICAg
Ly8gbGVuZ3RoIG9mIHNlbnNlIGJ1ZmZlcg0KKyAgICAgICAgIFNSQmxvY2sudS5jbWQuZGF0YV9w
dHI9TlVMTDsgICAgLy8gcG9pbnRlciB0byBkYXRhIGJ1ZmZlcg0KKyAgICAgICAgIFNSQmxvY2su
dS5jbWQubGlua19wdHI9TlVMTDsgICAgLy8gcG9pbnRlciB0byBuZXh0IFNSQg0KKyAgICAgICAg
IFNSQmxvY2sudS5jbWQuY2RiX2xlbj02OyAgICAgICAgLy8gU0NTSSBjb21tYW5kIGxlbmd0aA0K
KyAgICAgICAgIFNSQmxvY2sudS5jbWQuY2RiX3N0WzBdPTB4MTI7ICAgLy8gaW5xdWlyeSBjb21t
YW5kDQorICAgICAgICAgU1JCbG9jay51LmNtZC5jZGJfc3RbMV09MDsgICAgICAvLyA/PyBsZW5n
dGgNCisgICAgICAgICBTUkJsb2NrLnUuY21kLmNkYl9zdFsyXT0wOyAgICAgIC8vIHRyYW5zZmVy
IGxlbmd0aCBNU0INCisgICAgICAgICBTUkJsb2NrLnUuY21kLmNkYl9zdFszXT0wOyAgICAgIC8v
IHRyYW5zZmVyIGxlbmd0aA0KKyAgICAgICAgIFNSQmxvY2sudS5jbWQuY2RiX3N0WzRdPTUrbGVu
OyAgLy8gdHJhbnNmZXIgbGVuZ3RoIExTQg0KKyAgICAgICAgIFNSQmxvY2sudS5jbWQuY2RiX3N0
WzVdPTA7DQorICAgICAgICAgcmMgPSBEb3NEZXZJT0N0bChkcml2ZXJfaGFuZGxlLCAweDkyLCAw
eDAyLA0KKyAgICAgICAgICAgICAgICAgICAodm9pZCopICZTUkJsb2NrLCBzaXplb2YoU1JCKSwg
JmNiUGFyYW0sDQorICAgICAgICAgICAgICAgICAgICh2b2lkKikgJlNSQmxvY2ssIHNpemVvZihT
UkIpLCAmY2JyZXR1cm4pOw0KKyAgICAgICAgIERvc1dhaXRFdmVudFNlbSAocG9zdFNlbWEsIC0x
KTsNCisgICAgICAgICBEb3NSZXNldEV2ZW50U2VtIChwb3N0U2VtYSwgJnJjKTsNCisgICAgICAg
ICBEQkcoIDEsICJPUy8yICAgICAgICAgJyVzJ1xuIiwgKGNoYXIqKWFzcGlfYnVmKzgpOw0KKyAg
ICAgICAgICAgIC8vIHdyaXRlIGRhdGENCisgICAgICAgICBnZXRfaW5xdWlyeV92ZW5kb3IgKChj
aGFyICopIGFzcGlfYnVmLCB2ZW5kb3IpOw0KKyAgICAgICAgIGdldF9pbnF1aXJ5X3Byb2R1Y3Qg
KChjaGFyICopIGFzcGlfYnVmLCBwcm9kdWN0KTsNCisgICAgICAgICBnZXRfaW5xdWlyeV92ZXJz
aW9uICgoY2hhciAqKSBhc3BpX2J1ZiwgdmVyc2lvbik7DQorDQorICAgICAgICAgcHAgPSAmdmVu
ZG9yWzddOw0KKyAgICAgICAgIHZlbmRvcls4XSA9ICdcMCc7DQorICAgICAgICAgd2hpbGUgKHBw
ID49IHZlbmRvciAmJiAoKnBwID09ICcgJyB8fCAqcHAgPj0gMTI3KSkNCisgICAgICAgICAgICpw
cC0tID0gJ1wwJzsNCisNCisgICAgICAgICBwcCA9ICZwcm9kdWN0WzE1XTsNCisgICAgICAgICBw
cm9kdWN0WzE2XSA9ICdcMCc7DQorICAgICAgICAgd2hpbGUgKHBwID49IHByb2R1Y3QgJiYgKCpw
cCA9PSAnICcgfHwgKnBwID49IDEyNykpDQorICAgICAgICAgICAqcHAtLSA9ICdcMCc7DQorDQor
ICAgICAgICAgcHAgPSBwcm9kdWN0Ow0KKyAgICAgICAgIGRvIHsNCisgICAgICAgICAgICBpZiAo
aXNzcGFjZSggKnBwKSkgKnBwID0gJ18nOw0KKyAgICAgICAgIH0gd2hpbGUoICorK3BwKTsNCisN
CisgICAgICAgICBwcCA9ICZ2ZXJzaW9uWzNdOw0KKyAgICAgICAgIHZlcnNpb25bNF0gPSAnXDAn
Ow0KKyAgICAgICAgIHdoaWxlIChwcCA+PSB2ZXJzaW9uICYmICgqcHAgPT0gJyAnIHx8ICoocHAg
LSAxKSA+PSAxMjcpKQ0KKyAgICAgICAgICAgKnBwLS0gPSAnXDAnOw0KKyAgICAgICAgIGZwcmlu
dGYoIHRtcCwgIlZlbmRvcjogJXMgIiwgdmVuZG9yKTsNCisgICAgICAgICBmcHJpbnRmKCB0bXAs
ICJNb2RlbDogJXMgIiwgcHJvZHVjdCk7DQorICAgICAgICAgZnByaW50ZiggdG1wLCAiUmV2OiAl
cyAiLCB2ZXJzaW9uKTsNCisgICAgICAgICBmcHJpbnRmKCB0bXAsICJzY3NpICVkIENoYW5uZWw6
IDAgSWQ6ICVkIEx1bjogMFxuIiwgaSwgaWQpOw0KKyAgICAgIH0NCisgICB9DQorICAgZmNsb3Nl
KCB0bXApOw0KKw0KICAgcmV0dXJuIDE7DQogfQ0KIA0KQEAgLTM2MSw2ICs1MjcsMTEgQEANCiAg
IGlmIChhc3BpX2J1ZikJCQkvKiBGcmVlIGJ1ZmZlci4gKi8NCiAgICAgRG9zRnJlZU1lbSAoYXNw
aV9idWYpOw0KICAgYXNwaV9idWYgPSAwOw0KKw0KKyAgdW5saW5rKCB0bXBBc3BpKTsgICAgICAg
ICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHNjc2kgZGVzY3JpcHRpb25zDQorICBzdHJjcHkoIHRt
cEFzcGksICIiKTsNCisNCisgIERCRyggMSwgIk9TLzI6IEFTUEkgY2xvc2VkXG4iKTsNCiB9DQog
DQogI2VuZGlmIC8qIFVTRV9PUzJfSU5URVJGQUNFICovDQpAQCAtMTYzOCw2ICsxODA5LDEzOCBA
QA0KICNlbmRpZiAvKiBVU0UgPT0gU0NPX09TNV9JTlRFUkZBQ0UgKi8NCiANCiAjaWYgVVNFID09
IE9TMl9JTlRFUkZBQ0UNCisNCisjZGVmaW5lIFdFX0hBVkVfRklORF9ERVZJQ0VTDQorDQorc3Rh
dGljIGludA0KK2dldF9kZXZpY2VuYW1lIChpbnQgYnVzLCBpbnQgdGFyZ2V0LCBpbnQgbHVuLCBj
aGFyICpuYW1lLCBzaXplX3QgbmFtZV9sZW4pDQorew0KKyAgIHNucHJpbnRmKCBuYW1lLCBuYW1l
X2xlbiwgImIlZHQlZGwlZCIsIGJ1cywgdGFyZ2V0LCBsdW4pOw0KKyAgIERCRyAoMSwgIk9TLzIg
c2VhcmNoZWQgZGV2aWNlIGlzICVzXG4iLCBuYW1lKTsNCisgICByZXR1cm4gMDsNCit9DQorDQor
dm9pZA0KK3NhbmVpX3Njc2lfZmluZF9kZXZpY2VzIChjb25zdCBjaGFyICpmaW5kdmVuZG9yLCBj
b25zdCBjaGFyICpmaW5kbW9kZWwsDQorCQkJIGNvbnN0IGNoYXIgKmZpbmR0eXBlLA0KKwkJCSBp
bnQgZmluZGJ1cywgaW50IGZpbmRjaGFubmVsLCBpbnQgZmluZGlkLCBpbnQgZmluZGx1biwNCisJ
CQkgU0FORV9TdGF0dXMgKCphdHRhY2gpIChjb25zdCBjaGFyICpkZXYpKQ0KK3sNCisgIHNpemVf
dCBmaW5kdmVuZG9yX2xlbiA9IDAsIGZpbmRtb2RlbF9sZW4gPSAwLCBmaW5kdHlwZV9sZW4gPSAw
Ow0KKyAgY2hhciB2ZW5kb3JbMzJdLCBtb2RlbFszMl0sIHR5cGVbMzJdLCByZXZpc2lvblszMl07
DQorICBpbnQgYnVzLCBjaGFubmVsLCBpZCwgbHVuLCBudW1iZXIsIGk7DQorICBjaGFyIGxpbmVb
MjU2XSwgZGV2X25hbWVbMTI4XTsNCisgIGNvbnN0IGNoYXIgKnN0cmluZzsNCisgIEZJTEUgKnBy
b2NfZnA7DQorICBjaGFyICplbmQ7DQorICBjb25zdCBzdHJ1Y3QNCisgICAgew0KKyAgICAgIGNv
bnN0IGNoYXIgKm5hbWU7DQorICAgICAgc2l6ZV90IG5hbWVfbGVuOw0KKyAgICAgIGludCBpc19p
bnQ7CQkvKiBpbnRlZ2VyIHZhbHVlZD8gKG5vdCBhIHN0cmluZykgKi8NCisgICAgICB1bmlvbg0K
KyAgICAgICAgew0KKwkgIHZvaWQgKnY7CQkvKiBhdm9pZHMgY29tcGlsZXIgd2FybmluZ3MuLi4g
Ki8NCisJICBjaGFyICpzdHI7DQorCSAgaW50ICppOw0KKyAgICAgICAgfQ0KKyAgICAgIHU7DQor
ICAgIH0NCisgIHBhcmFtW10gPQ0KKyAgICB7DQorICAgICAgeyAiVmVuZG9yOiIsICA3LCAwLCB7
IHZlbmRvciAgICB9IH0sDQorICAgICAgeyAiTW9kZWw6IiwgICA2LCAwLCB7IG1vZGVsICAgICB9
IH0sDQorICAgICAgeyAiVHlwZToiLCAgICA1LCAwLCB7IHR5cGUgICAgICB9IH0sDQorICAgICAg
eyAiUmV2OiIsICAgICA0LCAwLCB7IHJldmlzaW9uICB9IH0sDQorICAgICAgeyAic2NzaSIsCSAg
ICA0LCAxLCB7ICZidXMgICAgICB9IH0sDQorICAgICAgeyAiQ2hhbm5lbDoiLCA4LCAxLCB7ICZj
aGFubmVsICB9IH0sDQorICAgICAgeyAiSWQ6IiwJICAgIDMsIDEsIHsgJmlkICAgICAgIH0gfSwN
CisgICAgICB7ICJMdW46IiwJICAgIDQsIDEsIHsgJmx1biAgICAgIH0gfQ0KKyAgICB9Ow0KKw0K
KyAgREJHX0lOSVQgKCk7DQorDQorICBvcGVuX2FzcGkoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBvcGVuIGFzcGkgbWFuYWdlciBpZiBub3QgYWxyZWFkeSBkb25lDQorDQorICBwcm9j
X2ZwID0gZm9wZW4oIHRtcEFzcGksICJyIik7DQorICBpZiAoIXByb2NfZnApDQorICAgIHsNCisg
ICAgICBEQkcgKDEsICJjb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVhZGluZ1xuIiwgdG1wQXNwaSk7
DQorICAgICAgcmV0dXJuOw0KKyAgICB9DQorDQorICBudW1iZXIgPSBidXMgPSBjaGFubmVsID0g
aWQgPSBsdW4gPSAtMTsNCisNCisgIHZlbmRvclswXSA9IG1vZGVsWzBdID0gdHlwZVswXSA9ICdc
MCc7DQorICBpZiAoZmluZHZlbmRvcikNCisgICAgZmluZHZlbmRvcl9sZW4gPSBzdHJsZW4gKGZp
bmR2ZW5kb3IpOw0KKyAgaWYgKGZpbmRtb2RlbCkNCisgICAgZmluZG1vZGVsX2xlbiA9IHN0cmxl
biAoZmluZG1vZGVsKTsNCisgIGlmIChmaW5kdHlwZSkNCisgICAgZmluZHR5cGVfbGVuID0gc3Ry
bGVuIChmaW5kdHlwZSk7DQorDQorICB3aGlsZSAoIWZlb2YgKHByb2NfZnApKQ0KKyAgICB7DQor
ICAgICAgaWYgKCFmZ2V0cyAobGluZSwgc2l6ZW9mIChsaW5lKSwgcHJvY19mcCkpDQorICAgICAg
ICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCBlb2YgZXhpdA0KKw0KKyAg
ICAgIHN0cmluZyA9IHNhbmVpX2NvbmZpZ19za2lwX3doaXRlc3BhY2UgKGxpbmUpOw0KKw0KKyAg
ICAgIHdoaWxlICgqc3RyaW5nKQ0KKwl7DQorCSAgZm9yIChpID0gMDsgaSA8IE5FTEVNUyAocGFy
YW0pOyArK2kpDQorCSAgICB7DQorCSAgICAgIGlmIChzdHJuY21wIChzdHJpbmcsIHBhcmFtW2ld
Lm5hbWUsIHBhcmFtW2ldLm5hbWVfbGVuKSA9PSAwKQ0KKwkgICAgICAgIHsNCisJCSAgc3RyaW5n
ICs9IHBhcmFtW2ldLm5hbWVfbGVuOw0KKwkJICBzdHJpbmcgPSBzYW5laV9jb25maWdfc2tpcF93
aGl0ZXNwYWNlIChzdHJpbmcpOw0KKwkJICBpZiAocGFyYW1baV0uaXNfaW50KQ0KKwkJICAgIHsN
CisJCSAgICAgICpwYXJhbVtpXS51LmkgPSBzdHJ0b2wgKHN0cmluZywgJmVuZCwgMTApOw0KKwkJ
ICAgICAgc3RyaW5nID0gKGNoYXIgKikgZW5kOw0KKwkJICAgIH0NCisJCSAgZWxzZQ0KKwkJICAg
IHsNCisJCSAgICAgIHN0cm5jcHkgKHBhcmFtW2ldLnUuc3RyLCBzdHJpbmcsIDMyKTsNCisJCSAg
ICAgIHBhcmFtW2ldLnUuc3RyWzMxXSA9ICdcMCc7DQorCQkgICAgICB3aGlsZSAoKnN0cmluZyAm
JiAhaXNzcGFjZSAoKnN0cmluZykpDQorCQkJKytzdHJpbmc7DQorCQkgICAgfQ0KKwkJICBzdHJp
bmcgPSBzYW5laV9jb25maWdfc2tpcF93aGl0ZXNwYWNlIChzdHJpbmcpOw0KKw0KKwkJICBpZiAo
cGFyYW1baV0udS52ID09ICZidXMpDQorCQkgICAgKytudW1iZXI7DQorCQkgIGJyZWFrOw0KKwkJ
fQ0KKwkgICAgfQ0KKwkgIGlmIChpID49IE5FTEVNUyAocGFyYW0pKQ0KKwkgICAgKytzdHJpbmc7
CQkJLyogbm8gbWF0Y2ggKi8NCisJfQ0KKw0KKyAgICAgIGlmICgoZmluZHZlbmRvciAmJiAhdmVu
ZG9yWzBdKSB8fCAoZmluZG1vZGVsICYmICFtb2RlbFswXSkNCisJICB8fCAoZmluZHR5cGUgJiYg
IXR5cGVbMF0pDQorCSAgfHwgKGZpbmRidXMgPj0gMCAmJiBidXMgPT0gLTEpIHx8IChmaW5kY2hh
bm5lbCA+PSAwICYmIGNoYW5uZWwgPT0gLTEpDQorCSAgfHwgKGZpbmRsdW4gPj0gMCAmJiBsdW4g
PT0gLTEpKQ0KKwkvKiBzb21lIGluZm8gaXMgc3RpbGwgbWlzc2luZyAqLw0KKwljb250aW51ZTsN
CisNCisgICAgICBpZiAoICAgKCFmaW5kdmVuZG9yIHx8IHN0cm5jbXAgKHZlbmRvciwgZmluZHZl
bmRvciwgZmluZHZlbmRvcl9sZW4pID09IDApDQorCSAgJiYgKCFmaW5kbW9kZWwgIHx8IHN0cm5j
bXAgKG1vZGVsLCBmaW5kbW9kZWwsIGZpbmRtb2RlbF9sZW4pID09IDApDQorCSAgJiYgKCFmaW5k
dHlwZSAgIHx8IHN0cm5jbXAgKHR5cGUsIGZpbmR0eXBlLCBmaW5kdHlwZV9sZW4pID09IDApDQor
CSAgJiYgKGZpbmRidXMJICA9PSAtMSB8fCBidXMgPT0gZmluZGJ1cykNCisJICAmJiAoZmluZGNo
YW5uZWwgPT0gLTEgfHwgY2hhbm5lbCA9PSBmaW5kY2hhbm5lbCkNCisJICAmJiAoZmluZGlkCSAg
PT0gLTEgfHwgaWQgPT0gZmluZGlkKQ0KKwkgICYmIChmaW5kbHVuCSAgPT0gLTEgfHwgbHVuID09
IGZpbmRsdW4pDQorCSAgJiYgZ2V0X2RldmljZW5hbWUoIGJ1cywgaWQsIGx1biwgZGV2X25hbWUs
IHNpemVvZiAoZGV2X25hbWUpKSA+PSAwDQorCSAgJiYgKCphdHRhY2gpIChkZXZfbmFtZSkgIT0g
U0FORV9TVEFUVVNfR09PRCkNCisJcmV0dXJuOw0KKw0KKyAgICAgIHZlbmRvclswXSA9IG1vZGVs
WzBdID0gdHlwZVswXSA9IDA7DQorICAgICAgYnVzID0gY2hhbm5lbCA9IGlkID0gbHVuID0gLTE7
DQorICAgIH0NCisgIGZjbG9zZSAocHJvY19mcCk7DQorfQ0KKw0KIC8qIFhYWCB1bnRlc3RlZCBj
b2RlISAqLw0KIFNBTkVfU3RhdHVzDQogc2FuZWlfc2NzaV9jbWQgKGludCBmZCwgY29uc3Qgdm9p
ZCAqc3JjLCBzaXplX3Qgc3JjX3NpemUsDQpAQCAtMjA3NSw2ICsyMzc4LDcgQEANCiANCiB2b2lk
DQogc2FuZWlfc2NzaV9maW5kX2RldmljZXMgKGNvbnN0IGNoYXIgKmZpbmR2ZW5kb3IsIGNvbnN0
IGNoYXIgKmZpbmRtb2RlbCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
ZmluZHR5cGUsDQogCQkJIGludCBmaW5kYnVzLCBpbnQgZmluZGNoYW5uZWwsIGludCBmaW5kaWQs
IGludCBmaW5kbHVuLA0KIAkJCSBTQU5FX1N0YXR1cyAoKmF0dGFjaCkgKGNvbnN0IGNoYXIgKmRl
dikpDQogew0KT25seSBpbiBzYW5laTogc2FuZWlfc2NzaS5sbw0KT25seSBpbiBzYW5laTogc2Fu
ZWlfc2NzaS5vDQpPbmx5IGluIHNhbmVpOiBzYW5laV93aXJlLmxvDQpPbmx5IGluIHNhbmVpOiBz
YW5laV93aXJlLm8NCg==

--_=_=_=IMA.BOUNDARY.EWJW1J138764=_=_=_--

--
Source code, list archive, and docs: http://www.mostang.com/sane/
To unsubscribe: echo unsubscribe sane-devel | mail majordomo@mostang.com