From owner-freebsd-ports Mon Feb 21 14: 8: 8 2000 Delivered-To: freebsd-ports@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id 0B60537B52C; Mon, 21 Feb 2000 14:07:56 -0800 (PST) (envelope-from kris@FreeBSD.org) Received: from localhost (kris@localhost) by freefall.freebsd.org (8.9.3/8.9.2) with ESMTP id OAA26010; Mon, 21 Feb 2000 14:07:32 -0800 (PST) (envelope-from kris@FreeBSD.org) X-Authentication-Warning: freefall.freebsd.org: kris owned process doing -bs Date: Mon, 21 Feb 2000 14:07:31 -0800 (PST) From: Kris Kennaway To: Khetan Gajjar Cc: ports@freebsd.org Subject: Re: Hylafax port status In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-1812434641-951170710=:25667" Content-ID: Sender: owner-freebsd-ports@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-1812434641-951170710=:25667 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: On Mon, 21 Feb 2000, Khetan Gajjar wrote: > Hi. > > What is the status of the Hylafax port ? It's been marked broken > for quite a while now due to the buffer overflow which yields > UUCP setuid. > > I've checked the Hylafax page, but there don't appear to be any > patches forthcoming. The hylafax guys really don't seem to care about the security of their product, which is a shame since as far as I can tell it fills a niche. Alexander Langer just sent me this patch which claims to address all the instances of unsafe sprintf/strcat/strcpy buffers. I havent reviewed it yet and wont be before 4.0, but you might like to try it out if you want to use hylafax but arent comfortable with the current security status (remember, it's only known to be vulnerable to a local exploit - I dont know if it even listens on the network). Kris ---- "How many roads must a man walk down, before you call him a man?" "Eight!" "That was a rhetorical question!" "Oh..then, seven!" -- Homer Simpson --0-1812434641-951170710=:25667 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=patch-ah Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME=patch-ah ZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBs Mi9mYXhhbHRlci9mYXhhbHRlci5jKysgLi9mYXhhbHRlci9mYXhhbHRlci5j KysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwy L2ZheGFsdGVyL2ZheGFsdGVyLmMrKwlTYXQgRmViIDE0IDExOjQ4OjM4IDE5 OTgNCisrKyAuL2ZheGFsdGVyL2ZheGFsdGVyLmMrKwlTdW4gRmViIDIwIDIy OjE5OjI3IDIwMDANCkBAIC0xODUsNyArMTg1LDcgQEANCiAgICAgdmFfbGlz dCBhcDsNCiAgICAgdmFfc3RhcnQoYXAsIGZtdDApOw0KICAgICBjaGFyIGZt dFsxMDI0XTsNCi0gICAgc3ByaW50ZihmbXQsICIlcyAlc1xuIiwgZ3JvdXBz ID8gIkpHUEFSTSIgOiAiSlBBUk0iLCBmbXQwKTsNCisgICAgc25wcmludGYo Zm10LCAxMDI0LCAiJXMgJXNcbiIsIGdyb3VwcyA/ICJKR1BBUk0iIDogIkpQ QVJNIiwgZm10MCk7DQogICAgIHNjcmlwdC5hcHBlbmQoZnhTdHI6OnZmb3Jt YXQoZm10LCBhcCkpOw0KICAgICB2YV9lbmQoYXApOw0KIH0NCmRpZmYgLXJ1 IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvZmF4ZC9D bGFzc01vZGVtLmMrKyAuL2ZheGQvQ2xhc3NNb2RlbS5jKysNCi0tLSAvdG1w L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2ZheGQvQ2xhc3NN b2RlbS5jKysJU2F0IEZlYiAxNCAxMTo0OToxNiAxOTk4DQorKysgLi9mYXhk L0NsYXNzTW9kZW0uYysrCVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAg LTE2OSw3ICsxNjksNyBAQA0KIHsNCiAgICAgcHJvdG9UcmFjZSgiRElBTCAl cyIsIG51bWJlcik7DQogICAgIGNoYXIgYnVmWzI1Nl07DQotICAgIHNwcmlu dGYoYnVmLCAoY29uc3QgY2hhciopIGNvbmYuZGlhbENtZCwgbnVtYmVyKTsN CisgICAgc25wcmludGYoYnVmLCAyNTYsIChjb25zdCBjaGFyKikgY29uZi5k aWFsQ21kLCBudW1iZXIpOw0KICAgICBlbXNnID0gIiI7DQogICAgIENhbGxT dGF0dXMgY3MgPSAoYXRDbWQoYnVmLCBBVF9OT1RISU5HKSA/IGRpYWxSZXNw b25zZShlbXNnKSA6IEZBSUxVUkUpOw0KICAgICBpZiAoY3MgIT0gT0sgJiYg ZW1zZyA9PSAiIikNCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29yay9o eWxhZmF4LXY0LjBwbDIvZmF4ZC9GYXhNYWNoaW5lTG9nLmMrKyAuL2ZheGQv RmF4TWFjaGluZUxvZy5jKysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv aHlsYWZheC12NC4wcGwyL2ZheGQvRmF4TWFjaGluZUxvZy5jKysJU2F0IEZl YiAxNCAxMTo0OToyMSAxOTk4DQorKysgLi9mYXhkL0ZheE1hY2hpbmVMb2cu YysrCVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAgLTc3LDcgKzc3LDcg QEANCiAgICAgdGltZXZhbCB0djsNCiAgICAgKHZvaWQpIGdldHRpbWVvZmRh eSgmdHYsIDApOw0KICAgICBzdHJmdGltZShidWYsIHNpemVvZiAoYnVmKSwg IiVoICVkICVUIiwgbG9jYWx0aW1lKCh0aW1lX3QqKSAmdHYudHZfc2VjKSk7 DQotICAgIHNwcmludGYoYnVmK3N0cmxlbihidWYpLCAiLiUwMnU6IFslNWRd OiAiLCB0di50dl91c2VjIC8gMTAwMDAsIHBpZCk7DQorICAgIHNucHJpbnRm KGJ1ZitzdHJsZW4oYnVmKSwgMTYqMTAyNCAtIHN0cmxlbihidWYpIi4lMDJ1 OiBbJTVkXTogIiwgdHYudHZfdXNlYyAvIDEwMDAwLCBwaWQpOw0KICAgICAv Kg0KICAgICAgKiBDb3B5IGZvcm1hdCBzdHJpbmcgaW50byBhIGxvY2FsIGJ1 ZmZlciBzbw0KICAgICAgKiB0aGF0IHdlIGNhbiBzdWJzdGl0dXRlIGZvciAl bSwgYSBsYSBzeXNsb2cuDQpAQCAtOTYsNiArOTYsNiBAQA0KIAlmbXQucHV0 KGZwWzBdKTsNCiAgICAgfQ0KICAgICBmbXQucHV0KCdcbicpOyBmbXQucHV0 KCdcMCcpOw0KLSAgICB2c3ByaW50ZihidWYrc3RybGVuKGJ1ZiksIChjb25z dCBjaGFyKikgZm10LCBhcCk7DQorICAgIHZzbnByaW50ZihidWYrc3RybGVu KGJ1ZiksIDE2KjEwMjQgLSBzdHJsZW4oYnVmKSwgKGNvbnN0IGNoYXIqKSBm bXQsIGFwKTsNCiAgICAgKHZvaWQpIFN5czo6d3JpdGUoZmQsIGJ1Ziwgc3Ry bGVuKGJ1ZikpOw0KIH0NCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29y ay9oeWxhZmF4LXY0LjBwbDIvZmF4ZC9GYXhSZWN2LmMrKyAuL2ZheGQvRmF4 UmVjdi5jKysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12 NC4wcGwyL2ZheGQvRmF4UmVjdi5jKysJU2F0IEZlYiAxNCAxMTo0OToyMyAx OTk4DQorKysgLi9mYXhkL0ZheFJlY3YuYysrCVN1biBGZWIgMjAgMjI6MTk6 MjcgMjAwMA0KQEAgLTEzOSw3ICsxMzksNyBAQA0KIAkgKiBudW1iZXIgZmls ZSB0byByZWZsZWN0IHRoZSBhbGxvY2F0aW9uLg0KIAkgKi8NCiAJKHZvaWQp IGZsb2NrKGZ0bXAsIExPQ0tfRVh8TE9DS19OQik7DQotCXNwcmludGYobGlu ZSwgIiV1Iiwgc2VxbnVtKTsNCisJc25wcmludGYobGluZSwgMTYsICIldSIs IHNlcW51bSk7DQogCSh2b2lkKSBsc2Vlayhmc2VxZiwgMCwgU0VFS19TRVQp Ow0KIAlpZiAoU3lzOjp3cml0ZShmc2VxZiwgbGluZSwgc3RybGVuKGxpbmUp KSAhPSBzdHJsZW4obGluZSkgfHwNCiAJCWZ0cnVuY2F0ZShmc2VxZixzdHJs ZW4obGluZSkpKSB7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv aHlsYWZheC12NC4wcGwyL2ZheGQvRmF4UmVxdWVzdC5jKysgLi9mYXhkL0Zh eFJlcXVlc3QuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFm YXgtdjQuMHBsMi9mYXhkL0ZheFJlcXVlc3QuYysrCVNhdCBGZWIgMTQgMTE6 NDk6MjQgMTk5OA0KKysrIC4vZmF4ZC9GYXhSZXF1ZXN0LmMrKwlTdW4gRmVi IDIwIDIyOjE5OjI3IDIwMDANCkBAIC02NzksNyArNjc5LDcgQEANCiBGYXhS ZXF1ZXN0OjplcnJvcihjb25zdCBjaGFyKiBmbXQwIC4uLikNCiB7DQogICAg IGNoYXIgZm10WzEyOF07DQotICAgIHNwcmludGYoZm10LCAiJXM6IGxpbmUg JXU6ICVzIiwgKGNvbnN0IGNoYXIqKSBxZmlsZSwgKHVfaW50KSBsaW5lbm8s IGZtdDApOw0KKyAgICBzbnByaW50ZihmbXQsIDEyOCwgIiVzOiBsaW5lICV1 OiAlcyIsIChjb25zdCBjaGFyKikgcWZpbGUsICh1X2ludCkgbGluZW5vLCBm bXQwKTsNCiAgICAgdmFfbGlzdCBhcDsNCiAgICAgdmFfc3RhcnQoYXAsIGZt dDApOw0KICAgICB2bG9nRXJyb3IoZm10LCBhcCk7DQpkaWZmIC1ydSAvdG1w L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2ZheGQvSm9iLmMr KyAuL2ZheGQvSm9iLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9o eWxhZmF4LXY0LjBwbDIvZmF4ZC9Kb2IuYysrCVNhdCBGZWIgMTQgMTE6NDk6 MzIgMTk5OA0KKysrIC4vZmF4ZC9Kb2IuYysrCVN1biBGZWIgMjAgMjI6MTk6 MjcgMjAwMA0KQEAgLTE3MSw3ICsxNzEsNyBAQA0KICNkZWZpbmUJTihhKQko c2l6ZW9mIChhKSAvIHNpemVvZiAoYVswXSkpDQogICAgIGlmICgodV9pbnQp IHN0YXR1cyA+PSBOKG5hbWVzKSkgew0KIAlzdGF0aWMgY2hhciBzWzMwXTsN Ci0Jc3ByaW50ZihzLCAic3RhdHVzXyV1IiwgKHVfaW50KSBzdGF0dXMpOw0K KwlzbnByaW50ZihzLCAzMCwgInN0YXR1c18ldSIsICh1X2ludCkgc3RhdHVz KTsNCiAJcmV0dXJuIChzKTsNCiAgICAgfSBlbHNlDQogCXJldHVybiAobmFt ZXNbc3RhdHVzXSk7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv aHlsYWZheC12NC4wcGwyL2ZheGQvTW9kZW1TZXJ2ZXIuYysrIC4vZmF4ZC9N b2RlbVNlcnZlci5jKysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHls YWZheC12NC4wcGwyL2ZheGQvTW9kZW1TZXJ2ZXIuYysrCVNhdCBGZWIgMTQg MTE6NDk6MzQgMTk5OA0KKysrIC4vZmF4ZC9Nb2RlbVNlcnZlci5jKysJU3Vu IEZlYiAyMCAyMjoxOToyNyAyMDAwDQpAQCAtNjA0LDcgKzYwNCw3IEBADQog CX0gd2hpbGUgKGZ0bXAgPCAwICYmIGVycm5vID09IEVFWElTVCAmJiAtLW50 cnkgPj0gMCk7DQogCXVtYXNrKG9tYXNrKTsNCiAJaWYgKGZ0bXAgPj0gMCkg ew0KLQkgICAgc3ByaW50ZihsaW5lLCAiJXUiLCBzZXFudW0pOw0KKwkgICAg c25wcmludGYobGluZSwgMTAyNCwgIiV1Iiwgc2VxbnVtKTsNCiAJICAgICh2 b2lkKSBsc2Vlayhmc2VxZiwgMCwgU0VFS19TRVQpOw0KIAkgICAgaWYgKFN5 czo6d3JpdGUoZnNlcWYsIGxpbmUsIHN0cmxlbihsaW5lKSkgIT0gc3RybGVu KGxpbmUpIHx8DQogCQlmdHJ1bmNhdGUoZnNlcWYsc3RybGVuKGxpbmUpKSkN CkBAIC04MDYsNyArODA2LDcgQEANCiAgICAgdmFfbGlzdCBhcDsNCiAgICAg dmFfc3RhcnQoYXAsIGZtdDApOw0KICAgICBjaGFyIGZtdFsyNTZdOw0KLSAg ICBzcHJpbnRmKGZtdCwgIk1PREVNICVzIiwgZm10MCk7DQorICAgIHNucHJp bnRmKGZtdCwgMjU2LCAiTU9ERU0gJXMiLCBmbXQwKTsNCiAgICAgdnRyYWNl U3RhdHVzKEZBWFRSQUNFX01PREVNT1BTLCBmbXQsIGFwKTsNCiAgICAgdmFf ZW5kKGFwKTsNCiB9DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv aHlsYWZheC12NC4wcGwyL2ZheGQvU2VydmVyQ29uZmlnLmMrKyAuL2ZheGQv U2VydmVyQ29uZmlnLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9o eWxhZmF4LXY0LjBwbDIvZmF4ZC9TZXJ2ZXJDb25maWcuYysrCVNhdCBGZWIg MTQgMTE6NDk6MzYgMTk5OA0KKysrIC4vZmF4ZC9TZXJ2ZXJDb25maWcuYysr CVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAgLTM3Myw5ICszNzMsOSBA QA0KIHsNCiAgICAgY2hhciBmbXRbMTI4XTsNCiAgICAgaWYgKG1vZHVsZSAh PSBOVUxMKQ0KLQlzcHJpbnRmKGZtdCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBt b2R1bGUsIGZtdDApOw0KKwlzbnByaW50ZihmbXQsIDEyOCwgIiVzOiBXYXJu aW5nLCAlcy4iLCBtb2R1bGUsIGZtdDApOw0KICAgICBlbHNlDQotCXNwcmlu dGYoZm10LCAiV2FybmluZywgJXMuIiwgZm10MCk7DQorCXNucHJpbnRmKGZt dCwgMTI4LCAiV2FybmluZywgJXMuIiwgZm10MCk7DQogICAgIHZsb2dFcnJv cihmbXQsIGFwKTsNCiB9DQogDQpAQCAtMzg0LDkgKzM4NCw5IEBADQogew0K ICAgICBjaGFyIGZtdFsxMjhdOw0KICAgICBpZiAobW9kdWxlICE9IE5VTEwp DQotCXNwcmludGYoZm10LCAiJXM6IFdhcm5pbmcsICVzLiIsIG1vZHVsZSwg Zm10MCk7DQorCXNucHJpbnRmKGZtdCwgMTI4LCAiJXM6IFdhcm5pbmcsICVz LiIsIG1vZHVsZSwgZm10MCk7DQogICAgIGVsc2UNCi0Jc3ByaW50ZihmbXQs ICJXYXJuaW5nLCAlcy4iLCBmbXQwKTsNCisJc25wcmludGYoZm10LCAxMjgs ICJXYXJuaW5nLCAlcy4iLCBmbXQwKTsNCiAgICAgdmxvZ1dhcm5pbmcoZm10 LCBhcCk7DQogfQ0KIA0KZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3Jr L2h5bGFmYXgtdjQuMHBsMi9mYXhkL1VVQ1BMb2NrLmMrKyAuL2ZheGQvVVVD UExvY2suYysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgt djQuMHBsMi9mYXhkL1VVQ1BMb2NrLmMrKwlNb24gRmViIDIxIDE1OjE5OjQ0 IDIwMDANCisrKyAuL2ZheGQvVVVDUExvY2suYysrCU1vbiBGZWIgMjEgMTQ6 NTY6MjkgMjAwMA0KQEAgLTMxMyw3ICszMTMsNyBAQA0KIEFzY2lpVVVDUExv Y2s6OnNldFBJRChwaWRfdCBwaWQpDQogew0KICAgICAvLyBYWFggc2hvdWxk IHRoaXMgYmUgJWQgb3IgJWxkPyBkZXBlbmRzIG9uIHBpZF90DQotICAgIHNw cmludGYoKGNoYXIqKSBkYXRhLCAiJSpkXG4iLCBVVUNQX1BJRERJR0lUUywg cGlkKTsNCisgICAgc25wcmludGYoKGNoYXIqKSBkYXRhLCBVVUNQX1BJRERJ R0lUUysyLCAiJSpkXG4iLCBVVUNQX1BJRERJR0lUUywgcGlkKTsNCiB9DQog DQogZnhCb29sDQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHls YWZheC12NC4wcGwyL2ZheGQvZmF4QXBwLmMrKyAuL2ZheGQvZmF4QXBwLmMr Kw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIv ZmF4ZC9mYXhBcHAuYysrCVNhdCBGZWIgMTQgMTE6NDk6MzkgMTk5OA0KKysr IC4vZmF4ZC9mYXhBcHAuYysrCVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0K QEAgLTIzMSw3ICsyMzEsNyBAQA0KIAkgICAgbG9nRXJyb3IoImZjbnRsOiAl bSIpOw0KICAgICB9DQogICAgIGNoYXIgbXNnWzQwOTZdOw0KLSAgICB2c3By aW50Zihtc2csIGZtdCwgYXApOw0KKyAgICB2c25wcmludGYobXNnLCA0MDk2 LCBmbXQsIGFwKTsNCiAgICAgdV9pbnQgbGVuID0gc3RybGVuKG1zZykrMTsN CiAgICAgaWYgKFN5czo6d3JpdGUoZmF4cWZpZm8sIG1zZywgbGVuKSAhPSBs ZW4pIHsNCiAJaWYgKGVycm5vID09IEVCQURGIHx8IGVycm5vID09IEVQSVBF KQkJLy8gcmVhZGVyIGV4cGlyZWQNCkBAIC0yNjMsNyArMjYzLDcgQEANCiBm YXhBcHA6OnNlbmRNb2RlbVN0YXR1cyhjb25zdCBjaGFyKiBkZXZpZCwgY29u c3QgY2hhciogZm10MCAuLi4pDQogew0KICAgICBjaGFyIGZtdFsyKjEwMjRd Ow0KLSAgICBzcHJpbnRmKGZtdCwgIislczolcyIsIGRldmlkLCBmbXQwKTsN CisgICAgc25wcmludGYoZm10LCAyKjEwMjQsICIrJXM6JXMiLCBkZXZpZCwg Zm10MCk7DQogICAgIHZhX2xpc3QgYXA7DQogICAgIHZhX3N0YXJ0KGFwLCBm bXQwKTsNCiAgICAgZnhCb29sIG9rID0gdnNlbmRRdWV1ZXIoZm10LCBhcCk7 DQpAQCAtMjc4LDcgKzI3OCw3IEBADQogZmF4QXBwOjpzZW5kSm9iU3RhdHVz KGNvbnN0IGNoYXIqIGpvYmlkLCBjb25zdCBjaGFyKiBmbXQwIC4uLikNCiB7 DQogICAgIGNoYXIgZm10WzIqMTAyNF07DQotICAgIHNwcmludGYoZm10LCAi KiVzOiVzIiwgam9iaWQsIGZtdDApOw0KKyAgICBzbnByaW50ZihmbXQsIDIq MTAyNCwgIiolczolcyIsIGpvYmlkLCBmbXQwKTsNCiAgICAgdmFfbGlzdCBh cDsNCiAgICAgdmFfc3RhcnQoYXAsIGZtdDApOw0KICAgICBmeEJvb2wgb2sg PSB2c2VuZFF1ZXVlcihmbXQsIGFwKTsNCkBAIC0yOTMsNyArMjkzLDcgQEAN CiBmYXhBcHA6OnNlbmRSZWN2U3RhdHVzKGNvbnN0IGNoYXIqIGRldmlkLCBj b25zdCBjaGFyKiBmbXQwIC4uLikNCiB7DQogICAgIGNoYXIgZm10WzIqMTAy NF07DQotICAgIHNwcmludGYoZm10LCAiQCVzOiVzIiwgZGV2aWQsIGZtdDAp Ow0KKyAgICBzbnByaW50ZihmbXQsIDIqMTAyNCwgIkAlczolcyIsIGRldmlk LCBmbXQwKTsNCiAgICAgdmFfbGlzdCBhcDsNCiAgICAgdmFfc3RhcnQoYXAs IGZtdDApOw0KICAgICBmeEJvb2wgb2sgPSB2c2VuZFF1ZXVlcihmbXQsIGFw KTsNCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0 LjBwbDIvZmF4ZC9mYXhRdWV1ZUFwcC5jKysgLi9mYXhkL2ZheFF1ZXVlQXBw LmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBw bDIvZmF4ZC9mYXhRdWV1ZUFwcC5jKysJU2F0IEZlYiAxNCAxMTo0OTo0MiAx OTk4DQorKysgLi9mYXhkL2ZheFF1ZXVlQXBwLmMrKwlTdW4gRmViIDIwIDIy OjE5OjI3IDIwMDANCkBAIC05NzEsMTAgKzk3MSwxMCBAQA0KIAkgKiAgIC1t IDxtYXhwYWdlcz4JbWF4IHBhZ2VzIHRvIGdlbmVyYXRlDQogCSAqICAgLTF8 LTIJCTFkIG9yIDJkIGVuY29kaW5nDQogCSAqLw0KLQljaGFyIHJidWZbMjBd OyBzcHJpbnRmKHJidWYsICIldSIsIHBhcmFtcy52ZXJ0aWNhbFJlcygpKTsN Ci0JY2hhciB3YnVmWzIwXTsgc3ByaW50Zih3YnVmLCAiJXUiLCBwYXJhbXMu cGFnZVdpZHRoKCkpOw0KLQljaGFyIGxidWZbMjBdOyBzcHJpbnRmKGxidWYs ICIlZCIsIHBhcmFtcy5wYWdlTGVuZ3RoKCkpOw0KLQljaGFyIG1idWZbMjBd OyBzcHJpbnRmKG1idWYsICIldSIsIGRjaS5nZXRNYXhTZW5kUGFnZXMoKSk7 DQorCWNoYXIgcmJ1ZlsyMF07IHNucHJpbnRmKHJidWYsIDIwLCAiJXUiLCBw YXJhbXMudmVydGljYWxSZXMoKSk7DQorCWNoYXIgd2J1ZlsyMF07IHNucHJp bnRmKHdidWYsIDIwLCAiJXUiLCBwYXJhbXMucGFnZVdpZHRoKCkpOw0KKwlj aGFyIGxidWZbMjBdOyBzbnByaW50ZihsYnVmLCAyMCwgIiVkIiwgcGFyYW1z LnBhZ2VMZW5ndGgoKSk7DQorCWNoYXIgbWJ1ZlsyMF07IHNucHJpbnRmKG1i dWYsIDIwLCAiJXUiLCBkY2kuZ2V0TWF4U2VuZFBhZ2VzKCkpOw0KIAljb25z dCBjaGFyKiBhcmd2WzMwXTsNCiAJaW50IGFjID0gMDsNCiAJc3dpdGNoIChy ZXEub3ApIHsNCkBAIC0yNzI2LDkgKzI3MjYsOSBAQA0KIHsNCiAgICAgY2hh ciBmbXRbMTI4XTsNCiAgICAgaWYgKG1vZHVsZSAhPSBOVUxMKQ0KLQlzcHJp bnRmKGZtdCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBtb2R1bGUsIGZtdDApOw0K KwlzbnByaW50ZihmbXQsIDEyOCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBtb2R1 bGUsIGZtdDApOw0KICAgICBlbHNlDQotCXNwcmludGYoZm10LCAiV2Fybmlu ZywgJXMuIiwgZm10MCk7DQorCXNucHJpbnRmKGZtdCwgMTI4LCAiV2Fybmlu ZywgJXMuIiwgZm10MCk7DQogICAgIHZsb2dFcnJvcihmbXQsIGFwKTsNCiB9 DQogDQpAQCAtMjczNyw5ICsyNzM3LDkgQEANCiB7DQogICAgIGNoYXIgZm10 WzEyOF07DQogICAgIGlmIChtb2R1bGUgIT0gTlVMTCkNCi0Jc3ByaW50Zihm bXQsICIlczogV2FybmluZywgJXMuIiwgbW9kdWxlLCBmbXQwKTsNCisJc25w cmludGYoZm10LCAxMjgsICIlczogV2FybmluZywgJXMuIiwgbW9kdWxlLCBm bXQwKTsNCiAgICAgZWxzZQ0KLQlzcHJpbnRmKGZtdCwgIldhcm5pbmcsICVz LiIsIGZtdDApOw0KKwlzbnByaW50ZihmbXQsIDEyOCwgIldhcm5pbmcsICVz LiIsIGZtdDApOw0KICAgICB2bG9nV2FybmluZyhmbXQsIGFwKTsNCiB9DQog DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4w cGwyL2ZheGQvdHJpZ3Rlc3QuYysrIC4vZmF4ZC90cmlndGVzdC5jKysNCi0t LSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2ZheGQv dHJpZ3Rlc3QuYysrCVNhdCBGZWIgMTQgMTE6NDk6NDcgMTk5OA0KKysrIC4v ZmF4ZC90cmlndGVzdC5jKysJTW9uIEZlYiAyMSAxNDo1NzoyMCAyMDAwDQpA QCAtMjk2LDcgKzI5Niw3IEBADQogICAgIGludCBmZCwgbjsNCiAgICAgY2hh ciBtc2dbMjU2XTsNCiANCi0gICAgc3ByaW50ZihmaWZvTmFtZSwgImNsaWVu dC8ldSIsIGdldHBpZCgpKTsNCisgICAgc25wcmludGYoZmlmb05hbWUsIDgw LCAiY2xpZW50LyV1IiwgZ2V0cGlkKCkpOw0KICAgICBpZiAoU3lzOjpta2Zp Zm8oZmlmb05hbWUsIDA2NjYpIDwgMCAmJiBlcnJubyAhPSBFRVhJU1QpIHsN CiAJcGVycm9yKCJta2ZpZm8iKTsNCiAJZXhpdCgtMSk7DQpAQCAtMzA5LDcg KzMwOSw3IEBADQogCXVubGluayhmaWZvTmFtZSk7DQogCWV4aXQoLTEpOw0K ICAgICB9DQotICAgIHNwcmludGYobXNnLCAiVCVzOk4lcyIsIGZpZm9OYW1l LCB0cmlnZ2VyKTsNCisgICAgc25wcmludGYobXNnLCAyNTYsICJUJXM6TiVz IiwgZmlmb05hbWUsIHRyaWdnZXIpOw0KICAgICBzZW5kKG1zZywgc3RybGVu KG1zZykrMSk7DQogICAgIGZvciAoOzspIHsNCiAJRkRfWkVSTygmcmQpOw0K ZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBs Mi9oZmF4ZC9IeWxhRkFYU2VydmVyLmMrKyAuL2hmYXhkL0h5bGFGQVhTZXJ2 ZXIuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQu MHBsMi9oZmF4ZC9IeWxhRkFYU2VydmVyLmMrKwlTYXQgRmViIDE0IDExOjUw OjAyIDE5OTgNCisrKyAuL2hmYXhkL0h5bGFGQVhTZXJ2ZXIuYysrCVN1biBG ZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAgLTE2MSw5ICsxNjEsOSBAQA0KIHsN CiAgICAgY2hhciBmbXRbMTI4XTsNCiAgICAgaWYgKG1vZHVsZSAhPSBOVUxM KQ0KLQlzcHJpbnRmKGZtdCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBtb2R1bGUs IGZtdDApOw0KKwlzbnByaW50ZihmbXQsIDEyOCwgIiVzOiBXYXJuaW5nLCAl cy4iLCBtb2R1bGUsIGZtdDApOw0KICAgICBlbHNlDQotCXNwcmludGYoZm10 LCAiV2FybmluZywgJXMuIiwgZm10MCk7DQorCXNucHJpbnRmKGZtdCwgMTI4 LCAiV2FybmluZywgJXMuIiwgZm10MCk7DQogICAgIHZsb2dFcnJvcihmbXQs IGFwKTsNCiB9DQogDQpAQCAtMTcyLDkgKzE3Miw5IEBADQogew0KICAgICBj aGFyIGZtdFsxMjhdOw0KICAgICBpZiAobW9kdWxlICE9IE5VTEwpDQotCXNw cmludGYoZm10LCAiJXM6IFdhcm5pbmcsICVzLiIsIG1vZHVsZSwgZm10MCk7 DQorCXNucHJpbnRmKGZtdCwgMTI4LCAiJXM6IFdhcm5pbmcsICVzLiIsIG1v ZHVsZSwgZm10MCk7DQogICAgIGVsc2UNCi0Jc3ByaW50ZihmbXQsICJXYXJu aW5nLCAlcy4iLCBmbXQwKTsNCisJc25wcmludGYoZm10LCAxMjgsICJXYXJu aW5nLCAlcy4iLCBmbXQwKTsNCiAgICAgdmxvZ1dhcm5pbmcoZm10LCBhcCk7 DQogfQ0KIA0KQEAgLTUzMCw3ICs1MzAsNyBAQA0KIAkgICAgZmlsZW5hbWUs IGxpbmUpOw0KIAlzZXFudW0gPSAxOw0KICAgICB9DQotICAgIHNwcmludGYo bGluZSwgIiV1IiwgTkVYVFNFUU5VTShzZXFudW0rY291bnQpKTsNCisgICAg c25wcmludGYobGluZSwgMTAyNCwgIiV1IiwgTkVYVFNFUU5VTShzZXFudW0r Y291bnQpKTsNCiAgICAgbHNlZWsoZmQsIDAsIFNFRUtfU0VUKTsNCiAgICAg aWYgKFN5czo6d3JpdGUoZmQsIGxpbmUsIHN0cmxlbihsaW5lKSkgIT0gc3Ry bGVuKGxpbmUpIHx8DQogCQlmdHJ1bmNhdGUoZmQsc3RybGVuKGxpbmUpKSkg ew0KZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQu MHBsMi9oZmF4ZC9Kb2JzLmMrKyAuL2hmYXhkL0pvYnMuYysrDQotLS0gL3Rt cC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi9oZmF4ZC9Kb2Jz LmMrKwlTYXQgRmViIDE0IDExOjUwOjA1IDE5OTgNCisrKyAuL2hmYXhkL0pv YnMuYysrCVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAgLTE2NDYsNyAr MTY0Niw3IEBADQogCQlmcHJpbnRmKGZkLCBmc3BlYywgKGNvbnN0IGNoYXIq KSBqb2IuY29tcGFueSk7DQogCQlicmVhazsNCiAJICAgIGNhc2UgJ0QnOg0K LQkJc3ByaW50Zih0bXBidWYsICIlMnU6JS0ydSIsIGpvYi50b3RkaWFscywg am9iLm1heGRpYWxzKTsNCisJCXNucHJpbnRmKHRtcGJ1ZiwgMjAsICIlMnU6 JS0ydSIsIGpvYi50b3RkaWFscywgam9iLm1heGRpYWxzKTsNCiAJCWZwcmlu dGYoZmQsIGZzcGVjLCB0bXBidWYpOw0KIAkJYnJlYWs7DQogCSAgICBjYXNl ICdFJzoNCkBAIC0xNjgzLDcgKzE2ODMsNyBAQA0KIAkJZnByaW50ZihmZCwg ZnNwZWMsICJOICJbam9iLnVzZWNjb3Zlcl0pOw0KIAkJYnJlYWs7DQogCSAg ICBjYXNlICdQJzoNCi0JCXNwcmludGYodG1wYnVmLCAiJTJ1OiUtMnUiLCBq b2IubnBhZ2VzLCBqb2IudG90cGFnZXMpOw0KKwkJc25wcmludGYodG1wYnVm LCAyMCwgIiUydTolLTJ1Iiwgam9iLm5wYWdlcywgam9iLnRvdHBhZ2VzKTsN CiAJCWZwcmludGYoZmQsIGZzcGVjLCB0bXBidWYpOw0KIAkJYnJlYWs7DQog CSAgICBjYXNlICdRJzoNCkBAIC0xNjk2LDExICsxNjk2LDExIEBADQogCQlm cHJpbnRmKGZkLCBmc3BlYywgKGNvbnN0IGNoYXIqKSBqb2Iuc2VuZGVyKTsN CiAJCWJyZWFrOw0KIAkgICAgY2FzZSAnVCc6DQotCQlzcHJpbnRmKHRtcGJ1 ZiwgIiUydTolLTJ1Iiwgam9iLnRvdHRyaWVzLCBqb2IubWF4dHJpZXMpOw0K KwkJc25wcmludGYodG1wYnVmLCAyMCwgIiUydTolLTJ1Iiwgam9iLnRvdHRy aWVzLCBqb2IubWF4dHJpZXMpOw0KIAkJZnByaW50ZihmZCwgZnNwZWMsIHRt cGJ1Zik7DQogCQlicmVhazsNCiAJICAgIGNhc2UgJ1UnOg0KLQkJc3ByaW50 Zih0bXBidWYsICIlLjFmIiwgam9iLmNob3B0aHJlc2hvbGQpOw0KKwkJc25w cmludGYodG1wYnVmLCAyMCwgIiUuMWYiLCBqb2IuY2hvcHRocmVzaG9sZCk7 DQogCQlmcHJpbnRmKGZkLCBmc3BlYywgdG1wYnVmKTsNCiAJCWJyZWFrOw0K IAkgICAgY2FzZSAnVic6DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dv cmsvaHlsYWZheC12NC4wcGwyL2hmYXhkL09sZFByb3RvY29sLmMrKyAuL2hm YXhkL09sZFByb3RvY29sLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29y ay9oeWxhZmF4LXY0LjBwbDIvaGZheGQvT2xkUHJvdG9jb2wuYysrCU1vbiBG ZWIgMjEgMTU6MTk6NDQgMjAwMA0KKysrIC4vaGZheGQvT2xkUHJvdG9jb2wu YysrCVN1biBGZWIgMjAgMjI6MTk6MjggMjAwMA0KQEAgLTM1Miw4ICszNTIs OCBAQA0KIE9sZFByb3RvY29sU2VydmVyOjp2c2VuZENsaWVudChjb25zdCBj aGFyKiB0YWcsIGNvbnN0IGNoYXIqIGZtdCwgdmFfbGlzdCBhcCkNCiB7DQog ICAgIGNoYXIgYnVmWzIwNDhdOw0KLSAgICBzcHJpbnRmKGJ1ZiwgIiVzOiIs IHRhZyk7DQotICAgIHZzcHJpbnRmKHN0cmNocihidWYsJ1wwJyksIGZtdCwg YXApOw0KKyAgICBzbnByaW50ZihidWYsIDIwNDgsICIlczoiLCB0YWcpOw0K KyAgICB2c25wcmludGYoc3RyY2hyKGJ1ZiwnXDAnKSwgMjA0OCAtIChzdHJj aHIoYnVmLCAnXDAnKSAtIGJ1ZiksIGZtdCwgYXApOw0KICAgICBmcHJpbnRm KHN0ZG91dCwgIiVzXG4iLCBidWYpOw0KICAgICBpZiAoVFJBQ0UoUFJPVE9D T0wpKQ0KIAlsb2dEZWJ1ZygiJXMiLCBidWYpOw0KQEAgLTQ3MiwxOSArNDcy LDE5IEBADQogICAgIGJ1ZlswXSA9ICdcMCc7DQogICAgIGlmIChwd2QtPnB3 X2dlY29zKSB7DQogCWlmIChwd2QtPnB3X2dlY29zWzBdID09ICcmJykgew0K LQkgICAgc3RyY3B5KGJ1ZiwgcHdkLT5wd19uYW1lKTsNCi0JICAgIHN0cmNh dChidWYsIHB3ZC0+cHdfZ2Vjb3MrMSk7DQorCSAgICBzdHJsY3B5KGJ1Ziwg cHdkLT5wd19uYW1lLCAxMDI0KTsNCisJICAgIHN0cmxjYXQoYnVmLCBwd2Qt PnB3X2dlY29zKzEsIDEwMjQgLSBzdHJsZW4oYnVmKSk7DQogCSAgICBpZiAo aXNsb3dlcihidWZbMF0pKQ0KIAkJYnVmWzBdID0gdG91cHBlcihidWZbMF0p Ow0KIAl9IGVsc2UNCi0JICAgIHN0cmNweShidWYsIHB3ZC0+cHdfZ2Vjb3Mp Ow0KKwkgICAgc3RybGNweShidWYsIHB3ZC0+cHdfZ2Vjb3MsIDEwMjQpOw0K IAlpZiAoKGNwID0gc3RyY2hyKGJ1ZiwnLCcpKSAhPSAwKQ0KIAkgICAgKmNw ID0gJ1wwJzsNCiAJLyogc2VlIEZheENsaWVudDo6c2V0dXBVc2VySWRlbnRp dHk7IHN0cmlwIFN5c1YganVuayAqLw0KIAlpZiAoKGNwID0gc3RyY2hyKGJ1 ZiwnKCcpKSAhPSAwKQ0KIAkgICAgKmNwID0gJ1wwJzsNCiAgICAgfSBlbHNl DQotCXN0cmNweShidWYsIHB3ZC0+cHdfbmFtZSk7DQorCXN0cmxjcHkoYnVm LCBwd2QtPnB3X25hbWUsIDEwMjQpOw0KICAgICBpZiAoVFJBQ0UoUFJPVE9D T0wpKSB7DQogCWlmICgqYnVmKQ0KIAkgICAgIGxvZ0RlYnVnKCIlcyB1c2Vy OiBcIiVzXCIiLCBwd2QtPnB3X25hbWUsIGJ1Zik7DQpkaWZmIC1ydSAvdG1w L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2hmYXhkL1N0YXR1 cy5jKysgLi9oZmF4ZC9TdGF0dXMuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZh eC93b3JrL2h5bGFmYXgtdjQuMHBsMi9oZmF4ZC9TdGF0dXMuYysrCVNhdCBG ZWIgMTQgMTE6NTA6MDkgMTk5OA0KKysrIC4vaGZheGQvU3RhdHVzLmMrKwlT dW4gRmViIDIwIDIyOjE5OjI4IDIwMDANCkBAIC0yNjIsMTQgKzI2MiwxNCBA QA0KIAkJaWYgKGNvbmZpZy5tYXhSZWN2UGFnZXMgPT0gKHVfaW50KSAtMSkN CiAJCSAgICBzdHJjcHkodG1wYnVmLCAiSU5GIik7DQogCQllbHNlDQotCQkg ICAgc3ByaW50Zih0bXBidWYsICIldSIsIGNvbmZpZy5tYXhSZWN2UGFnZXMp Ow0KKwkJICAgIHNucHJpbnRmKHRtcGJ1ZiwgMjAsICIldSIsIGNvbmZpZy5t YXhSZWN2UGFnZXMpOw0KIAkJZnByaW50ZihmZCwgZnNwZWMsIGNvbmZpZy5t YXhSZWN2UGFnZXMpOw0KIAkJYnJlYWs7DQogCSAgICBjYXNlICdzJzoNCiAJ CWZwcmludGYoZmQsIGZzcGVjLCAoY29uc3QgY2hhciopIGNvbmZpZy5zdGF0 dXMpOw0KIAkJYnJlYWs7DQogCSAgICBjYXNlICd0JzoNCi0JCXNwcmludGYo dG1wYnVmLCAiJTA1eDolMDV4IiwNCisJCXNucHJpbnRmKHRtcGJ1ZiwgMjAs ICIlMDV4OiUwNXgiLA0KIAkJICAgIGNvbmZpZy50cmFjaW5nTGV2ZWwmMHhm ZmZmZiwNCiAJCSAgICBjb25maWcubG9nVHJhY2luZ0xldmVsJjB4ZmZmZmYp Ow0KIAkJZnByaW50ZihmZCwgZnNwZWMsIHRtcGJ1Zik7DQpkaWZmIC1ydSAv dG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL21hbi9jb25m aWcuNGYgLi9tYW4vY29uZmlnLjRmDQotLS0gL3RtcC9vbGQvaHlsYWZheC93 b3JrL2h5bGFmYXgtdjQuMHBsMi9tYW4vY29uZmlnLjRmCVNhdCBGZWIgMTQg MTE6NTA6NDYgMTk5OA0KKysrIC4vbWFuL2NvbmZpZy40ZglTdW4gRmViIDIw IDIyOjE5OjI4IDIwMDANCkBAIC0xNDQ2LDcgKzE0NDYsNyBAQA0KIFRoZSBj b21tYW5kIHRvIHBsYWNlIGEgcGhvbmUgY2FsbC4NCiBUaGUgc3RyaW5nIGlz IGFzc3VtZWQgdG8gYmUgc3VpdGFibGUgZm9yIHVzZQ0KIGFzIGEgcGFyYW1l dGVyIHRvIHRoZQ0KLS5JUiBzcHJpbnRmICgzUykNCisuSVIgc25wcmludGYg KDNTKQ0KIGZ1bmN0aW9uOyBzbyB0aGUgYGAlJycgY2hhcmFjdGVyIHNob3Vs ZCBiZSBlc2NhcGVkIGFzIGBgJSUnJy4NCiBUaGUgZGlhbCBjb21tYW5kIG11 c3QgaW5jbHVkZSBhIHNpbmdsZSBgYCVzJycgd2hlcmUgdGhlIG51bWJlcg0K IHRoYXQgaXMgdG8gYmUgZGlhbGVkIGlzIHRvIGJlIHN1YnN0aXR1dGVkLg0K ZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBs Mi9wb3J0L3N5c2xvZy5jIC4vcG9ydC9zeXNsb2cuYw0KLS0tIC90bXAvb2xk L2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvcG9ydC9zeXNsb2cuYwlT YXQgRmViIDE0IDExOjUwOjQyIDE5OTgNCisrKyAuL3BvcnQvc3lzbG9nLmMJ TW9uIEZlYiAyMSAxNTowOTowNyAyMDAwDQpAQCAtODgsNyArODgsNyBAQA0K IAlyZWdpc3RlciBpbnQgY250Ow0KIAlyZWdpc3RlciBjaGFyICpwOw0KIAl0 aW1lX3Qgbm93LCB0aW1lKCk7DQotCWludCBmZCwgc2F2ZWRfZXJybm87DQor CWludCBmZCwgc2F2ZWRfZXJybm8sIG47DQogCWNoYXIgdGJ1ZlsyMDQ4XSwg Zm10X2NweVsxMDI0XSwgKnN0ZHAsICpjdGltZSgpOw0KIA0KIAkvKiBjaGVj ayBmb3IgaW52YWxpZCBiaXRzIG9yIG5vIHByaW9yaXR5IHNldCAqLw0KQEAg LTEwNCwyMSArMTA0LDIxIEBADQogDQogCS8qIGJ1aWxkIHRoZSBtZXNzYWdl ICovDQogCSh2b2lkKXRpbWUoJm5vdyk7DQotCSh2b2lkKXNwcmludGYodGJ1 ZiwgIjwlZD4lLjE1cyAiLCBwcmksIGN0aW1lKCZub3cpICsgNCk7DQotCWZv ciAocCA9IHRidWY7ICpwOyArK3ApOw0KKwkodm9pZClzbnByaW50Zih0YnVm LCAyMDQ4LCAiPCVkPiUuMTVzICIsIHByaSwgY3RpbWUoJm5vdykgKyA0KTsN CisJZm9yIChwID0gdGJ1Ziwgbj0wOyAqcDsgKytwLCBuKyspOw0KIAlpZiAo TG9nU3RhdCAmIExPR19QRVJST1IpDQogCQlzdGRwID0gcDsNCiAJaWYgKExv Z1RhZykgew0KIAkJKHZvaWQpc3RyY3B5KHAsIExvZ1RhZyk7DQotCQlmb3Ig KDsgKnA7ICsrcCk7DQorCQlmb3IgKDsgKnA7ICsrcCwgbisrKTsNCiAJfQ0K IAlpZiAoTG9nU3RhdCAmIExPR19QSUQpIHsNCi0JCSh2b2lkKXNwcmludGYo cCwgIlslZF0iLCBnZXRwaWQoKSk7DQotCQlmb3IgKDsgKnA7ICsrcCk7DQor CQkodm9pZClzbnByaW50ZihwLCAyMDQ4IC0gbiwgIlslZF0iLCBnZXRwaWQo KSk7DQorCQlmb3IgKDsgKnA7ICsrcCwgbisrKTsNCiAJfQ0KIAlpZiAoTG9n VGFnKSB7DQotCQkqcCsrID0gJzonOw0KLQkJKnArKyA9ICcgJzsNCisJCSpw KysgPSAnOic7IG4rKzsNCisJCSpwKysgPSAnICc7IG4rKzsNCiAJfQ0KIA0K IAkvKiBzdWJzdGl0dXRlIGVycm9yIG1lc3NhZ2UgZm9yICVtICovDQpAQCAt MTM3LDcgKzEzNyw3IEBADQogCQkqdDEgPSAnXDAnOw0KIAl9DQogDQotCSh2 b2lkKXZzcHJpbnRmKHAsIGZtdF9jcHksIGFwKTsNCisJKHZvaWQpdnNucHJp bnRmKHAsIDIwNDggLSBuLCBmbXRfY3B5LCBhcCk7DQogDQogCWNudCA9IHN0 cmxlbih0YnVmKTsNCiANCkBAIC0xNzAsNyArMTcwLDcgQEANCiAJICogaXMg dGhlIG9uZSBmcm9tIHRoZSBzeXNsb2dkIGZhaWx1cmUuDQogCSAqLw0KIAlp ZiAoKGZkID0gb3BlbihfUEFUSF9DT05TT0xFLCBPX1dST05MWSwgMCkpID49 IDApIHsNCi0JCSh2b2lkKXN0cmNhdCh0YnVmLCAiXHJcbiIpOw0KKwkJKHZv aWQpc3RybGNhdCh0YnVmLCAiXHJcbiIsIDIwNDgpOw0KIAkJY250ICs9IDI7 DQogCQlwID0gaW5kZXgodGJ1ZiwgJz4nKSArIDE7DQogCQkodm9pZCl3cml0 ZShmZCwgcCwgY250IC0gKHAgLSB0YnVmKSk7DQpkaWZmIC1ydSAvdG1wL29s ZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3BvcnQvdnN5c2xvZy5j IC4vcG9ydC92c3lzbG9nLmMNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv aHlsYWZheC12NC4wcGwyL3BvcnQvdnN5c2xvZy5jCVNhdCBGZWIgMTQgMTE6 NTA6NDIgMTk5OA0KKysrIC4vcG9ydC92c3lzbG9nLmMJU3VuIEZlYiAyMCAy MjoxOToyOCAyMDAwDQpAQCAtNDksNiArNDksNiBAQA0KIAkJKmNwKysgPSBj Ow0KIAkgICAgKmNwID0gJ1wwJzsNCiAJfQ0KLQkodm9pZCkgdnNwcmludGYo dGJ1ZiwgZm10X2NweSwgYXApOw0KKwkodm9pZCkgdnNucHJpbnRmKHRidWYs IDIwNDgsIGZtdF9jcHksIGFwKTsNCiAJKHZvaWQpIHN5c2xvZyhwcmksICIl cyIsIHRidWYpOw0KIH0NCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29y ay9oeWxhZmF4LXY0LjBwbDIvcmVnZXgvZW5naW5lLmMgLi9yZWdleC9lbmdp bmUuYw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBw bDIvcmVnZXgvZW5naW5lLmMJU2F0IEZlYiAxNCAxMTo0ODoxOSAxOTk4DQor KysgLi9yZWdleC9lbmdpbmUuYwlTdW4gRmViIDIwIDIyOjE5OjI4IDIwMDAN CkBAIC0xMDY1LDkgKzEwNjUsOSBAQA0KIAlzdGF0aWMgY2hhciBwYnVmWzEw XTsNCiANCiAJaWYgKGlzcHJpbnQoY2gpIHx8IGNoID09ICcgJykNCi0JCXNw cmludGYocGJ1ZiwgIiVjIiwgY2gpOw0KKwkJc25wcmludGYocGJ1ZiwgMTAs ICIlYyIsIGNoKTsNCiAJZWxzZQ0KLQkJc3ByaW50ZihwYnVmLCAiXFwlbyIs IGNoKTsNCisJCXNucHJpbnRmKHBidWYsIDEwLCAiXFwlbyIsIGNoKTsNCiAJ cmV0dXJuKHBidWYpOw0KIH0NCiAjZW5kaWYNCmRpZmYgLXJ1IC90bXAvb2xk L2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvcmVnZXgvcmVnZXJyb3Iu YyAuL3JlZ2V4L3JlZ2Vycm9yLmMNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dv cmsvaHlsYWZheC12NC4wcGwyL3JlZ2V4L3JlZ2Vycm9yLmMJU2F0IEZlYiAx NCAxMTo0ODoyMSAxOTk4DQorKysgLi9yZWdleC9yZWdlcnJvci5jCU1vbiBG ZWIgMjEgMTU6MDM6MzEgMjAwMA0KQEAgLTU3LDcgKzU3LDcgQEANCiAjZW5k aWYNCiANCiAvKiA9PT0gcmVnZXJyb3IuYyA9PT0gKi8NCi1zdGF0aWMgY2hh ciAqcmVnYXRvaShjb25zdCByZWdleF90ICpwcmVnLCBjaGFyICpsb2NhbGJ1 Zik7DQorc3RhdGljIGNoYXIgKnJlZ2F0b2koY29uc3QgcmVnZXhfdCAqcHJl ZywgY2hhciAqbG9jYWxidWYsIGludCBtYXhuKTsNCiANCiAjaWZkZWYgX19j cGx1c3BsdXMNCiB9DQpAQCAtMTI2LDcgKzEyNiw3IEBADQogCWNoYXIgY29u dmJ1Zls1MF07DQogDQogCWlmIChlcnJjb2RlID09IFJFR19BVE9JKQ0KLQkJ cyA9IHJlZ2F0b2kocHJlZywgY29udmJ1Zik7DQorCQlzID0gcmVnYXRvaShw cmVnLCBjb252YnVmLCA1MCk7DQogCWVsc2Ugew0KIAkJZm9yIChyID0gcmVy cnM7IHItPmNvZGUgIT0gMDsgcisrKQ0KIAkJCWlmIChyLT5jb2RlID09IHRh cmdldCkNCkBAIC0xMzQsOSArMTM0LDkgQEANCiAJDQogCQlpZiAoZXJyY29k ZSZSRUdfSVRPQSkgew0KIAkJCWlmIChyLT5jb2RlICE9IDApDQotCQkJCSh2 b2lkKSBzdHJjcHkoY29udmJ1Ziwgci0+bmFtZSk7DQorCQkJCSh2b2lkKSBz dHJsY3B5KGNvbnZidWYsIHItPm5hbWUsIDUwKTsNCiAJCQllbHNlDQotCQkJ CXNwcmludGYoY29udmJ1ZiwgIlJFR18weCV4IiwgdGFyZ2V0KTsNCisJCQkJ c25wcmludGYoY29udmJ1ZiwgNTAsICJSRUdfMHgleCIsIHRhcmdldCk7DQog CQkJYXNzZXJ0KHN0cmxlbihjb252YnVmKSA8IHNpemVvZihjb252YnVmKSk7 DQogCQkJcyA9IGNvbnZidWY7DQogCQl9IGVsc2UNCkBAIC0xNjEsOSArMTYx LDEwIEBADQogID09IHN0YXRpYyBjaGFyICpyZWdhdG9pKGNvbnN0IHJlZ2V4 X3QgKnByZWcsIGNoYXIgKmxvY2FsYnVmKTsNCiAgKi8NCiBzdGF0aWMgY2hh ciAqDQotcmVnYXRvaShwcmVnLCBsb2NhbGJ1ZikNCityZWdhdG9pKHByZWcs IGxvY2FsYnVmLCBtYXhuKQ0KIGNvbnN0IHJlZ2V4X3QgKnByZWc7DQogY2hh ciAqbG9jYWxidWY7DQoraW50IG1heG47DQogew0KIAlyZWdpc3RlciBzdHJ1 Y3QgcmVyciAqcjsNCiANCkBAIC0xNzMsNiArMTc0LDYgQEANCiAJaWYgKHIt PmNvZGUgPT0gMCkNCiAJCXJldHVybigiMCIpOw0KIA0KLQlzcHJpbnRmKGxv Y2FsYnVmLCAiJWQiLCByLT5jb2RlKTsNCisJc25wcmludGYobG9jYWxidWYs IG1heG4sICIlZCIsIHItPmNvZGUpOw0KIAlyZXR1cm4obG9jYWxidWYpOw0K IH0NCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0 LjBwbDIvc2dpMmZheC9pbWd0b2ZheC5jIC4vc2dpMmZheC9pbWd0b2ZheC5j DQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi9z Z2kyZmF4L2ltZ3RvZmF4LmMJU2F0IEZlYiAxNCAxMTo1MDoyMiAxOTk4DQor KysgLi9zZ2kyZmF4L2ltZ3RvZmF4LmMJU3VuIEZlYiAyMCAyMjoxOToyOCAy MDAwDQpAQCAtMjE0LDcgKzIxNCw3IEBADQogICAgIFRJRkZTZXRGaWVsZCh0 aWYsIFRJRkZUQUdfUEFHRU5VTUJFUiwgcG4sIG5wYWdlcyk7DQogICAgIFRJ RkZTZXRGaWVsZCh0aWYsIFRJRkZUQUdfQ0xFQU5GQVhEQVRBLCBDTEVBTkZB WERBVEFfQ0xFQU4pOw0KICAgICB7IGNoYXIgYnVmWzEwMjRdOw0KLSAgICAg IHNwcmludGYoYnVmLCAiRGl0aGVyZXJlZCBCJlcgdmVyc2lvbiBvZiAlcyIs IGlucHV0KTsNCisgICAgICBzbnByaW50ZihidWYsIDEwMjQsICJEaXRoZXJl cmVkIEImVyB2ZXJzaW9uIG9mICVzIiwgaW5wdXQpOw0KICAgICAgIFRJRkZT ZXRGaWVsZCh0aWYsIFRJRkZUQUdfSU1BR0VERVNDUklQVElPTiwgYnVmKTsN CiAgICAgfQ0KICAgICBUSUZGU2V0RmllbGQodGlmLCBUSUZGVEFHX1NPRlRX QVJFLCAic2dpMmZheCIpOw0KZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93 b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL0NsYXNzMlBhcmFtcy5jKysgLi91 dGlsL0NsYXNzMlBhcmFtcy5jKysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dv cmsvaHlsYWZheC12NC4wcGwyL3V0aWwvQ2xhc3MyUGFyYW1zLmMrKwlTYXQg RmViIDE0IDExOjQ3OjEyIDE5OTgNCisrKyAuL3V0aWwvQ2xhc3MyUGFyYW1z LmMrKwlNb24gRmViIDIxIDE1OjA3OjEyIDIwMDANCkBAIC01OSwxNCArNTks MTUgQEANCiB9DQogDQogc3RhdGljIGNoYXIqDQotYWRkUGFyYW0oY2hhciog Y3AsIHVfaW50IHYpDQorYWRkUGFyYW0oY2hhciogY3AsIHVfaW50IHYsIGlu dCAqbWF4bikNCiB7DQogICAgIGlmICh2ICE9ICh1X2ludCktMSkgew0KLQlz cHJpbnRmKGNwLCAiLCV1Iiwgdik7DQotCXdoaWxlICgqY3AgIT0gJ1wwJykg Y3ArKzsNCisJc25wcmludGYoY3AsICptYXhuLCAiLCV1Iiwgdik7DQorCXdo aWxlICgqY3AgIT0gJ1wwJykgeyBjcCsrOyAoKm1heG4pKys7IH0NCiAgICAg fSBlbHNlIHsNCiAJKmNwKysgPSAnLCc7DQogCSpjcCA9ICdcMCc7DQorCSgq bWF4bikrKzsNCiAgICAgfQ0KICAgICByZXR1cm4gKGNwKTsNCiB9DQpAQCAt NzYsMTggKzc3LDE5IEBADQogew0KICAgICBjaGFyIGJ1ZlsxMDI0XTsNCiAg ICAgY2hhciogY3AgPSBidWY7DQorCWludCBuID0gMTAyNDsNCiANCiAgICAg aWYgKHZyICE9ICh1X2ludCkgLTEpIHsNCi0Jc3ByaW50ZihjcCwgIiV1Iiwg dnIpOw0KLQl3aGlsZSAoKmNwICE9ICdcMCcpIGNwKys7DQorCXNucHJpbnRm KGNwLCBuLCAiJXUiLCB2cik7DQorCXdoaWxlICgqY3AgIT0gJ1wwJykgeyBj cCsrOyBuLS0gfTsNCiAgICAgfQ0KLSAgICBjcCA9IGFkZFBhcmFtKGNwLCBi cik7DQotICAgIGNwID0gYWRkUGFyYW0oY3AsIHdkKTsNCi0gICAgY3AgPSBh ZGRQYXJhbShjcCwgbG4pOw0KLSAgICBjcCA9IGFkZFBhcmFtKGNwLCBkZik7 DQotICAgIGNwID0gYWRkUGFyYW0oY3AsIGVjKTsNCi0gICAgY3AgPSBhZGRQ YXJhbShjcCwgYmYpOw0KLSAgICBjcCA9IGFkZFBhcmFtKGNwLCBzdCk7DQor ICAgIGNwID0gYWRkUGFyYW0oY3AsIGJyLCAmbik7DQorICAgIGNwID0gYWRk UGFyYW0oY3AsIHdkLCAmbik7DQorICAgIGNwID0gYWRkUGFyYW0oY3AsIGxu LCAmbik7DQorICAgIGNwID0gYWRkUGFyYW0oY3AsIGRmLCAmbik7DQorICAg IGNwID0gYWRkUGFyYW0oY3AsIGVjLCAmbik7DQorICAgIGNwID0gYWRkUGFy YW0oY3AsIGJmLCAmbik7DQorICAgIGNwID0gYWRkUGFyYW0oY3AsIHN0LCAm bik7DQogICAgIHJldHVybiBmeFN0cihidWYpOw0KIH0NCiANCmRpZmYgLXJ1 IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9G YXhDbGllbnQuYysrIC4vdXRpbC9GYXhDbGllbnQuYysrDQotLS0gL3RtcC9v bGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL0ZheENsaWVu dC5jKysJU2F0IEZlYiAxNCAxMTo0NzoxNiAxOTk4DQorKysgLi91dGlsL0Zh eENsaWVudC5jKysJU3VuIEZlYiAyMCAyMjoxOToyOCAyMDAwDQpAQCAtNjIy LDcgKzYyMiw3IEBADQogCSAgICB0cmFjZVNlcnZlcigiLT4gQURNSU4gWFhY WCIpOw0KIAllbHNlIHsNCiAJICAgIGNoYXIgYnVmWzEyOF07DQotCSAgICBz cHJpbnRmKGJ1ZiwgIi0+ICVzIiwgZm10KTsNCisJICAgIHNucHJpbnRmKGJ1 ZiwgMTI4LCAiLT4gJXMiLCBmbXQpOw0KIAkgICAgdnRyYWNlU2VydmVyKGJ1 ZiwgYXApOw0KIAl9DQogICAgIH0NCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFm YXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9QYWdlU2l6ZS5jKysgLi91 dGlsL1BhZ2VTaXplLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9o eWxhZmF4LXY0LjBwbDIvdXRpbC9QYWdlU2l6ZS5jKysJU2F0IEZlYiAxNCAx MTo0NzoyMSAxOTk4DQorKysgLi91dGlsL1BhZ2VTaXplLmMrKwlTdW4gRmVi IDIwIDIyOjE5OjI4IDIwMDANCkBAIC03Miw3ICs3Miw3IEBADQogUGFnZVNp emVJbmZvOjpyZWFkUGFnZUluZm9GaWxlKCkNCiB7DQogICAgIGNoYXIgZmls ZVsxMDI0XTsNCi0gICAgc3ByaW50ZihmaWxlLCAiJXMvJXMiLCBGQVhfTElC REFUQSwgRkFYX1BBR0VTSVpFUyk7DQorICAgIHNucHJpbnRmKGZpbGUsIDEw MjQsICIlcy8lcyIsIEZBWF9MSUJEQVRBLCBGQVhfUEFHRVNJWkVTKTsNCiAg ICAgUGFnZUluZm9BcnJheSogaW5mbyA9IG5ldyBQYWdlSW5mb0FycmF5Ow0K ICAgICBGSUxFKiBmcCA9IGZvcGVuKGZpbGUsICJyIik7DQogICAgIHVfaW50 IGxpbmVubyA9IDA7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv aHlsYWZheC12NC4wcGwyL3V0aWwvU05QUENsaWVudC5jKysgLi91dGlsL1NO UFBDbGllbnQuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFm YXgtdjQuMHBsMi91dGlsL1NOUFBDbGllbnQuYysrCVNhdCBGZWIgMTQgMTE6 NDc6MjUgMTk5OA0KKysrIC4vdXRpbC9TTlBQQ2xpZW50LmMrKwlTdW4gRmVi IDIwIDIyOjE5OjI4IDIwMDANCkBAIC02MzgsNyArNjM4LDcgQEANCiAJICAg IHRyYWNlU2VydmVyKCItPiBMT0dJIFhYWFgiKTsNCiAJZWxzZSB7DQogCSAg ICBjaGFyIGJ1ZlsxMjhdOw0KLQkgICAgc3ByaW50ZihidWYsICItPiAlcyIs IGZtdCk7DQorCSAgICBzbnByaW50ZihidWYsIDEyOCwgIi0+ICVzIiwgZm10 KTsNCiAJICAgIHZ0cmFjZVNlcnZlcihidWYsIGFwKTsNCiAJfQ0KICAgICB9 DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4w cGwyL3V0aWwvU3RhY2tCdWZmZXIuYysrIC4vdXRpbC9TdGFja0J1ZmZlci5j KysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwy L3V0aWwvU3RhY2tCdWZmZXIuYysrCVNhdCBGZWIgMTQgMTE6NDc6MjYgMTk5 OA0KKysrIC4vdXRpbC9TdGFja0J1ZmZlci5jKysJU3VuIEZlYiAyMCAyMjox OToyOCAyMDAwDQpAQCAtMTA1LDcgKzEwNSw3IEBADQogZnhTdGFja0J1ZmZl cjo6dnB1dChjb25zdCBjaGFyKiBmbXQsIHZhX2xpc3QgYXApDQogew0KICAg ICBjaGFyIGJ1Zls4KjEwMjRdOw0KLSAgICB2c3ByaW50ZihidWYsIGZtdCwg YXApOw0KKyAgICB2c25wcmludGYoYnVmLCA4KjEwMjQsIGZtdCwgYXApOw0K ICAgICBwdXQoYnVmKTsNCiB9DQogDQpkaWZmIC1ydSAvdG1wL29sZC9oeWxh ZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3V0aWwvU3RyLmMrKyAuL3V0aWwv U3RyLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0 LjBwbDIvdXRpbC9TdHIuYysrCVNhdCBGZWIgMTQgMTE6NDc6MjcgMTk5OA0K KysrIC4vdXRpbC9TdHIuYysrCVN1biBGZWIgMjAgMjI6MTk6MjggMjAwMA0K QEAgLTkxLDcgKzkxLDcgQEANCiB7DQogICAgIGNoYXIgYnVmZmVyW05VTUJV RlNJWkVdOw0KICAgICBpZiAoIWZvcm1hdCkgZm9ybWF0ID0gIiVkIjsNCi0g ICAgc3ByaW50ZihidWZmZXIsZm9ybWF0LGEpOw0KKyAgICBzbnByaW50Zihi dWZmZXIsIE5VTUJVRlNJWkUsIGZvcm1hdCxhKTsNCiAgICAgc2xlbmd0aCA9 IHN0cmxlbihidWZmZXIpICsgMTsNCiAgICAgZGF0YSA9IChjaGFyKikgbWFs bG9jKHNsZW5ndGgpOw0KICAgICBtZW1jcHkoZGF0YSxidWZmZXIsc2xlbmd0 aCk7DQpAQCAtMTAxLDcgKzEwMSw3IEBADQogew0KICAgICBjaGFyIGJ1ZmZl cltOVU1CVUZTSVpFXTsNCiAgICAgaWYgKCFmb3JtYXQpIGZvcm1hdCA9ICIl bGQiOw0KLSAgICBzcHJpbnRmKGJ1ZmZlcixmb3JtYXQsYSk7DQorICAgIHNu cHJpbnRmKGJ1ZmZlciwgTlVNQlVGU0laRSwgZm9ybWF0LGEpOw0KICAgICBz bGVuZ3RoID0gc3RybGVuKGJ1ZmZlcikgKyAxOw0KICAgICBkYXRhID0gKGNo YXIqKSBtYWxsb2Moc2xlbmd0aCk7DQogICAgIG1lbWNweShkYXRhLGJ1ZmZl cixzbGVuZ3RoKTsNCkBAIC0xMTEsNyArMTExLDcgQEANCiB7DQogICAgIGNo YXIgYnVmZmVyW05VTUJVRlNJWkVdOw0KICAgICBpZiAoIWZvcm1hdCkgZm9y bWF0ID0gIiVnIjsNCi0gICAgc3ByaW50ZihidWZmZXIsZm9ybWF0LGEpOw0K KyAgICBzbnByaW50ZihidWZmZXIsIE5VTUJVRlNJWkUsIGZvcm1hdCxhKTsN CiAgICAgc2xlbmd0aCA9IHN0cmxlbihidWZmZXIpICsgMTsNCiAgICAgZnhB c3NlcnQoc2xlbmd0aD4xLCAiU3RyOjpTdHIoZmxvYXQpOiBib2d1cyBjb252 ZXJzaW9uIik7DQogICAgIGRhdGEgPSAoY2hhciopIG1hbGxvYyhzbGVuZ3Ro KTsNCkBAIC0xMjIsNyArMTIyLDcgQEANCiB7DQogICAgIGNoYXIgYnVmZmVy W05VTUJVRlNJWkVdOw0KICAgICBpZiAoIWZvcm1hdCkgZm9ybWF0ID0gIiVs ZyI7DQotICAgIHNwcmludGYoYnVmZmVyLGZvcm1hdCxhKTsNCisgICAgc25w cmludGYoYnVmZmVyLCBOVU1CVUZTSVpFLCBmb3JtYXQsYSk7DQogICAgIHNs ZW5ndGggPSBzdHJsZW4oYnVmZmVyKSArIDE7DQogICAgIGZ4QXNzZXJ0KHNs ZW5ndGg+MSwgIlN0cjo6U3RyKGRvdWJsZSk6IGJvZ3VzIGNvbnZlcnNpb24i KTsNCiAgICAgZGF0YSA9IChjaGFyKikgbWFsbG9jKHNsZW5ndGgpOyAvLyBY WFggYXNzdW1lIHNsZW5ndGg+MQ0KQEAgLTE0MSw3ICsxNDEsNyBAQA0KICAg ICBjaGFyIGJ1Zls0MDk2XTsNCiAgICAgdmFfbGlzdCBhcDsNCiAgICAgdmFf c3RhcnQoYXAsIGZtdCk7DQotICAgIHZzcHJpbnRmKGJ1ZiwgZm10LCBhcCk7 DQorICAgIHZzbnByaW50ZihidWYsIDQwOTYsIGZtdCwgYXApOw0KICAgICB2 YV9lbmQoYXApOw0KICAgICByZXR1cm4gZnhTdHIoYnVmKTsNCiB9DQpAQCAt MTUwLDcgKzE1MCw3IEBADQogZnhTdHI6OnZmb3JtYXQoY29uc3QgY2hhciog Zm10LCB2YV9saXN0IGFwKQ0KIHsNCiAgICAgY2hhciBidWZbNDA5Nl07DQot ICAgIHZzcHJpbnRmKGJ1ZiwgZm10LCBhcCk7DQorICAgIHZzbnByaW50Zihi dWYsIDQwOTYsIGZtdCwgYXApOw0KICAgICByZXR1cm4gZnhTdHIoYnVmKTsN CiB9DQogDQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZh eC12NC4wcGwyL3V0aWwvU3RyLmggLi91dGlsL1N0ci5oDQotLS0gL3RtcC9v bGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL1N0ci5oCVNh dCBGZWIgMTQgMTE6NDc6NTAgMTk5OA0KKysrIC4vdXRpbC9TdHIuaAlTdW4g RmViIDIwIDIyOjE5OjI4IDIwMDANCkBAIC05Myw4ICs5Myw4IEBADQogICAg IGZ4U3RyKGNvbnN0IGZ4VGVtcFN0ciYpOw0KICAgICB+ZnhTdHIoKTsNCiAN Ci0gICAgc3RhdGljIGZ4U3RyIGZvcm1hdChjb25zdCBjaGFyKiBmbXQgLi4u KTsJLy8gc3ByaW50ZiBzb3J0IG9mDQotICAgIHN0YXRpYyBmeFN0ciB2Zm9y bWF0KGNvbnN0IGNoYXIqIGZtdCwgdmFfbGlzdCBhcCk7CS8vIHZzcHJpbnRm IHNvcnQgb2YNCisgICAgc3RhdGljIGZ4U3RyIGZvcm1hdChjb25zdCBjaGFy KiBmbXQgLi4uKTsJLy8gc25wcmludGYgc29ydCBvZg0KKyAgICBzdGF0aWMg ZnhTdHIgdmZvcm1hdChjb25zdCBjaGFyKiBmbXQsIHZhX2xpc3QgYXApOwkv LyB2c25wcmludGYgc29ydCBvZg0KICAgICBzdGF0aWMgZnhTdHIgbnVsbDsJ CQkJLy8gbnVsbCBzdHJpbmcgZm9yIGdlbmVyYWwgdXNlDQogICAgIC8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vDQogICAgIHVfbG9uZyBoYXNoKCkgY29uc3Q7DQpkaWZmIC1ydSAvdG1w L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3V0aWwvZmF4Y29u ZmlnLmMgLi91dGlsL2ZheGNvbmZpZy5jDQotLS0gL3RtcC9vbGQvaHlsYWZh eC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL2ZheGNvbmZpZy5jCU1vbiBG ZWIgMjEgMTU6MTk6NDQgMjAwMA0KKysrIC4vdXRpbC9mYXhjb25maWcuYwlT dW4gRmViIDIwIDIyOjE5OjI4IDIwMDANCkBAIC04Myw3ICs4Myw3IEBADQog CWlmIChkZXZpZFswXSA9PSBGQVhfRklGT1swXSkNCiAJICAgIHN0cmNweShm aWZvbmFtZSwgZGV2aWQpOw0KIAllbHNlDQotCSAgICBzcHJpbnRmKGZpZm9u YW1lLCAiJXMuJS4qcyIsIEZBWF9GSUZPLA0KKwkgICAgc25wcmludGYoZmlm b25hbWUsIDgwLCAiJXMuJS4qcyIsIEZBWF9GSUZPLA0KIAkJc2l6ZW9mIChm aWZvbmFtZSkgLSBzaXplb2YgKEZBWF9GSUZPKSwgZGV2aWQpOw0KICAgICB9 IGVsc2UNCiAJc3RyY3B5KGZpZm9uYW1lLCBGQVhfRklGTyk7DQpAQCAtMTEx LDEwICsxMTEsMTAgQEANCiAJCXF1b3RlID0gMTsNCiAJICAgIGNtZCA9IG1h bGxvYyhzdHJsZW4oYXJndltvcHRpbmRdKStzdHJsZW4oYXJndltvcHRpbmQr MV0pKzEwKTsNCiAJICAgIGlmIChxdW90ZSkNCi0JCXNwcmludGYoY21kLCAi QyVzJXM6XCIlc1wiIiwNCisJCXNucHJpbnRmKGNtZCwgc3RybGVuKGFyZ3Zb b3B0aW5kXSkrc3RybGVuKGFyZ3Zbb3B0aW5kKzFdKzEwLCAiQyVzJXM6XCIl c1wiIiwNCiAJCSAgICBpc1F1ZXVlciA/ICI6IiA6ICIiLCBhcmd2W29wdGlu ZF0sIGFyZ3Zbb3B0aW5kKzFdKTsNCiAJICAgIGVsc2UNCi0JCXNwcmludGYo Y21kLCAiQyVzJXM6JXMiLA0KKwkJc25wcmludGYoY21kLCBzdHJsZW4oYXJn dltvcHRpbmRdK3N0cmxlbihhcmd2W29wdGluZCsxXSsxMCkiQyVzJXM6JXMi LA0KIAkJICAgIGlzUXVldWVyID8gIjoiIDogIiIsIGFyZ3Zbb3B0aW5kXSwg YXJndltvcHRpbmQrMV0pOw0KIAkgICAgaWYgKHdyaXRlKGZpZm8sIGNtZCwg c3RybGVuKGNtZCkpICE9IHN0cmxlbihjbWQpKQ0KIAkJZmF0YWwoIiVzOiBG SUZPIHdyaXRlIGZhaWxlZCBmb3IgY29tbWFuZCAoJXMpIiwNCmRpZmYgLXJ1 IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9m YXhtb2RlbS5jIC4vdXRpbC9mYXhtb2RlbS5jDQotLS0gL3RtcC9vbGQvaHls YWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL2ZheG1vZGVtLmMJTW9u IEZlYiAyMSAxNToxOTo0NCAyMDAwDQorKysgLi91dGlsL2ZheG1vZGVtLmMJ U3VuIEZlYiAyMCAyMjoxOToyOCAyMDAwDQpAQCAtMjQzLDkgKzI0Myw5IEBA DQogICAgIGlmIChvcHRpbmQgIT0gYXJnYy0xKQ0KIAlmYXRhbCgiTWlzc2lu ZyBtb2RlbSBkZXZpY2UuXG51c2FnZTogJXMgJXMgbW9kZW0iLCBhcmd2WzBd LCB1c2FnZSk7DQogICAgIGlmIChzdHJuY21wKGFyZ3Zbb3B0aW5kXSwgX1BB VEhfREVWLCBzdHJsZW4oX1BBVEhfREVWKSkgPT0gMCkNCi0Jc3RyY3B5KGRl dm5hbWUsIGFyZ3Zbb3B0aW5kXStzdHJsZW4oX1BBVEhfREVWKSk7DQorCXN0 cmxjcHkoZGV2bmFtZSwgYXJndltvcHRpbmRdK3N0cmxlbihfUEFUSF9ERVYp LCA4MCk7DQogICAgIGVsc2UNCi0Jc3RyY3B5KGRldm5hbWUsIGFyZ3Zbb3B0 aW5kXSk7DQorCXN0cmxjcHkoZGV2bmFtZSwgYXJndltvcHRpbmRdLCA4MCk7 DQogICAgIGZvciAoY3AgPSBkZXZuYW1lOyBjcCA9IHN0cmNocihjcCwgJy8n KTsgKmNwKysgPSAnXycpDQogCTsNCiAgICAgaWYgKGNoZGlyKHNwb29sZGly KSA8IDApDQpAQCAtMjU0LDkgKzI1NCw5IEBADQogICAgIGlmIChmaWZvIDwg MCkNCiAJZmF0YWwoIiVzOiBvcGVuOiAlcyIsIEZBWF9GSUZPLCBzdHJlcnJv cihlcnJubykpOw0KICAgICBpZiAocHJpb3JpdHkgIT0gLTEpDQotCXNwcmlu dGYoY21kLCAiKyVzOlIlYyUwOHg6JXgiLCBkZXZuYW1lLCBjYW5wb2xsLCBj YXBzLCBwcmlvcml0eSk7DQorCXNucHJpbnRmKGNtZCwgODAsICIrJXM6UiVj JTA4eDoleCIsIGRldm5hbWUsIGNhbnBvbGwsIGNhcHMsIHByaW9yaXR5KTsN CiAgICAgZWxzZQ0KLQlzcHJpbnRmKGNtZCwgIislczpSJWMlMDh4IiwgZGV2 bmFtZSwgY2FucG9sbCwgY2Fwcyk7DQorCXNucHJpbnRmKGNtZCwgODAsICIr JXM6UiVjJTA4eCIsIGRldm5hbWUsIGNhbnBvbGwsIGNhcHMpOw0KICAgICBp ZiAod3JpdGUoZmlmbywgY21kLCBzdHJsZW4oY21kKSkgIT0gc3RybGVuKGNt ZCkpDQogCWZhdGFsKCIlczogRklGTyB3cml0ZSBmYWlsZWQgZm9yIGNvbW1h bmQgKCVzKSIsDQogCSAgICBhcmd2WzBdLCBzdHJlcnJvcihlcnJubykpOw0K ZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBs Mi91dGlsL2ZheG1zZy5jIC4vdXRpbC9mYXhtc2cuYw0KLS0tIC90bXAvb2xk L2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9mYXhtc2cuYwlN b24gRmViIDIxIDE1OjE5OjQ0IDIwMDANCisrKyAuL3V0aWwvZmF4bXNnLmMJ U3VuIEZlYiAyMCAyMjoxOToyOCAyMDAwDQpAQCAtMTA4LDEyICsxMDgsMTIg QEANCiAJfQ0KICAgICBpZiAob3B0aW5kID09IGFyZ2MtMSkgew0KIAlpZiAo YXJndltvcHRpbmRdWzBdID09IEZBWF9GSUZPWzBdKQ0KLQkgICAgc3RyY3B5 KGZpZm9uYW1lLCBhcmd2W29wdGluZF0pOw0KKwkgICAgc3RybGNweShmaWZv bmFtZSwgYXJndltvcHRpbmRdLCAyNTYpOw0KIAllbHNlDQotCSAgICBzcHJp bnRmKGZpZm9uYW1lLCAiJXMuJS4qcyIsIEZBWF9GSUZPLA0KKwkgICAgc25w cmludGYoZmlmb25hbWUsIDI1NiwgIiVzLiUuKnMiLCBGQVhfRklGTywNCiAJ CXNpemVvZiAoZmlmb25hbWUpIC0gc2l6ZW9mIChGQVhfRklGTyksIGFyZ3Zb b3B0aW5kXSk7DQogICAgIH0gZWxzZSBpZiAoIW1vZGVtUmVxdWlyZWQpIHsN Ci0Jc3RyY3B5KGZpZm9uYW1lLCBGQVhfRklGTyk7DQorCXN0cmxjcHkoZmlm b25hbWUsIEZBWF9GSUZPLCAyNTYpOw0KICAgICB9IGVsc2UNCiAJZmF0YWwo InVzYWdlOiAlcyAlcyIsIGFyZ3ZbMF0sIHVzYWdlKTsNCiAgICAgZm9yIChj cCA9IGZpZm9uYW1lOyBjcCA9IHN0cmNocihjcCwgJy8nKTsgKmNwKysgPSAn XycpDQpAQCAtMTIzLDcgKzEyMyw3IEBADQogICAgIGZpZm8gPSBvcGVuKGZp Zm9uYW1lLCBPX1dST05MWXxPX05ERUxBWSk7DQogICAgIGlmIChmaWZvIDwg MCkNCiAJZmF0YWwoIiVzOiBvcGVuOiAlcyIsIGZpZm9uYW1lLCBzdHJlcnJv cihlcnJubykpOw0KLSAgICBzcHJpbnRmKGNtZCwgY21kZm10LCBhcmcpOw0K KyAgICBzbnByaW50ZihjbWQsIDgwLCBjbWRmbXQsIGFyZyk7DQogICAgIGlm ICh3cml0ZShmaWZvLCBjbWQsIHN0cmxlbihjbWQpKSAhPSBzdHJsZW4oY21k KSkNCiAJZmF0YWwoIkZJRk8gd3JpdGUgZmFpbGVkIGZvciBjb21tYW5kICgl cykiLCBzdHJlcnJvcihlcnJubykpOw0KICAgICAodm9pZCkgY2xvc2UoZmlm byk7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12 NC4wcGwyL3V0aWwvZmF4c3RhdGUuYyAuL3V0aWwvZmF4c3RhdGUuYw0KLS0t IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9m YXhzdGF0ZS5jCU1vbiBGZWIgMjEgMTU6MTk6NDQgMjAwMA0KKysrIC4vdXRp bC9mYXhzdGF0ZS5jCVN1biBGZWIgMjAgMjI6MTk6MjggMjAwMA0KQEAgLTEx Myw3ICsxMTMsNyBAQA0KIAl9DQogICAgIGlmIChvcHRpbmQgIT0gYXJnYy0x KQ0KIAlmYXRhbCgiQmFkIG9wdGlvbiBgJWMnOyB1c2FnZTogJXMgJXMgbW9k ZW0iLCBjLCBhcmd2WzBdLCB1c2FnZSk7DQotICAgIHN0cmNweShkZXZpZCwg YXJndltvcHRpbmRdKTsNCisgICAgc3RybGNweShkZXZpZCwgYXJndltvcHRp bmRdLCAyNTYpOw0KICAgICBmb3IgKGNwID0gZGV2aWQ7IGNwID0gc3RyY2hy KGNwLCAnLycpOyAqY3ArKyA9ICdfJykNCiAJOw0KICAgICBpZiAoY2hkaXIo c3Bvb2xkaXIpIDwgMCkNCkBAIC0xMjYsMTYgKzEyNiwxNiBAQA0KIAlmaWZv ID0gb3BlbihGQVhfRklGTywgT19XUk9OTFl8T19OREVMQVkpOw0KIAlpZiAo ZmlmbyA8IDApDQogCSAgICBmYXRhbCgiJXM6IG9wZW46ICVzIiwgRkFYX0ZJ Rk8sIHN0cmVycm9yKGVycm5vKSk7DQotCXNwcmludGYoY21kLCAiKyVzOiVz IiwgZGV2aWQsIGFyZyk7DQorCXNucHJpbnRmKGNtZCwgODAsICIrJXM6JXMi LCBkZXZpZCwgYXJnKTsNCiAJaWYgKHdyaXRlKGZpZm8sIGNtZCwgc3RybGVu KGNtZCkpICE9IHN0cmxlbihjbWQpKQ0KIAkgICAgZmF0YWwoIkZJRk8gd3Jp dGUgZmFpbGVkIGZvciBjb21tYW5kICglcykiLCBzdHJlcnJvcihlcnJubykp Ow0KICAgICB9IGVsc2Ugew0KLQlzcHJpbnRmKGZpZm9uYW1lLCAiJXMuJS4q cyIsIEZBWF9GSUZPLA0KKwlzbnByaW50ZihmaWZvbmFtZSwgMjU2LCAiJXMu JS4qcyIsIEZBWF9GSUZPLA0KIAkgICAgc2l6ZW9mIChmaWZvbmFtZSkgLSBz aXplb2YgKEZBWF9GSUZPKSwgZGV2aWQpOw0KIAlmaWZvID0gb3BlbihmaWZv bmFtZSwgT19XUk9OTFl8T19OREVMQVkpOw0KIAlpZiAoZmlmbyA8IDApIA0K IAkgICAgZmF0YWwoIiVzOiBvcGVuOiAlcyIsIGZpZm9uYW1lLCBzdHJlcnJv cihlcnJubykpOw0KLQlzcHJpbnRmKGNtZCwgIlMlcyIsIGFyZyk7DQorCXNu cHJpbnRmKGNtZCwgODAsICJTJXMiLCBhcmcpOw0KIAlpZiAod3JpdGUoZmlm bywgY21kLCBzdHJsZW4oY21kKSkgIT0gc3RybGVuKGNtZCkpDQogCSAgICBm YXRhbCgiRklGTyB3cml0ZSBmYWlsZWQgZm9yIGNvbW1hbmQgKCVzKSIsIHN0 cmVycm9yKGVycm5vKSk7DQogICAgIH0NCg== --0-1812434641-951170710=:25667-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message