From owner-freebsd-ports@FreeBSD.ORG Mon Mar 25 06:37:12 2013 Return-Path: Delivered-To: ports@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id D05BA146 for ; Mon, 25 Mar 2013 06:37:12 +0000 (UTC) (envelope-from itechbear@gmail.com) Received: from mail-oa0-f52.google.com (mail-oa0-f52.google.com [209.85.219.52]) by mx1.freebsd.org (Postfix) with ESMTP id 92CD0E41 for ; Mon, 25 Mar 2013 06:37:12 +0000 (UTC) Received: by mail-oa0-f52.google.com with SMTP id k14so5906013oag.25 for ; Sun, 24 Mar 2013 23:37:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=lXpgfrWGJ1W//LVdQ8cEO5SDvFk3n04ifVw/tbhsi2o=; b=aHq9AqJLV2Hd30Oz8MLmyV/EERcSR80HXxDT50sohBdHYDgnV5j+w/hKua+93Lij4p eV88r3MKA1Xh4vtP7NNo6TzTEHTH52Sp0ptj8ReUxjH0Cr9uahajWRmIAyoMVPjn2/fa wmjW5reHFNYmF6ZlgFTsxvx3TGvNfrKi3YAf9FwH07BZovgf9YJKcsc09Q8l+r7bwtWV c9v8FwUL0mY8WT6X/kwpgLr5gjklWFQie+G0lKQbIgGF1BOSFeGHGccyO0EMrrgYboQF +YVIWe6zVhWS7KL9w8PA0VtzJp3ajnaeBTloUanac/4+O0QPfLaN/G86i+r9uNrj68SR 7+hA== MIME-Version: 1.0 X-Received: by 10.60.11.228 with SMTP id t4mr9846867oeb.42.1364193426024; Sun, 24 Mar 2013 23:37:06 -0700 (PDT) Received: by 10.60.33.231 with HTTP; Sun, 24 Mar 2013 23:37:05 -0700 (PDT) In-Reply-To: <001801ce291f$346878f0$9d396ad0$@sifinc.cn> References: <001801ce291f$346878f0$9d396ad0$@sifinc.cn> Date: Mon, 25 Mar 2013 14:37:05 +0800 Message-ID: Subject: Re: postfix-vda-v11-2.9.5.patch From: HU Dong To: =?GB2312?B?s8LS5tLl?= Content-Type: multipart/mixed; boundary=e89a8fb1ed0690339604d8ba0895 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: "freebsd-ports@freebsd.org" X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Mar 2013 06:37:12 -0000 --e89a8fb1ed0690339604d8ba0895 Content-Type: text/plain; charset=ISO-8859-1 you can manually download the patch from sourceforge.net through any proxy... also, you can use the attached file i downloaded just now. just put it in /usr/ports/distfiles/postfix or /usr/ports/distfiles. give it a try. remember to check the patch that it doesn't contain any malicious code before using it. B.R. HU Dong --e89a8fb1ed0690339604d8ba0895 Content-Type: application/octet-stream; name="postfix-vda-v11-2.9.5.patch" Content-Disposition: attachment; filename="postfix-vda-v11-2.9.5.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hep9ipq10 ZGlmZiAtdU5yIHBvc3RmaXgtMi45LjUub3JpZy9SRUFETUVfRklMRVMvVkRBX1JFQURNRSBwb3N0 Zml4LTIuOS41L1JFQURNRV9GSUxFUy9WREFfUkVBRE1FCi0tLSBwb3N0Zml4LTIuOS41Lm9yaWcv UkVBRE1FX0ZJTEVTL1ZEQV9SRUFETUUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAx MDAKKysrIHBvc3RmaXgtMi45LjUvUkVBRE1FX0ZJTEVTL1ZEQV9SRUFETUUJMjAxMi0wMy0wMiAw ODozMDoxMi4wNzk1MzcwNTIgKzAxMDAKQEAgLTAsMCArMSwxMCBAQAorUG9zdGZpeCBWREEgcGF0 Y2ggZm9yIG1haWxkaXIrKyBxdW90YSBzdXBwb3J0IGJ5IAorICAgIEFuZGVyc29uIE5hZGFsIDxh bmRlcm5hZGFsQGdtYWlsLmNvbT4KKyAgICBUb21hcyBNYWNlayA8bWFjYTAyQGF0bGFzLmN6Pgor ICAgIEx1Y2NhIExvbmdpbm90dGkKKworU2VlIFZEQSBwYXRjaCBvZmZpY2lhbCB3ZWJzaXRlIGh0 dHA6Ly92ZGEuc2YubmV0IGZvciBpbnN0cnVjdGlvbnMKK2hvd3RvIHBhdGNoIHRoZSBQb3N0Zml4 J3Mgc291cmNldHJlZSBhbmQgY29uZmlndXJlIHRoZSBvcHRpb25zIAorcHJvdmlkZWQgYnkgdGhp cyBwYXRjaC4KKworCmRpZmYgLXVOciBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL2dsb2JhbC9tYWls X3BhcmFtcy5oIHBvc3RmaXgtMi45LjUvc3JjL2dsb2JhbC9tYWlsX3BhcmFtcy5oCi0tLSBwb3N0 Zml4LTIuOS41Lm9yaWcvc3JjL2dsb2JhbC9tYWlsX3BhcmFtcy5oCTIwMTItMDEtMTUgMDE6MzY6 MzcuMDAwMDAwMDAwICswMTAwCisrKyBwb3N0Zml4LTIuOS41L3NyYy9nbG9iYWwvbWFpbF9wYXJh bXMuaAkyMDEyLTAzLTAyIDA4OjMwOjEyLjA3OTUzNzA1MiArMDEwMApAQCAtMjM2MCw2ICsyMzYw LDU0IEBACiAjZGVmaW5lIERFRl9WSVJUX0dJRF9NQVBTCQkiIgogZXh0ZXJuIGNoYXIgKnZhcl92 aXJ0X2dpZF9tYXBzOwogCisjZGVmaW5lIFZBUl9WSVJUX01BSUxCT1hfTElNSVRfTUFQUyAgICAg InZpcnR1YWxfbWFpbGJveF9saW1pdF9tYXBzIgorI2RlZmluZSBERUZfVklSVF9NQUlMQk9YX0xJ TUlUX01BUFMgICAgICIiCitleHRlcm4gY2hhciAqdmFyX3ZpcnRfbWFpbGJveF9saW1pdF9tYXBz OworCisjZGVmaW5lIFZBUl9WSVJUX01BSUxCT1hfTElNSVRfSU5CT1ggICAgInZpcnR1YWxfbWFp bGJveF9saW1pdF9pbmJveCIKKyNkZWZpbmUgREVGX1ZJUlRfTUFJTEJPWF9MSU1JVF9JTkJPWCAg ICAwCitleHRlcm4gYm9vbCB2YXJfdmlydF9tYWlsYm94X2xpbWl0X2luYm94OworCisjZGVmaW5l IFZBUl9WSVJUX01BSUxCT1hfTElNSVRfT1ZFUlJJREUgInZpcnR1YWxfbWFpbGJveF9saW1pdF9v dmVycmlkZSIKKyNkZWZpbmUgREVGX1ZJUlRfTUFJTEJPWF9MSU1JVF9PVkVSUklERSAwCitleHRl cm4gYm9vbCB2YXJfdmlydF9tYWlsYm94X2xpbWl0X292ZXJyaWRlOworCisjZGVmaW5lIFZBUl9W SVJUX01BSUxESVJfRVhURU5ERUQgICAgICAgInZpcnR1YWxfbWFpbGRpcl9leHRlbmRlZCIKKyNk ZWZpbmUgREVGX1ZJUlRfTUFJTERJUl9FWFRFTkRFRCAgICAgICAwCitleHRlcm4gYm9vbCB2YXJf dmlydF9tYWlsZGlyX2V4dGVuZGVkOworCisjZGVmaW5lIFZBUl9WSVJUX09WRVJRVU9UQV9CT1VO Q0UgICAgICAgInZpcnR1YWxfb3ZlcnF1b3RhX2JvdW5jZSIKKyNkZWZpbmUgREVGX1ZJUlRfT1ZF UlFVT1RBX0JPVU5DRSAgICAgICAwCitleHRlcm4gYm9vbCB2YXJfdmlydF9vdmVycXVvdGFfYm91 bmNlOworCisjZGVmaW5lIFZBUl9WSVJUX01BSUxESVJfTElNSVRfTUVTU0FHRSAgInZpcnR1YWxf bWFpbGRpcl9saW1pdF9tZXNzYWdlIgorI2RlZmluZSBERUZfVklSVF9NQUlMRElSX0xJTUlUX01F U1NBR0UgICJTb3JyeSwgdGhlIHVzZXIncyBtYWlsZGlyIGhhcyBvdmVyZHJhd24gaGlzIGRpc2tz cGFjZSBxdW90YSwgcGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4iCitleHRlcm4gY2hhciAqdmFyX3Zp cnRfbWFpbGRpcl9saW1pdF9tZXNzYWdlOworCisjZGVmaW5lIFZBUl9WSVJUX01BSUxESVJfTElN SVRfTUVTU0FHRV9NQVBTICJ2aXJ0dWFsX21haWxkaXJfbGltaXRfbWVzc2FnZV9tYXBzIgorI2Rl ZmluZSBERUZfVklSVF9NQUlMRElSX0xJTUlUX01FU1NBR0VfTUFQUyAiIgorZXh0ZXJuIGNoYXIg KnZhcl92aXJ0X21haWxkaXJfbGltaXRfbWVzc2FnZV9tYXBzOworCisjZGVmaW5lIFZBUl9WSVJU X01BSUxESVJfU1VGRklYICAgICAgICAgInZpcnR1YWxfbWFpbGRpcl9zdWZmaXgiCisjZGVmaW5l IERFRl9WSVJUX01BSUxESVJfU1VGRklYICAgICAgICAgIiIKK2V4dGVybiBjaGFyICp2YXJfdmly dF9tYWlsZGlyX3N1ZmZpeDsKKworI2RlZmluZSBWQVJfVklSVF9UUkFTSF9DT1VOVCAgICAgICAg ICAgICJ2aXJ0dWFsX3RyYXNoX2NvdW50IgorI2RlZmluZSBERUZfVklSVF9UUkFTSF9DT1VOVCAg ICAgICAgICAgIDAKK2V4dGVybiBib29sIHZhcl92aXJ0X3RyYXNoX2NvdW50OworCisjZGVmaW5l IFZBUl9WSVJUX1RSQVNIX05BTUUgICAgICAgICAgICAgInZpcnR1YWxfdHJhc2hfbmFtZSIKKyNk ZWZpbmUgREVGX1ZJUlRfVFJBU0hfTkFNRSAgICAgICAgICAgICAiLlRyYXNoIgorZXh0ZXJuIGNo YXIgKnZhcl92aXJ0X3RyYXNoX25hbWU7CisKKyNkZWZpbmUgVkFSX1ZJUlRfTUFJTERJUl9GSUxU RVIgICAgICAgICAidmlydHVhbF9tYWlsZGlyX2ZpbHRlciIKKyNkZWZpbmUgREVGX1ZJUlRfTUFJ TERJUl9GSUxURVIgICAgICAgICAwCitleHRlcm4gYm9vbCB2YXJfdmlydF9tYWlsZGlyX2ZpbHRl cjsKKworI2RlZmluZSBWQVJfVklSVF9NQUlMRElSX0ZJTFRFUl9NQVBTICAgICJ2aXJ0dWFsX21h aWxkaXJfZmlsdGVyX21hcHMiCisjZGVmaW5lIERFRl9WSVJUX01BSUxESVJfRklMVEVSX01BUFMg ICAgIiIKK2V4dGVybiBjaGFyICp2YXJfdmlydF9tYWlsZGlyX2ZpbHRlcl9tYXBzOworCiAjZGVm aW5lIFZBUl9WSVJUX01JTlVJRAkJCSJ2aXJ0dWFsX21pbmltdW1fdWlkIgogI2RlZmluZSBERUZf VklSVF9NSU5VSUQJCQkxMDAKIGV4dGVybiBpbnQgdmFyX3ZpcnRfbWluaW11bV91aWQ7CmRpZmYg LXVOciBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL3V0aWwvZmlsZV9saW1pdC5jIHBvc3RmaXgtMi45 LjUvc3JjL3V0aWwvZmlsZV9saW1pdC5jCi0tLSBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL3V0aWwv ZmlsZV9saW1pdC5jCTIwMDMtMTAtMjIgMjA6NDg6MzYuMDAwMDAwMDAwICswMjAwCisrKyBwb3N0 Zml4LTIuOS41L3NyYy91dGlsL2ZpbGVfbGltaXQuYwkyMDEyLTAzLTAyIDA4OjMwOjEyLjExMDUz NzAzMyArMDEwMApAQCAtODUsNyArODUsMTEgQEAKICNlbHNlCiAgICAgc3RydWN0IHJsaW1pdCBy bGltOwogCi0gICAgcmxpbS5ybGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSBsaW1pdDsKKyAgICAv KiBybGltX21heCBjYW4gb25seSBiZSBjaGFuZ2VkIGJ5IHJvb3QuICovCisgICAgaWYgKGdldHJs aW1pdChSTElNSVRfRlNJWkUsICZybGltKSA8IDApCisgICAgICAgIG1zZ19mYXRhbCgiZ2V0cmxp bWl0OiAlbSIpOworICAgIHJsaW0ucmxpbV9jdXIgPSBsaW1pdDsKKwogICAgIGlmIChzZXRybGlt aXQoUkxJTUlUX0ZTSVpFLCAmcmxpbSkgPCAwKQogCW1zZ19mYXRhbCgic2V0cmxpbWl0OiAlbSIp OwogI2lmZGVmIFNJR1hGU1oKZGlmZiAtdU5yIHBvc3RmaXgtMi45LjUub3JpZy9zcmMvdmlydHVh bC9tYWlsYm94LmMgcG9zdGZpeC0yLjkuNS9zcmMvdmlydHVhbC9tYWlsYm94LmMKLS0tIHBvc3Rm aXgtMi45LjUub3JpZy9zcmMvdmlydHVhbC9tYWlsYm94LmMJMjAxMS0xMi0yNCAwMzoxMzozMi4w MDAwMDAwMDAgKzAxMDAKKysrIHBvc3RmaXgtMi45LjUvc3JjL3ZpcnR1YWwvbWFpbGJveC5jCTIw MTItMDMtMDIgMDg6MzA6MTIuMTEwNTM3MDMzICswMTAwCkBAIC03MCw2ICs3MCw3MCBAQAogI2Rl ZmluZSBZRVMJMQogI2RlZmluZSBOTwkwCiAKKy8qIGNoYW5nZV9tYWlsYm94X2xpbWl0IC0gY2hh bmdlIGxpbWl0IGZvciBtYWlsYm94IGZpbGUgKi8KK3N0YXRpYyBpbnQgY2hhbmdlX21haWxib3hf bGltaXQoTE9DQUxfU1RBVEUgc3RhdGUsIFVTRVJfQVRUUiB1c3JfYXR0cikKK3sKKyAgICBjaGFy ICpteW5hbWUgPSAiY2hhbmdlX21haWxib3hfbGltaXQiOworICAgIGNvbnN0IGNoYXIgKmxpbWl0 X3JlczsKKyAgICBsb25nIG4gPSAwOworICAgIGludCBzdGF0dXMgPSBOTzsKKworICAgIC8qCisg ICAgICogTG9vayB1cCB0aGUgdmlydHVhbCBtYWlsYm94IGxpbWl0IHNpemUgZm9yIHRoaXMgdXNl ci4KKyAgICAgKiBGYWxsIGJhY2sgdG8gdmlydHVhbF9tYWlsYm94X2xpbWl0IGluIGNhc2UgbG9v a3VwIGZhaWxlZC4KKyAgICAgKiBJZiB2aXJ0dWFsIG1haWxib3ggbGltaXQgc2l6ZSBpcyBuZWdh dGl2ZSwgZmFsbCBiYWNrIHRvIHZpcnR1YWxfbWFpbGJveF9saW1pdC4KKyAgICAgKiBJZiBpdCdz IDAsIHNldCB0aGUgbWFpbGJveCBsaW1pdCB0byAwLCB3aGljaCBtZWFucyB1bmxpbWl0ZWQuCisg ICAgICogSWYgaXQncyBtb3JlIHRoYW4gMCAocG9zaXRpdmUgaW50KSwgY2hlY2sgaWYgdGhlIHZh bHVlIGlzIHNtYWxsZXIgdGhhbiB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUsCisgICAgICogaWYg aXQgaXMgYW5kIHRoZSB2aXJ0dWFsIG1haWxib3ggbGltaXQgY2FuJ3QgYmUgb3ZlcnJpZGRlbiwg ZmFsbCBiYWNrIHRvIHZpcnR1YWxfbWFpbGJveF9saW1pdCBhbmQKKyAgICAgKiB3YXJuIHRoZSB1 c2VyLCBlbHNlIHVzZSB0aGUgdmFsdWUgZGlyZWN0bHkgYXMgdGhlIG1haWxib3ggbGltaXQuCisg ICAgICovCisgICAgaWYgKCp2YXJfdmlydF9tYWlsYm94X2xpbWl0X21hcHMgIT0gMCAmJiAobGlt aXRfcmVzID0gbWFpbF9hZGRyX2ZpbmQodmlydHVhbF9tYWlsYm94X2xpbWl0X21hcHMsIHN0YXRl Lm1zZ19hdHRyLnVzZXIsIChjaGFyICoqKSBOVUxMKSkgIT0gMCkgeworICAgICAgICBuID0gYXRv bChsaW1pdF9yZXMpOworICAgICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgICAgIGlmICgobiA8 IHZhcl9tZXNzYWdlX2xpbWl0KSAmJiAoIXZhcl92aXJ0X21haWxib3hfbGltaXRfb3ZlcnJpZGUp KSB7CisgICAgICAgICAgICAgICAgc2V0X2ZpbGVfbGltaXQodmFyX3ZpcnRfbWFpbGJveF9saW1p dCk7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gTk87CisKKyAgICAgICAgICAgICAgICBtc2df d2FybigiJXM6IHJlY2lwaWVudCAlcyAtIHZpcnR1YWwgbWFpbGJveCBsaW1pdCBpcyAiCisgICAg ICAgICAgICAgICAgICAgICAgICAic21hbGxlciB0aGFuICVzIGluICVzIC0gZmFsbGluZyBiYWNr IHRvICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG15bmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXRlLm1zZ19hdHRyLnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBW QVJfTUVTU0FHRV9MSU1JVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxfbWFpbGJv eF9saW1pdF9tYXBzLT50aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBUl9WSVJUX01B SUxCT1hfTElNSVQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAg ICAgICAgICAgc2V0X2ZpbGVfbGltaXQoKG9mZl90KSBuKTsKKyAgICAgICAgICAgICAgICBzdGF0 dXMgPSBZRVM7CisKKyAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAgICAgICAg ICAgICAgICAgIG1zZ19pbmZvKCIlczogc2V0IHZpcnR1YWwgbWFpbGJveCBsaW1pdCBzaXplIGZv ciAlcyB0byAlbGQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15bmFtZSwgdXNyX2F0 dHIubWFpbGJveCwgbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBp ZiAobiA9PSAwKSB7CisgICAgICAgICAgICAgICAgc2V0X2ZpbGVfbGltaXQoT0ZGX1RfTUFYKTsK KyAgICAgICAgICAgICAgICBzdGF0dXMgPSBZRVM7CisKKyAgICAgICAgICAgICAgICBpZiAobXNn X3ZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIG1zZ19pbmZvKCIlczogc2V0IHZpcnR1YWwg bWFpbGJveCBsaW1pdCBzaXplIGZvciAlcyB0byAlbGQiLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG15bmFtZSwgdXNyX2F0dHIubWFpbGJveCwgT0ZGX1RfTUFYKTsKKyAgICAgICAgfQor ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIEludmFsaWQgbGltaXQgc2l6ZSAobmVnYXRp dmUpLiBVc2UgZGVmYXVsdCB2aXJ0dWFsX21haWxib3hfbGltaXQuICovCisgICAgICAgICAgICBz ZXRfZmlsZV9saW1pdCh2YXJfdmlydF9tYWlsYm94X2xpbWl0KTsKKyAgICAgICAgICAgIHN0YXR1 cyA9IE5POworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBUaGVyZSBp cyBubyBsaW1pdCBpbiB0aGUgbWFwcy4gVXNlIGRlZmF1bHQgdmlydHVhbF9tYWlsYm94X2xpbWl0 LiAqLworICAgICAgICBzZXRfZmlsZV9saW1pdCh2YXJfdmlydF9tYWlsYm94X2xpbWl0KTsKKyAg ICAgICAgc3RhdHVzID0gTk87CisgICAgfQorCisgICAgcmV0dXJuKHN0YXR1cyk7Cit9CisKIC8q IGRlbGl2ZXJfbWFpbGJveF9maWxlIC0gZGVsaXZlciB0byByZWNpcGllbnQgbWFpbGJveCAqLwog CiBzdGF0aWMgaW50IGRlbGl2ZXJfbWFpbGJveF9maWxlKExPQ0FMX1NUQVRFIHN0YXRlLCBVU0VS X0FUVFIgdXNyX2F0dHIpCkBAIC0yMTMsNjIgKzI3Nyw3MiBAQAogICAgICAqIExvb2sgdXAgdGhl IG1haWxib3ggb3duZXIgcmlnaHRzLiBEZWZlciBpbiBjYXNlIG9mIHRyb3VibGUuCiAgICAgICov CiAgICAgdWlkX3JlcyA9IG1haWxfYWRkcl9maW5kKHZpcnR1YWxfdWlkX21hcHMsIHN0YXRlLm1z Z19hdHRyLnVzZXIsCi0JCQkgICAgIElHTk9SRV9FWFRFTlNJT04pOwotICAgIGlmICh1aWRfcmVz ID09IDApIHsKLQltc2dfd2FybigicmVjaXBpZW50ICVzOiBub3QgZm91bmQgaW4gJXMiLAotCQkg c3RhdGUubXNnX2F0dHIudXNlciwgdmlydHVhbF91aWRfbWFwcy0+dGl0bGUpOwotCWRzYl9zaW1w bGUod2h5LCAiNC4zLjUiLCAibWFpbCBzeXN0ZW0gY29uZmlndXJhdGlvbiBlcnJvciIpOwotCSpz dGF0dXNwID0gZGVmZXJfYXBwZW5kKEJPVU5DRV9GTEFHUyhzdGF0ZS5yZXF1ZXN0KSwKLQkJCQlC T1VOQ0VfQVRUUihzdGF0ZS5tc2dfYXR0cikpOwotCVJFVFVSTihZRVMpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElHTk9SRV9FWFRFTlNJT04pOworCisgICAgaWYgKCh1aWRfcmVzID0g bWFpbF9hZGRyX2ZpbmQodmlydHVhbF91aWRfbWFwcywgc3RhdGUubXNnX2F0dHIudXNlciwgKGNo YXIgKiopIDApKSA9PSAwKSB7CisgICAgICAgIGlmICgodWlkX3JlcyA9IG1hcHNfZmluZCh2aXJ0 dWFsX3VpZF9tYXBzLCBzdHJjaHIoc3RhdGUubXNnX2F0dHIudXNlciwgJ0AnKSwgRElDVF9GTEFH X0ZJWEVEKSkgPT0gMCkgeworCQkJbXNnX3dhcm4oInJlY2lwaWVudCAlczogbm90IGZvdW5kIGlu ICVzIiwgc3RhdGUubXNnX2F0dHIudXNlciwgdmlydHVhbF91aWRfbWFwcy0+dGl0bGUpOworCQkJ ZHNiX3NpbXBsZSh3aHksICI0LjMuNSIsICJtYWlsIHN5c3RlbSBjb25maWd1cmF0aW9uIGVycm9y Iik7CisJCQkqc3RhdHVzcCA9IGRlZmVyX2FwcGVuZChCT1VOQ0VfRkxBR1Moc3RhdGUucmVxdWVz dCksIEJPVU5DRV9BVFRSKHN0YXRlLm1zZ19hdHRyKSk7CisJCQlSRVRVUk4oWUVTKTsKKyAgICAg ICAgfQogICAgIH0KKwogICAgIGlmICgobiA9IGF0b2wodWlkX3JlcykpIDwgdmFyX3ZpcnRfbWlu aW11bV91aWQpIHsKLQltc2dfd2FybigicmVjaXBpZW50ICVzOiBiYWQgdWlkICVzIGluICVzIiwK LQkJIHN0YXRlLm1zZ19hdHRyLnVzZXIsIHVpZF9yZXMsIHZpcnR1YWxfdWlkX21hcHMtPnRpdGxl KTsKLQlkc2Jfc2ltcGxlKHdoeSwgIjQuMy41IiwgIm1haWwgc3lzdGVtIGNvbmZpZ3VyYXRpb24g ZXJyb3IiKTsKLQkqc3RhdHVzcCA9IGRlZmVyX2FwcGVuZChCT1VOQ0VfRkxBR1Moc3RhdGUucmVx dWVzdCksCi0JCQkJQk9VTkNFX0FUVFIoc3RhdGUubXNnX2F0dHIpKTsKLQlSRVRVUk4oWUVTKTsK KwkJbXNnX3dhcm4oInJlY2lwaWVudCAlczogYmFkIHVpZCAlcyBpbiAlcyIsIHN0YXRlLm1zZ19h dHRyLnVzZXIsIHVpZF9yZXMsIHZpcnR1YWxfdWlkX21hcHMtPnRpdGxlKTsKKwkJZHNiX3NpbXBs ZSh3aHksICI0LjMuNSIsICJtYWlsIHN5c3RlbSBjb25maWd1cmF0aW9uIGVycm9yIik7CisJCSpz dGF0dXNwID0gZGVmZXJfYXBwZW5kKEJPVU5DRV9GTEFHUyhzdGF0ZS5yZXF1ZXN0KSwgQk9VTkNF X0FUVFIoc3RhdGUubXNnX2F0dHIpKTsKKwkJUkVUVVJOKFlFUyk7CiAgICAgfQorCiAgICAgdXNy X2F0dHIudWlkID0gKHVpZF90KSBuOwogCiAgICAgLyoKICAgICAgKiBMb29rIHVwIHRoZSBtYWls Ym94IGdyb3VwIHJpZ2h0cy4gRGVmZXIgaW4gY2FzZSBvZiB0cm91YmxlLgogICAgICAqLwogICAg IGdpZF9yZXMgPSBtYWlsX2FkZHJfZmluZCh2aXJ0dWFsX2dpZF9tYXBzLCBzdGF0ZS5tc2dfYXR0 ci51c2VyLAotCQkJICAgICBJR05PUkVfRVhURU5TSU9OKTsKLSAgICBpZiAoZ2lkX3JlcyA9PSAw KSB7Ci0JbXNnX3dhcm4oInJlY2lwaWVudCAlczogbm90IGZvdW5kIGluICVzIiwKLQkJIHN0YXRl Lm1zZ19hdHRyLnVzZXIsIHZpcnR1YWxfZ2lkX21hcHMtPnRpdGxlKTsKLQlkc2Jfc2ltcGxlKHdo eSwgIjQuMy41IiwgIm1haWwgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZXJyb3IiKTsKLQkqc3RhdHVz cCA9IGRlZmVyX2FwcGVuZChCT1VOQ0VfRkxBR1Moc3RhdGUucmVxdWVzdCksCi0JCQkJQk9VTkNF X0FUVFIoc3RhdGUubXNnX2F0dHIpKTsKLQlSRVRVUk4oWUVTKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJR05PUkVfRVhURU5TSU9OKTsKKworICAgIGlmICgoZ2lkX3JlcyA9IG1haWxf YWRkcl9maW5kKHZpcnR1YWxfZ2lkX21hcHMsIHN0YXRlLm1zZ19hdHRyLnVzZXIsIChjaGFyICoq KSAwKSkgPT0gMCkgeworICAgICAgICBpZiAoKGdpZF9yZXMgPSBtYXBzX2ZpbmQodmlydHVhbF9n aWRfbWFwcywgc3RyY2hyKHN0YXRlLm1zZ19hdHRyLnVzZXIsICdAJyksIERJQ1RfRkxBR19GSVhF RCkpID09IDApIHsKKwkJCW1zZ193YXJuKCJyZWNpcGllbnQgJXM6IG5vdCBmb3VuZCBpbiAlcyIs IHN0YXRlLm1zZ19hdHRyLnVzZXIsIHZpcnR1YWxfZ2lkX21hcHMtPnRpdGxlKTsKKwkJCWRzYl9z aW1wbGUod2h5LCAiNC4zLjUiLCAibWFpbCBzeXN0ZW0gY29uZmlndXJhdGlvbiBlcnJvciIpOwor CQkJKnN0YXR1c3AgPSBkZWZlcl9hcHBlbmQoQk9VTkNFX0ZMQUdTKHN0YXRlLnJlcXVlc3QpLCBC T1VOQ0VfQVRUUihzdGF0ZS5tc2dfYXR0cikpOworCQkJUkVUVVJOKFlFUyk7CisgICAgICAgIH0K ICAgICB9CisKICAgICBpZiAoKG4gPSBhdG9sKGdpZF9yZXMpKSA8PSAwKSB7Ci0JbXNnX3dhcm4o InJlY2lwaWVudCAlczogYmFkIGdpZCAlcyBpbiAlcyIsCi0JCSBzdGF0ZS5tc2dfYXR0ci51c2Vy LCBnaWRfcmVzLCB2aXJ0dWFsX2dpZF9tYXBzLT50aXRsZSk7Ci0JZHNiX3NpbXBsZSh3aHksICI0 LjMuNSIsICJtYWlsIHN5c3RlbSBjb25maWd1cmF0aW9uIGVycm9yIik7Ci0JKnN0YXR1c3AgPSBk ZWZlcl9hcHBlbmQoQk9VTkNFX0ZMQUdTKHN0YXRlLnJlcXVlc3QpLAotCQkJCUJPVU5DRV9BVFRS KHN0YXRlLm1zZ19hdHRyKSk7Ci0JUkVUVVJOKFlFUyk7CisJCW1zZ193YXJuKCJyZWNpcGllbnQg JXM6IGJhZCBnaWQgJXMgaW4gJXMiLCBzdGF0ZS5tc2dfYXR0ci51c2VyLCBnaWRfcmVzLCB2aXJ0 dWFsX2dpZF9tYXBzLT50aXRsZSk7CisJCWRzYl9zaW1wbGUod2h5LCAiNC4zLjUiLCAibWFpbCBz eXN0ZW0gY29uZmlndXJhdGlvbiBlcnJvciIpOworCQkqc3RhdHVzcCA9IGRlZmVyX2FwcGVuZChC T1VOQ0VfRkxBR1Moc3RhdGUucmVxdWVzdCksIEJPVU5DRV9BVFRSKHN0YXRlLm1zZ19hdHRyKSk7 CisJCVJFVFVSTihZRVMpOwogICAgIH0KKwogICAgIHVzcl9hdHRyLmdpZCA9IChnaWRfdCkgbjsK IAogICAgIGlmIChtc2dfdmVyYm9zZSkKLQltc2dfaW5mbygiJXNbJWRdOiBzZXQgdXNlcl9hdHRy OiAlcywgdWlkID0gJXUsIGdpZCA9ICV1IiwKLQkJIG15bmFtZSwgc3RhdGUubGV2ZWwsIHVzcl9h dHRyLm1haWxib3gsCi0JCSAodW5zaWduZWQpIHVzcl9hdHRyLnVpZCwgKHVuc2lnbmVkKSB1c3Jf YXR0ci5naWQpOworICAgICAgICBtc2dfaW5mbygiJXNbJWRdOiBzZXQgdXNlcl9hdHRyOiAlcywg dWlkID0gJXUsIGdpZCA9ICV1IiwKKyAgICAgICAgICAgICAgICBteW5hbWUsIHN0YXRlLmxldmVs LCB1c3JfYXR0ci5tYWlsYm94LAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCkgdXNyX2F0dHIu dWlkLCAodW5zaWduZWQpIHVzcl9hdHRyLmdpZCk7CiAKICAgICAvKgogICAgICAqIERlbGl2ZXIg dG8gbWFpbGJveCBvciB0byBtYWlsZGlyLgogICAgICAqLwogI2RlZmluZSBMQVNUX0NIQVIocykg KHNbc3RybGVuKHMpIC0gMV0pCiAKLSAgICBpZiAoTEFTVF9DSEFSKHVzcl9hdHRyLm1haWxib3gp ID09ICcvJykKLQkqc3RhdHVzcCA9IGRlbGl2ZXJfbWFpbGRpcihzdGF0ZSwgdXNyX2F0dHIpOwot ICAgIGVsc2UKLQkqc3RhdHVzcCA9IGRlbGl2ZXJfbWFpbGJveF9maWxlKHN0YXRlLCB1c3JfYXR0 cik7CisgICAgaWYgKExBU1RfQ0hBUih1c3JfYXR0ci5tYWlsYm94KSA9PSAnLycpIHsKKyAgICAg ICAgKnN0YXR1c3AgPSBkZWxpdmVyX21haWxkaXIoc3RhdGUsIHVzcl9hdHRyKTsKKyAgICB9Cisg ICAgZWxzZSB7CisgICAgICAgIGludCBjaGFuZ2VkX2xpbWl0OworCisgICAgICAgIGNoYW5nZWRf bGltaXQgPSBjaGFuZ2VfbWFpbGJveF9saW1pdChzdGF0ZSwgdXNyX2F0dHIpOworICAgICAgICAq c3RhdHVzcCA9IGRlbGl2ZXJfbWFpbGJveF9maWxlKHN0YXRlLCB1c3JfYXR0cik7CisKKyAgICAg ICAgaWYgKGNoYW5nZWRfbGltaXQpCisgICAgICAgICAgICBzZXRfZmlsZV9saW1pdCh2YXJfdmly dF9tYWlsYm94X2xpbWl0KTsKKyAgICB9CiAKICAgICAvKgogICAgICAqIENsZWFudXAuCmRpZmYg LXVOciBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL3ZpcnR1YWwvbWFpbGRpci5jIHBvc3RmaXgtMi45 LjUvc3JjL3ZpcnR1YWwvbWFpbGRpci5jCi0tLSBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL3ZpcnR1 YWwvbWFpbGRpci5jCTIwMTItMDEtMjUgMDE6NDE6MDguMDAwMDAwMDAwICswMTAwCisrKyBwb3N0 Zml4LTIuOS41L3NyYy92aXJ0dWFsL21haWxkaXIuYwkyMDEyLTAzLTAyIDA4OjMzOjQ3LjcyNDUy OTM2MSArMDEwMApAQCAtNjQsMjggKzY0LDQyMCBAQAogI2luY2x1ZGUgPG1ib3hfb3Blbi5oPgog I2luY2x1ZGUgPGRzbl91dGlsLmg+CiAKKy8qIFBhdGNoIGxpYnJhcnkuICovCisKKyNpbmNsdWRl IDxzeXMvdHlwZXMuaD4gLyogb3BlbmRpcigzKSwgc3RhdCgyKSAqLworI2luY2x1ZGUgPHN5cy9z dGF0Lmg+ICAvKiBzdGF0KDIpICovCisjaW5jbHVkZSA8ZGlyZW50Lmg+ICAgIC8qIG9wZW5kaXIo MykgKi8KKyNpbmNsdWRlIDx1bmlzdGQuaD4gICAgLyogc3RhdCgyKSAqLworI2luY2x1ZGUgPHN0 ZGxpYi5oPiAgICAvKiBhdG9sKDMpICovCisjaW5jbHVkZSA8c3RyaW5nLmg+ICAgIC8qIHN0cnJj aHIoMykgKi8KKyNpbmNsdWRlIDx2c3RyaW5nX3ZzdHJlYW0uaD4KKyNpbmNsdWRlIDxkaWN0Lmg+ CisjaW5jbHVkZSA8ZGljdF9yZWdleHAuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUg PHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzX2RlZnMuaD4KKyNpbmNsdWRlIDxtYWlsX2FkZHJfZmlu ZC5oPgorCiAvKiBBcHBsaWNhdGlvbi1zcGVjaWZpYy4gKi8KIAogI2luY2x1ZGUgInZpcnR1YWwu aCIKIAotLyogZGVsaXZlcl9tYWlsZGlyIC0gZGVsaXZlcnkgdG8gbWFpbGRpci1zdHlsZSBtYWls Ym94ICovCisvKiBNYWlsZGlyc2l6ZSBtYXhpbWFsIHNpemUuICovCisKKyNkZWZpbmUgU0laRUZJ TEVfTUFYIDUxMjAKKworLyoKKyAqIENocmlzIFN0cmF0Zm9yZCA8Y2hyaXNzQHBpcGV4Lm5ldD4K KyAqIFJlYWQgdGhlIG1haWxkaXJzaXplIGZpbGUgdG8gZ2V0IHF1b3RhIGluZm8uCisgKgorICog QXJndW1lbnRzOgorICogIGRpcm5hbWU6IHRoZSBtYWlsZGlyCisgKiAgY291bnRwdHI6IG51bWJl ciBvZiBtZXNzYWdlcworICoKKyAqIFJldHVybnMgdGhlIHNpemUgb2YgYWxsIG1haWxzIGFzIHJl YWQgZnJvbSBtYWlsZGlyc2l6ZSwKKyAqIHplcm8gaWYgaXQgY291bGRuJ3QgcmVhZCB0aGUgZmls ZS4KKyAqLworc3RhdGljIGxvbmcgcmVhZF9tYWlsZGlyc2l6ZShjaGFyICpmaWxlbmFtZSwgbG9u ZyAqc3VtcHRyLCBsb25nICpjb3VudHB0cikKK3sKKyAgICBjaGFyICpteW5hbWUgPSAicmVhZF9t YWlsZGlyc2l6ZSI7CisgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKKyAgICBWU1RSRUFNICpzaXpl ZmlsZTsKKyAgICBjaGFyICpwOworICAgIGludCBsZW4sIGZpcnN0OworICAgIGxvbmcgc3VtID0g MCwgY291bnQgPSAwLCByZXRfdmFsdWUgPSAtMTsKKworICAgIGlmIChtc2dfdmVyYm9zZSkgCisJ bXNnX2luZm8oIiVzOiB3ZSB3aWxsIHVzZSBzaXplZmlsZSA9ICclcyciLCBteW5hbWUsIGZpbGVu YW1lKTsKKwkKKyAgICBzaXplZmlsZSA9IHZzdHJlYW1fZm9wZW4oZmlsZW5hbWUsIE9fUkRPTkxZ LCAwKTsKKyAgICBpZiAoIXNpemVmaWxlKSB7CisJaWYgKG1zZ192ZXJib3NlKQorCSAgICBtc2df aW5mbygiJXM6IGNhbm5vdCBvcGVuICVzOiAlbSAobWF5YmUgZmlsZSBkb2VzIG5vdCBleGlzdCki LCBteW5hbWUsIGZpbGVuYW1lKTsKKwkgICAgCisJcmV0dXJuIC0xOworICAgIH0gZWxzZSBpZiAo c3RhdChmaWxlbmFtZSwgJnN0YXRidWYpIDwgMCB8fCBzdGF0YnVmLnN0X3NpemUgPiBTSVpFRklM RV9NQVgpIHsKKyAgICAgICAgaWYgKHNpemVmaWxlKSB7CisgICAgICAgICAgICB2c3RyZWFtX2Zj bG9zZShzaXplZmlsZSk7CisgICAgICAgICAgICB1bmxpbmsoZmlsZW5hbWUpOworICAgICAgICB9 CisgICAgICAgIAorICAgICAgICBpZiAobXNnX3ZlcmJvc2UpIAorCSAgICBtc2dfaW5mbygiJXM6 IHN0YXQoKSByZXR1cm5lZCA8IDAgb3IgZmlsZXNpemUgPiBTSVpFRklMRV9NQVggKGZpbGVuYW1l ID0gJXMsIGZpbGVzaXplID0gJWxkKSIsIG15bmFtZSwgZmlsZW5hbWUsIHN0YXRidWYuc3Rfc2l6 ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIFZTVFJJ TkcgKnNpemVidWYgPSB2c3RyaW5nX2FsbG9jKFNJWkVGSUxFX01BWCk7CisgICAgbGVuID0gdnN0 cmVhbV9mcmVhZChzaXplZmlsZSwgU1RSKHNpemVidWYpLCBTSVpFRklMRV9NQVgpOworCisgICAg cCA9IFNUUihzaXplYnVmKTsKKyAgICAqKHAgKyBsZW4pID0gJ1wwJzsKKyAgICBmaXJzdCA9IDE7 CisKKyAgICB3aGlsZSAoKnApIHsKKyAgICAgICAgbG9uZyBuID0gMCwgYyA9IDA7CisgICAgICAg IGNoYXIgKnEgPSBwOworCisgICAgICAgIHdoaWxlICgqcCkgeworICAgICAgICAgICAgaWYgKCpw KysgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgIHBbLTFdID0gMDsKKyAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChmaXJzdCkg eworICAgICAgICAgICAgZmlyc3QgPSAwOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg IH0KKworICAgICAgICBpZiAoc3NjYW5mKHEsICIlbGQgJWxkIiwgJm4sICZjKSA9PSAyKSB7Cisg ICAgICAgICAgICBzdW0gKz0gbjsKKyAgICAgICAgICAgIGNvdW50ICs9IGM7CisgICAgICAgICAg ICAvKiBpZiAobXNnX3ZlcmJvc2UpCisgICAgCQltc2dfaW5mbygiJXM6IHdlIHJlYWQgbGluZSAn JXMnLCB0b3RhbHM6IHN1bSA9ICVsZCwgY291bnQgPSAlbGQiLCBteW5hbWUsIHEsIHN1bSwgY291 bnQpOyAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdnN0cmVhbV9m Y2xvc2Uoc2l6ZWZpbGUpOworICAgICAgICAgICAgdW5saW5rKGZpbGVuYW1lKTsKKyAgICAgICAg ICAgIG1zZ193YXJuKCIlczogaW52YWxpZCBsaW5lICclcycgZm91bmQgaW4gJXMsIHJlbW92aW5n IG1haWxkaXJzaXplIGZpbGUiLCBteW5hbWUsIHEsIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIHZz dHJpbmdfZnJlZShzaXplYnVmKTsKKworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9 CisgICAgfQorCisgICAgKmNvdW50cHRyID0gY291bnQ7CisgICAgKnN1bXB0ciA9IHN1bTsKKyAg ICAgICAgCisgICAgaWYgKHN1bSA8IDAgfHwgY291bnQgPCAwIHx8IChzdW0gPT0gMCAmJiBjb3Vu dCAhPSAwKSB8fCAoc3VtICE9IDAgJiYgY291bnQgPT0gMCkpIHsKKwlpZiAobXNnX3ZlcmJvc2Up IHsKKwkgICAgbXNnX2luZm8oIiVzOiB3ZSB3aWxsIHJldHVybiAtMSBhbmQgdW5saW5rICVzLCBi ZWNhdXNlIGZpbGUgY291bnQgb3Igc3VtIGlzIDw9IDAgKHN1bSA9ICVsZCwgY291bnQgPSAlbGQp IiwgbXluYW1lLCBmaWxlbmFtZSwgc3VtLCBjb3VudCk7CisJfQorCQorCXVubGluayhmaWxlbmFt ZSk7CisJcmV0X3ZhbHVlID0gLTE7CisgICAgfSBlbHNlIHsKKwlpZiAobXNnX3ZlcmJvc2UpIAor CSAgICBtc2dfaW5mbygiJXM6IHdlIHdpbGwgcmV0dXJuIE1haWxkaXIgc2l6ZSA9ICVsZCwgY291 bnQgPSAlbGQiLCBteW5hbWUsICpzdW1wdHIsICpjb3VudHB0cik7CisKKwlyZXRfdmFsdWUgPSBz dW07CQorICAgIH0KKworICAgIHZzdHJlYW1fZmNsb3NlKHNpemVmaWxlKTsKKyAgICB2c3RyaW5n X2ZyZWUoc2l6ZWJ1Zik7CisgICAgCisgICAgcmV0dXJuIHJldF92YWx1ZTsKK30KKworLyoKKyAq IEdpdmVzIHRoZSBzaXplIG9mIHRoZSBmaWxlIGFjY29yZGluZyB0byB0aGUgTWFpbGRpcisrIGV4 dGVuc2lvbgorICogcHJlc2VudCBpbiB0aGUgZmlsZW5hbWUgKGNvZGUgdGFrZW4gZnJvbSBjb3Vy aWVyLWltYXApLgorICoKKyAqIEFyZ3VtZW50czoKKyAqICBuOiBmaWxlbmFtZQorICoKKyAqIFJl dHVybnMgdGhlIHNpemUgZ2l2ZW4gaW4gIixTPTxzaXplPiIgaW4gdGhlIGZpbGVuYW1lLAorICog emVybyBpZiBpdCBjYW5ub3QgZmluZCAiLFM9PHNpemU+IiBpbiB0aGUgZmlsZW5hbWUuCisgKi8K K3N0YXRpYyBsb25nIG1haWxkaXJfcGFyc2VxdW90YShjb25zdCBjaGFyICpuKQoreworICAgIGNv bnN0IGNoYXIgKm87CisgICAgaW50IHllcyA9IDA7CisKKyAgICBpZiAoKG8gPSBzdHJyY2hyKG4s ICcvJykpID09IDApCisgICAgICAgIG8gPSBuOworCisgICAgZm9yICg7ICpvOyBvKyspIHsKKyAg ICAgICAgaWYgKCpvID09ICc6JykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGZv ciAoOyBvID49IG47IC0tbykgeworICAgICAgICBpZiAoKm8gPT0gJy8nKQorICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgaWYgKCpvID09ICcsJyAmJiBvWzFdID09ICdTJyAmJiBvWzJdID09 ICc9JykgeworICAgICAgICAgICAgeWVzID0gMTsKKyAgICAgICAgICAgIG8gKz0gMzsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHllcykgeworICAgICAg ICBsb25nIHMgPSAwOworCisgICAgICAgIHdoaWxlICgqbyA+PSAnMCcgJiYgKm8gPD0gJzknKQor ICAgICAgICAgICAgcyA9IHMqMTAgKyAoKm8rKyAtICcwJyk7CisKKyAgICAgICAgcmV0dXJuIHM7 CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDb21wdXRlcyBxdW90YSB1c2Fn ZSBmb3IgYSBkaXJlY3RvcnkgKHRha2VuIGZyb20gZXhpbSkuCisgKgorICogVGhpcyBmdW5jdGlv biBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIHRoZSBleGFjdCBxdW90YSB1c2FnZSBvZiBhIHZpcnR1 YWwKKyAqIG1haWxkaXIgYm94LiBUbyBhY2hpZXZlIG1heGltdW0gcG9zc2libGUgc3BlZWQgd2hp bGUgZG9pbmcgdGhpcywgaXQgdGFrZXMKKyAqIGFkdmFudGFnZSBvZiB0aGUgbWFpbGRpcnNpemUg ZmlsZSBhbmQgdGhlIE1haWxkaXIrKyBleHRlbnNpb25zIHRvIGZpbGVuYW1lcywKKyAqIHdoZW4g YXBwbGljYWJsZSBhbmQgY29uZmlndXJlZCB0byBiZSB1c2VkLiBJbiBhbGwgb3RoZXIgY2FzZXMg aXQgc2ltcGx5CisgKiBzdGF0cyBhbGwgdGhlIGZpbGVzIGFzIG5lZWRlZCB0byBnZXQgdGhlIHNp emUgaW5mb3JtYXRpb24uCisgKgorICogQXJndW1lbnRzOgorICogIGRpcm5hbWU6IHRoZSBuYW1l IG9mIHRoZSBkaXJlY3RvcnkKKyAqICBjb3VudHB0cjogd2hlcmUgdG8gYWRkIHRoZSBmaWxlIGNv dW50IChiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcmVjdXJzZXMpCisgKgorICogUmV0dXJucyB0aGUg c3VtIG9mIHRoZSBzaXplcyBvZiBhbGwgbWVhc3VyYWJsZSBmaWxlcywKKyAqIHplcm8gaWYgdGhl IGRpcmVjdG9yeSBjb3VsZCBub3QgYmUgb3BlbmVkLgorICovCitzdGF0aWMgbG9uZyBjaGVja19k aXJfc2l6ZShjaGFyICpkaXJuYW1lLCBsb25nICpjb3VudHB0cikKK3sKKyAgICBjaGFyICpteW5h bWUgPSAiY2hlY2tfZGlyX3NpemUiOworICAgIERJUiAqZGlyOworICAgIGxvbmcgc3VtID0gMDsK KyAgICBzdHJ1Y3QgZGlyZW50ICplbnQ7CisgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKKworICAg IGRpciA9IG9wZW5kaXIoZGlybmFtZSk7CisgICAgaWYgKGRpciA9PSBOVUxMKSB7CisgICAgICAg IGlmIChtYWtlX2RpcnMoZGlybmFtZSwgMDcwMCkgPT0gMCkgeyAgICAvKiBUcnkgdG8gY3JlYXRl IHRoZSBkaXJzLiAqLworICAgICAgICAgICAgZGlyID0gb3BlbmRpcihkaXJuYW1lKTsgICAgICAg ICAgICAgLyogUmVvcGVuIHRoZSBkaXIuICovCisgICAgICAgICAgICBpZiAoZGlyID09IE5VTEwp IHsKKyAgICAgICAgICAgICAgICBtc2dfd2FybigiJXM6IGNhbm5vdCByZW9wZW4gZGlyZWN0b3J5 OiAlcyIsIG15bmFtZSwgZGlybmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtc2dfd2Fy bigiJXM6IGNhbm5vdCBvcGVuIGRpcmVjdG9yeTogJXMiLCBteW5hbWUsIGRpcm5hbWUpOworICAg ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3aGlsZSAoKGVudCA9 IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgeworICAgICAgICBjaGFyICpuYW1lID0gZW50LT5kX25h bWU7CisgICAgICAgIGxvbmcgdG1wc3VtID0gMDsKKyAgICAgICAgVlNUUklORyAqYnVmZmVyOwor CisJLyogZG8gbm90IGNvdW50IGRvdCBhIGRvdWJsZS1kb3QgZGlycyAqLworICAgICAgICBpZiAo c3RyY21wKG5hbWUsICIuIikgPT0gMCB8fCBzdHJjbXAobmFtZSwgIi4uIikgPT0gMCkKKyAgICAg ICAgICAgIGNvbnRpbnVlOworICAgICAgICAvKiBkbyBub3QgY291bnQgaWYgdGhpcyBpcyB0aGUg dHJhc2ggc3ViZGlyIGFuZCBpZiB3ZSBzaG91bGQgTk9UIGNvdW50IGl0ICovCisJZWxzZSBpZiAo dmFyX3ZpcnRfdHJhc2hfY291bnQgPT0gMCAmJiBzdHJjbXAobmFtZSwgdmFyX3ZpcnRfdHJhc2hf bmFtZSkgPT0gMCkKKyAgICAJICAgIGNvbnRpbnVlOworCisgICAgICAgIC8qCisgICAgICAgICAq IEhlcmUgY29tZXMgdGhlIHJlYWwgbG9naWMgYmVoaW5kIHRoaXMgZnVuY3Rpb24uCisgICAgICAg ICAqIE9wdGltaXplZCB0byBiZSB0aGUgbW9zdCBlZmZpY2llbnQgcG9zc2libGUsCisgICAgICAg ICAqIGRlcGVuZGluZyBvbiB0aGUgc2V0dGluZ3MgZ2l2ZW4uCisgICAgICAgICAqIFNlZSBhYm92 ZSBmb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uLgorICAgICAgICAgKi8KKyAgICAgICAg aWYgKHZhcl92aXJ0X21haWxib3hfbGltaXRfaW5ib3gpIHsKKyAgICAgICAgICAgIGlmICh2YXJf dmlydF9tYWlsZGlyX2V4dGVuZGVkICYmICh0bXBzdW0gPSBtYWlsZGlyX3BhcnNlcXVvdGEobmFt ZSkpKSB7CisgICAgICAgICAgICAgICAgc3VtICs9IHRtcHN1bTsKKyAgICAgICAgICAgICAgICAo KmNvdW50cHRyKSsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAg ICAgICAgICAgYnVmZmVyID0gdnN0cmluZ19hbGxvYygxMDI0KTsKKyAgICAgICAgICAgICAgICB2 c3RyaW5nX3NwcmludGYoYnVmZmVyLCAiJXMvJXMiLCBkaXJuYW1lLCBuYW1lKTsKKworICAgICAg ICAgICAgICAgIGlmIChzdGF0KFNUUihidWZmZXIpLCAmc3RhdGJ1ZikgPCAwKSB7CisgICAgICAg ICAgICAgICAgICAgIHZzdHJpbmdfZnJlZShidWZmZXIpOworICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKChzdGF0YnVm LnN0X21vZGUgJiBTX0lGUkVHKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHN1bSArPSAo bG9uZykgc3RhdGJ1Zi5zdF9zaXplOworICAgICAgICAgICAgICAgICAgICAoKmNvdW50cHRyKSsr OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZzdHJpbmdfZnJlZShidWZm ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg ICAgYnVmZmVyID0gdnN0cmluZ19hbGxvYygxMDI0KTsKKyAgICAgICAgICAgIHZzdHJpbmdfc3By aW50ZihidWZmZXIsICIlcy8lcyIsIGRpcm5hbWUsIG5hbWUpOworCisgICAgICAgICAgICBpZiAo c3RhdChTVFIoYnVmZmVyKSwgJnN0YXRidWYpIDwgMCkgeworICAgICAgICAgICAgICAgIHZzdHJp bmdfZnJlZShidWZmZXIpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg fQorICAgICAgICAgICAgaWYgKChzdGF0YnVmLnN0X21vZGUgJiBTX0lGUkVHKSAhPSAwKSB7Cisg ICAgICAgICAgICAgICAgaWYgKHN0cmNtcChkaXJuYW1lICsgc3RybGVuKGRpcm5hbWUpIC0gMywg Im5ldyIpID09IDAgfHwgc3RyY21wKGRpcm5hbWUgKyBzdHJsZW4oZGlybmFtZSkgLSAzLCAiY3Vy IikgPT0gMCB8fCBzdHJjbXAoZGlybmFtZSArIHN0cmxlbihkaXJuYW1lKSAtIDMsICJ0bXAiKSA9 PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHN1bSArPSAobG9uZykgc3RhdGJ1Zi5zdF9zaXpl OworICAgICAgICAgICAgICAgICAgICAoKmNvdW50cHRyKSsrOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKChzdGF0YnVmLnN0X21vZGUgJiBT X0lGRElSKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgc3VtICs9IGNoZWNrX2Rpcl9zaXplKFNU UihidWZmZXIpLCBjb3VudHB0cik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZzdHJp bmdfZnJlZShidWZmZXIpOworICAgICAgICB9CisgICAgfQorICAgIGNsb3NlZGlyKGRpcik7CiAK LWludCAgICAgZGVsaXZlcl9tYWlsZGlyKExPQ0FMX1NUQVRFIHN0YXRlLCBVU0VSX0FUVFIgdXNy X2F0dHIpCisgICAgaWYgKG1zZ192ZXJib3NlKQorICAgICAgICBtc2dfaW5mbygiJXM6IGZ1bGwg c2NhbiBkb25lOiBkaXI9JXMgc3VtPSVsZCBjb3VudD0lbGQiLCBteW5hbWUsIGRpcm5hbWUsIHN1 bSwgKmNvdW50cHRyKTsKKworICAgIHJldHVybiBzdW07Cit9CisKKy8qIEN1dCBhbGwgb2NjdXJy ZW5jZXMgb2YgcGF0dGVybiBmcm9tIHN0cmluZy4gKi8KK3N0YXRpYyBjaGFyICpzdHJjdXQoY2hh ciAqc3RyLCBjb25zdCBjaGFyICpwYXQpCit7CisgICAgY2hhciAqcHRyLCAqbG9jLCAqcmV0Owor ICAgIHJldCA9IHN0cjsKKyAgICBsb2MgPSBzdHI7CisKKyAgICAvKiBObyBtYXRjaCwgcmV0dXJu IG9yaWdpbmFsIHN0cmluZy4gKi8KKyAgICBpZiAoIXN0cnN0cihsb2MsIHBhdCkpCisgICAgICAg IHJldHVybihzdHIpOworCisgICAgd2hpbGUgKCpsb2MgJiYgKHB0ciA9IHN0cnN0cihsb2MsIHBh dCkpKSB7CisgICAgICAgIHdoaWxlIChsb2MgPCBwdHIpCisgICAgICAgICAgICAqc3RyKysgPSAq bG9jKys7CisgICAgICAgIGxvYyArPSBzdHJsZW4ocGF0KTsKKyAgICB9CisKKyAgICB3aGlsZSAo KmxvYykKKyAgICAgICAgKnN0cisrID0gKmxvYysrOworCisgICAgKnN0ciA9IDA7CisKKyAgICBy ZXR1cm4ocmV0KTsKK30KKworLyogQ2hlY2sgaWYgbWFpbGRpcmZpbHRlciBmaWxlIGlzIHVwLXRv LWRhdGUgY29tcGFyZWQgdG8gU1FMLCAocmUpd3JpdGUgaXQgaWYgbm90LiAqLworc3RhdGljIGxv bmcgc3FsMmZpbGUoY2hhciAqZmlsZW5hbWUsIGNoYXIgKnVzZXIpCit7CisgICAgY2hhciAqbXlu YW1lID0gInNxbDJmaWxlIjsKKyAgICBjaGFyICpmaWx0ZXJfc3FscmVzOworICAgIGNoYXIgZmls dGVyX2ZpbGVyZXNbMTI4XTsKKyAgICBsb25nIHNxbG10aW1lID0gMCwgZmlsZW10aW1lID0gMCwg cmV0dmFsID0gMDsKKyAgICBpbnQgZmlsdGVyZmlsZSwgc2l6ZV9zcWxyZXMsIGk7CisgICAgc3Ry dWN0IHN0YXQgc3RhdGJ1ZjsKKworICAgIGlmICgqdmFyX3ZpcnRfbWFpbGRpcl9maWx0ZXJfbWFw cyAhPSAwKSB7CisgICAgICAgIGZpbHRlcl9zcWxyZXMgPSAoY2hhciAqKSBteW1hbGxvYygxNjAw MCk7CisgICAgICAgIGZpbHRlcl9zcWxyZXMgPSAoY2hhciAqKSBtYWlsX2FkZHJfZmluZCh2aXJ0 dWFsX21haWxkaXJfZmlsdGVyX21hcHMsIHVzZXIsIChjaGFyICoqKSAwKTsKKworICAgICAgICBp ZiAoZmlsdGVyX3NxbHJlcykgeworICAgICAgICAgICAgc3RyY3V0KGZpbHRlcl9zcWxyZXMsICJc ciIpOworICAgICAgICAgICAgaWYgKGZpbHRlcl9zcWxyZXNbMF0gPT0gJyMnICYmIGZpbHRlcl9z cWxyZXNbMV0gPT0gJyAnICYmIGZpbHRlcl9zcWxyZXNbMl0gPT0gJ00nKSB7CisgICAgICAgICAg ICAgICAgc2l6ZV9zcWxyZXMgPSBzdHJsZW4oZmlsdGVyX3NxbHJlcyk7CisKKyAgICAgICAgICAg ICAgICBmb3IgKGkgPSA0OyBpIDw9IHNpemVfc3FscmVzOyBpKyspIHsKKyAgICAgICAgICAgICAg ICAgICAgaWYoZmlsdGVyX3NxbHJlc1tpXSA9PSAnLycgJiYgZmlsdGVyX3NxbHJlc1tpKzFdID09 ICdeJykgeworICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX3NxbHJlc1tpLTFdID0gJ1xu JzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgIGZpbHRlcl9zcWxyZXNbKHNpemVfc3FscmVzKzEpXSA9ICdcMCc7CisKKyAgICAgICAg ICAgICAgICBzcWxtdGltZSA9IGF0b2woZmlsdGVyX3NxbHJlcyszKTsKKyAgICAgICAgICAgICAg ICByZXR2YWwgPSBzcWxtdGltZTsKKworICAgICAgICAgICAgICAgIGZpbHRlcmZpbGUgPSBvcGVu KGZpbGVuYW1lLCBPX1JET05MWSwgMCk7CisgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmZpbGUp IHsKKyAgICAgICAgICAgICAgICAgICAgcmVhZChmaWx0ZXJmaWxlLCAodm9pZCAqKSBmaWx0ZXJf ZmlsZXJlcywgMTI3KTsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmlsdGVyZmlsZSk7CisK KyAgICAgICAgICAgICAgICAgICAgZmlsZW10aW1lID0gYXRvbChmaWx0ZXJfZmlsZXJlcyszKTsK KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisg ICAgICAgICAgICAgICAgICAgIG1zZ19pbmZvKCIlczogZmlsdGVyIGRhdGE6IHNxbF9zaXplPSVs aSBzcWxfbXRpbWU9JWxkIGZpbGVfbXRpbWU9JWxkIiwgbXluYW1lLCBzdHJsZW4oZmlsdGVyX3Nx bHJlcyksIHNxbG10aW1lLCBmaWxlbXRpbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg aWYgKHNxbG10aW1lICE9IGZpbGVtdGltZSAmJiBzcWxtdGltZSAhPSAwKSB7CisgICAgICAgICAg ICAgICAgaWYgKChmaWx0ZXJmaWxlID0gb3BlbihmaWxlbmFtZSwgT19XUk9OTFkgfCBPX0NSRUFU IHwgT19UUlVOQywgMDY0MCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtc2dfdmVyYm9z ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19pbmZvKCIlczogdXBkYXRpbmcgZmlsdGVy IGZpbGU6ICVzIiwgbXluYW1lLCBmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRl KGZpbHRlcmZpbGUsIGZpbHRlcl9zcWxyZXMsIHN0cmxlbihmaWx0ZXJfc3FscmVzKSk7CisgICAg ICAgICAgICAgICAgICAgIGNsb3NlKGZpbHRlcmZpbGUpOworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnX3dhcm4oIiVzOiBj YW4ndCBjcmVhdGUgZmlsdGVyIGZpbGU6ICVzIiwgbXluYW1lLCBmaWxlbmFtZSk7CisgICAgICAg ICAgICAgICAgICAgIHJldHZhbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg fQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoc3RhdChmaWxlbmFt ZSwgJnN0YXRidWYpID09IDApCisgICAgICAgICAgICByZXR2YWwgPSAobG9uZykgc3RhdGJ1Zi5z dF9tdGltZTsKKyAgICAgICAgaWYgKG1zZ192ZXJib3NlKQorICAgICAgICAgICAgbXNnX2luZm8o IiVzOiBwcm9jZXNzaW5nIGZpbHRlciBmaWxlOiBmaWxlX210aW1lPSVsZCIsIG15bmFtZSwgcmV0 dmFsKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorCisvKiBkZWxpdmVyX21haWxk aXIgLSBkZWxpdmVyeSB0byBtYWlsZGlyLXN0eWxlIG1haWxib3ggKi8KK2ludCBkZWxpdmVyX21h aWxkaXIoTE9DQUxfU1RBVEUgc3RhdGUsIFVTRVJfQVRUUiB1c3JfYXR0cikKIHsKICAgICBjb25z dCBjaGFyICpteW5hbWUgPSAiZGVsaXZlcl9tYWlsZGlyIjsKLSAgICBjaGFyICAgKm5ld2RpcjsK LSAgICBjaGFyICAgKnRtcGRpcjsKLSAgICBjaGFyICAgKmN1cmRpcjsKLSAgICBjaGFyICAgKnRt cGZpbGU7Ci0gICAgY2hhciAgICpuZXdmaWxlOworICAgIGNoYXIgICAgKm5ld2RpcjsKKyAgICBj aGFyICAgICp0bXBkaXI7CisgICAgY2hhciAgICAqY3VyZGlyOworICAgIGNoYXIgICAgKm5ld2Zp bGU7CisgICAgY2hhciAgICAqdG1wZmlsZTsKICAgICBEU05fQlVGICp3aHkgPSBzdGF0ZS5tc2df YXR0ci53aHk7CiAgICAgVlNUUklORyAqYnVmOwogICAgIFZTVFJFQU0gKmRzdDsKLSAgICBpbnQg ICAgIG1haWxfY29weV9zdGF0dXM7Ci0gICAgaW50ICAgICBkZWxpdmVyX3N0YXR1czsKLSAgICBp bnQgICAgIGNvcHlfZmxhZ3M7Ci0gICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgc3RydWN0IHRpbWV2 YWwgc3RhcnR0aW1lOworICAgIGludCAgICAgIG1haWxfY29weV9zdGF0dXM7CisgICAgaW50ICAg ICAgZGVsaXZlcl9zdGF0dXM7CisgICAgaW50ICAgICAgY29weV9mbGFnczsKKyAgICBzdHJ1Y3Qg ICBzdGF0IHN0OworICAgIHN0cnVjdCAgIHRpbWV2YWwgc3RhcnR0aW1lOworCisgICAgLyogTWFp bGRpciBRdW90YS4gKi8KKyAgICBjb25zdCBjaGFyICpsaW1pdF9yZXM7ICAgICAgICAgICAgICAv KiBMaW1pdCBmcm9tIG1hcC4gKi8KKyAgICBjaGFyICAgICpzaXplZmlsZW5hbWUgPSAoY2hhciAq KSAwOyAvKiBNYWlsZGlyc2l6ZSBmaWxlIG5hbWUuICovCisgICAgVlNUUklORyAqZmlsZXF1b3Rh OyAgICAgICAgICAgICAgICAgLyogUXVvdGEgc2V0dGluZyBmcm9tIHRoZSBtYWlsZGlyc2l6ZSBm aWxlLiAqLworICAgIFZTVFJFQU0gKnNpemVmaWxlOyAgICAgICAgICAgICAgICAgIC8qIE1haWxk aXJzaXplIGZpbGUgaGFuZGxlLiAqLworICAgIGxvbmcgICAgIG4gPSAwOyAgICAgICAgICAgICAg ICAgICAgIC8qIExpbWl0IGluIGxvbmcgaW50ZWdlciBmb3JtYXQuICovCisgICAgbG9uZyAgICAg c2F2ZWRfY291bnQgPSAwOyAgICAgICAgICAgLyogVGhlIHRvdGFsIG51bWJlciBvZiBmaWxlcy4g Ki8KKyAgICBsb25nICAgICBzYXZlZF9zaXplID0gMDsgICAgICAgICAgICAvKiBUaGUgdG90YWwg cXVvdGEgb2YgYWxsIGZpbGVzLiAqLworICAgIHN0cnVjdCAgIHN0YXQgbWFpbF9zdGF0OyAgICAg ICAgICAgIC8qIFRvIGNoZWNrIHRoZSBzaXplIG9mIHRoZSBtYWlsIHRvIGJlIHdyaXR0ZW4uICov CisgICAgc3RydWN0ICAgc3RhdCBzaXplZmlsZV9zdGF0OyAgICAgICAgLyogVG8gY2hlY2sgdGhl IHNpemUgb2YgdGhlIG1haWxkaXJzaXplIGZpbGUuICovCisgICAgdGltZV90ICAgdG07ICAgICAg ICAgICAgICAgICAgICAgICAgLyogVG8gY2hlY2sgdGhlIGFnZSBvZiB0aGUgbWFpbGRpcnNpemUg ZmlsZS4gKi8KKworICAgIC8qIE1haWxkaXIgRmlsdGVycy4gKi8KKyAgICBjb25zdCBjaGFyICp2 YWx1ZSwgKmNtZF90ZXh0OyAgICAgICAvKiBGaWx0ZXIgdmFsdWVzLiAqLworICAgIGNoYXIgICAg KmZpbHRlcm5hbWU7CisgICAgY2hhciAgICAqaGVhZGVyOworICAgIGNoYXIgICAgKmJrcG5ld2Zp bGU7CisgICAgY2hhciAgICAqbWRmZmlsZW5hbWUgPSAoY2hhciAqKSAwOyAgLyogTWFpbGRpcmZv bGRlciBmaWxlIG5hbWUuICovCisgICAgVlNUUklORyAqZmx0c3RyOworICAgIFZTVFJFQU0gKnRt cGZpbHRlcjsKKyAgICBWU1RSRUFNICptZGZmaWxlOyAgICAgICAgICAgICAgICAgICAvKiBNYWls ZGlyZm9sZGVyIGZpbGUgaGFuZGxlLiAqLworICAgIERJQ1QgICAgKkZJTFRFUlM7CisgICAgbG9u ZyAgICAgc3FsbXRpbWU7ICAgICAgICAgICAgICAgICAgLyogTGF0ZXN0IG1vZGlmaWNhdGlvbiB0 aW1lIGZyb20gc3FsMmZpbGUoKS4gKi8KKyAgICBpbnQgICAgICBjbWRfbGVuOworICAgIGludAkg ICAgcmVhZF9tZHMgPSAtMTsJCS8qIHJlYWRfbWFpbGRpcnNpemUoKSByZXR1cm5lZCB2YWx1ZSAq LworICAgIHN0cnVjdCAgIHN0YXQgbWRmZmlsZV9zdGF0OyAgICAgICAgIC8qIFRvIGNoZWNrIGlm IHRoZSBtYWlsZGlyZm9sZGVyIGZpbGUgZXhpc3RzLiAqLwogCiAgICAgR0VUVElNRU9GREFZKCZz dGFydHRpbWUpOwogCkBAIC05NCwxNSArNDg2LDE0IEBACiAgICAgICovCiAgICAgc3RhdGUubGV2 ZWwrKzsKICAgICBpZiAobXNnX3ZlcmJvc2UpCi0JTVNHX0xPR19TVEFURShteW5hbWUsIHN0YXRl KTsKKwkgICAgTVNHX0xPR19TVEFURShteW5hbWUsIHN0YXRlKTsKIAogICAgIC8qCiAgICAgICog RG9uJ3QgZGVsaXZlciB0cmFjZS1vbmx5IHJlcXVlc3RzLgogICAgICAqLwogICAgIGlmIChERUxf UkVRX1RSQUNFX09OTFkoc3RhdGUucmVxdWVzdC0+ZmxhZ3MpKSB7Ci0JZHNiX3NpbXBsZSh3aHks ICIyLjAuMCIsICJkZWxpdmVycyB0byBtYWlsZGlyIik7Ci0JcmV0dXJuIChzZW50KEJPVU5DRV9G TEFHUyhzdGF0ZS5yZXF1ZXN0KSwKLQkJICAgICBTRU5UX0FUVFIoc3RhdGUubXNnX2F0dHIpKSk7 CisgICAgICAgIGRzYl9zaW1wbGUod2h5LCAiMi4wLjAiLCAiZGVsaXZlcnMgdG8gbWFpbGRpciIp OworICAgICAgICByZXR1cm4gKHNlbnQoQk9VTkNFX0ZMQUdTKHN0YXRlLnJlcXVlc3QpLCBTRU5U X0FUVFIoc3RhdGUubXNnX2F0dHIpKSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTExMCwxOCArNTAx LDExNiBAQAogICAgICAqIGF0dHJpYnV0ZSB0byByZWZsZWN0IHRoZSBmaW5hbCByZWNpcGllbnQu CiAgICAgICovCiAgICAgaWYgKHZzdHJlYW1fZnNlZWsoc3RhdGUubXNnX2F0dHIuZnAsIHN0YXRl Lm1zZ19hdHRyLm9mZnNldCwgU0VFS19TRVQpIDwgMCkKLQltc2dfZmF0YWwoInNlZWsgbWVzc2Fn ZSBmaWxlICVzOiAlbSIsIFZTVFJFQU1fUEFUSChzdGF0ZS5tc2dfYXR0ci5mcCkpOworICAgICAg ICBtc2dfZmF0YWwoInNlZWsgbWVzc2FnZSBmaWxlICVzOiAlbSIsIFZTVFJFQU1fUEFUSChzdGF0 ZS5tc2dfYXR0ci5mcCkpOwogICAgIHN0YXRlLm1zZ19hdHRyLmRlbGl2ZXJlZCA9IHN0YXRlLm1z Z19hdHRyLnJjcHQuYWRkcmVzczsKICAgICBtYWlsX2NvcHlfc3RhdHVzID0gTUFJTF9DT1BZX1NU QVRfV1JJVEU7CiAgICAgYnVmID0gdnN0cmluZ19hbGxvYygxMDApOwogCi0gICAgY29weV9mbGFn cyA9IE1BSUxfQ09QWV9UT0ZJTEUgfCBNQUlMX0NPUFlfUkVUVVJOX1BBVEgKLQl8IE1BSUxfQ09Q WV9ERUxJVkVSRUQgfCBNQUlMX0NPUFlfT1JJR19SQ1BUOworICAgIGNvcHlfZmxhZ3MgPSBNQUlM X0NPUFlfVE9GSUxFIHwgTUFJTF9DT1BZX1JFVFVSTl9QQVRIIHwgTUFJTF9DT1BZX0RFTElWRVJF RCB8IE1BSUxfQ09QWV9PUklHX1JDUFQ7CiAKLSAgICBuZXdkaXIgPSBjb25jYXRlbmF0ZSh1c3Jf YXR0ci5tYWlsYm94LCAibmV3LyIsIChjaGFyICopIDApOwotICAgIHRtcGRpciA9IGNvbmNhdGVu YXRlKHVzcl9hdHRyLm1haWxib3gsICJ0bXAvIiwgKGNoYXIgKikgMCk7Ci0gICAgY3VyZGlyID0g Y29uY2F0ZW5hdGUodXNyX2F0dHIubWFpbGJveCwgImN1ci8iLCAoY2hhciAqKSAwKTsKKyAgICAv KgorICAgICAqIENvbmNhdGVuYXRlIHRoZSBtYWlsZGlyIHN1ZmZpeCAoaWYgc2V0KS4KKyAgICAg Ki8KKyAgICBpZiAoKnZhcl92aXJ0X21haWxkaXJfc3VmZml4ID09IDApIHsKKyAgICAgICAgbmV3 ZGlyID0gY29uY2F0ZW5hdGUodXNyX2F0dHIubWFpbGJveCwgIm5ldy8iLCAoY2hhciAqKSAwKTsK KyAgICAgICAgdG1wZGlyID0gY29uY2F0ZW5hdGUodXNyX2F0dHIubWFpbGJveCwgInRtcC8iLCAo Y2hhciAqKSAwKTsKKyAgICAgICAgY3VyZGlyID0gY29uY2F0ZW5hdGUodXNyX2F0dHIubWFpbGJv eCwgImN1ci8iLCAoY2hhciAqKSAwKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5ld2Rp ciA9IGNvbmNhdGVuYXRlKHVzcl9hdHRyLm1haWxib3gsIHZhcl92aXJ0X21haWxkaXJfc3VmZml4 LCAoY2hhciAqKSAwKTsKKyAgICAgICAgdG1wZGlyID0gY29uY2F0ZW5hdGUodXNyX2F0dHIubWFp bGJveCwgdmFyX3ZpcnRfbWFpbGRpcl9zdWZmaXgsIChjaGFyICopIDApOworICAgICAgICBjdXJk aXIgPSBjb25jYXRlbmF0ZSh1c3JfYXR0ci5tYWlsYm94LCB2YXJfdmlydF9tYWlsZGlyX3N1ZmZp eCwgKGNoYXIgKikgMCk7CisgICAgICAgIG5ld2RpciA9IGNvbmNhdGVuYXRlKG5ld2RpciwgIm5l dy8iLCAoY2hhciAqKSAwKTsKKyAgICAgICAgdG1wZGlyID0gY29uY2F0ZW5hdGUodG1wZGlyLCAi dG1wLyIsIChjaGFyICopIDApOworICAgICAgICBjdXJkaXIgPSBjb25jYXRlbmF0ZShjdXJkaXIs ICJjdXIvIiwgKGNoYXIgKikgMCk7CisgICAgfQogCisgICAgLyogZ2V0IHRoZSBzaXplZmlsZW5h bWUsIG5vIG1hdHRlciBpZiB3ZSB1c2UgdmFyX3ZpcnRfbWFpbGRpcl9leHRlbmRlZCAqLworICAg IGlmICgqdmFyX3ZpcnRfbWFpbGRpcl9zdWZmaXggPT0gMCkgeworICAgICAgICBzaXplZmlsZW5h bWUgPSBjb25jYXRlbmF0ZSh1c3JfYXR0ci5tYWlsYm94LCAibWFpbGRpcnNpemUiLCAoY2hhciAq KSAwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzaXplZmlsZW5hbWUgPSBjb25jYXRlbmF0ZSh1 c3JfYXR0ci5tYWlsYm94LCB2YXJfdmlydF9tYWlsZGlyX3N1ZmZpeCwgKGNoYXIgKikgMCk7Cisg ICAgICAgIHNpemVmaWxlbmFtZSA9IGNvbmNhdGVuYXRlKHNpemVmaWxlbmFtZSwgIm1haWxkaXJz aXplIiwgKGNoYXIgKikgMCk7CisgICAgfQorICAgIAorICAgIC8qCisgICAgICogTG9vayB1cCB0 aGUgdmlydHVhbCBtYWlsZGlyIGxpbWl0IHNpemUgZm9yIHRoaXMgdXNlci4KKyAgICAgKiBGYWxs IGJhY2sgdG8gdmlydHVhbF9tYWlsYm94X2xpbWl0IGluIGNhc2UgbG9va3VwIGZhaWxlZC4KKyAg ICAgKiBJZiB2aXJ0dWFsIG1haWxkaXIgbGltaXQgc2l6ZSBpcyBuZWdhdGl2ZSwgZmFsbCBiYWNr IHRvIHZpcnR1YWxfbWFpbGJveF9saW1pdC4KKyAgICAgKiBJZiBpdCdzIDAsIHNldCB0aGUgbWFp bGJveCBsaW1pdCB0byAwLCB3aGljaCBtZWFucyB1bmxpbWl0ZWQuCisgICAgICogSWYgaXQncyBt b3JlIHRoYW4gMCAocG9zaXRpdmUgaW50KSwgY2hlY2sgaWYgdGhlIHZhbHVlIGlzIHNtYWxsZXIg dGhhbiB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUsCisgICAgICogaWYgaXQgaXMgYW5kIHRoZSB2 aXJ0dWFsIG1haWxkaXIgbGltaXQgY2FuJ3QgYmUgb3ZlcnJpZGRlbiwgZmFsbCBiYWNrIHRvIHZp cnR1YWxfbWFpbGJveF9saW1pdCBhbmQKKyAgICAgKiB3YXJuIHRoZSB1c2VyLCBlbHNlIHVzZSB0 aGUgdmFsdWUgZGlyZWN0bHkgYXMgdGhlIG1haWxkaXIgbGltaXQuCisgICAgICovCisgICAgaWYg KCp2YXJfdmlydF9tYWlsYm94X2xpbWl0X21hcHMgIT0gMCAmJiAobGltaXRfcmVzID0gbWFpbF9h ZGRyX2ZpbmQodmlydHVhbF9tYWlsYm94X2xpbWl0X21hcHMsIHN0YXRlLm1zZ19hdHRyLnVzZXIs IChjaGFyICoqKSBOVUxMKSkgIT0gMCkgeworICAgICAgICBuID0gYXRvbChsaW1pdF9yZXMpOwor ICAgICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgICAgIGlmICgobiA8IHZhcl9tZXNzYWdlX2xp bWl0KSAmJiAoIXZhcl92aXJ0X21haWxib3hfbGltaXRfb3ZlcnJpZGUpKSB7CisgICAgICAgICAg ICAgICAgbiA9IHZhcl92aXJ0X21haWxib3hfbGltaXQ7CisKKyAgICAgICAgICAgICAgICBtc2df d2FybigiJXM6IHJlY2lwaWVudCAlcyAtIHZpcnR1YWwgbWFpbGRpciBsaW1pdCBpcyBzbWFsbGVy IHRoYW4gJXMgaW4gJXMgLSBmYWxsaW5nIGJhY2sgdG8gJXMiLAorICAgICAgICAgICAgICAgICAg ICAgICAgbXluYW1lLCBzdGF0ZS5tc2dfYXR0ci51c2VyLCBWQVJfTUVTU0FHRV9MSU1JVCwgdmly dHVhbF9tYWlsYm94X2xpbWl0X21hcHMtPnRpdGxlLAorICAgICAgICAgICAgICAgICAgICAgICAg VkFSX1ZJUlRfTUFJTEJPWF9MSU1JVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl IHsKKyAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg IG1zZ19pbmZvKCIlczogc2V0IHZpcnR1YWwgbWFpbGRpciBsaW1pdCBzaXplIGZvciAlcyB0byAl bGQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15bmFtZSwgdXNyX2F0dHIubWFpbGJv eCwgbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobiA9PSAw KSB7CisgICAgICAgICAgICAgICAgaWYgKG1zZ192ZXJib3NlKQorICAgICAgICAgICAgICAgICAg ICBtc2dfaW5mbygiJXM6IHNldCB2aXJ0dWFsIG1haWxkaXIgbGltaXQgc2l6ZSBmb3IgJXMgdG8g JWxkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteW5hbWUsIHVzcl9hdHRyLm1haWxi b3gsIG4pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworCSAgICBpZiAobXNnX3ZlcmJvc2Up CisJCW1zZ19pbmZvKCIlczogcXVvdGEgaXMgbmVnYXRpdmUgKCVsZCksIHVzaW5nIGRlZmF1bHQg dmlydHVhbF9tYWlsYm94X2xpbWl0ICglbGQpIiwgCisJCQkgICAgbXluYW1lLCBuLCB2YXJfdmly dF9tYWlsYm94X2xpbWl0KTsKKyAgICAgICAgICAgIC8qIEludmFsaWQgbGltaXQgc2l6ZSAobmVn YXRpdmUpLiBVc2UgZGVmYXVsdCB2aXJ0dWFsX21haWxib3hfbGltaXQuICovCisgICAgICAgICAg ICBuID0gdmFyX3ZpcnRfbWFpbGJveF9saW1pdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNl IHsKKwlpZiAobXNnX3ZlcmJvc2UpCisJICAgIG1zZ19pbmZvKCIlczogbm8gbGltaXQgZm91bmQg aW4gdGhlIG1hcHMsIHVzaW5nIGRlZmF1bHQgdmlydHVhbF9tYWlsYm94X2xpbWl0ICglbGQpIiwg CisJCQlteW5hbWUsIHZhcl92aXJ0X21haWxib3hfbGltaXQpOworICAgICAgICAvKiBUaGVyZSBp cyBubyBsaW1pdCBpbiB0aGUgbWFwcy4gVXNlIGRlZmF1bHQgdmlydHVhbF9tYWlsYm94X2xpbWl0 LiAqLworICAgICAgICBuID0gdmFyX3ZpcnRfbWFpbGJveF9saW1pdDsKKyAgICB9CisKKyAgICAv KiBJZiB0aGVyZSBzaG91bGQgaXMgYSBxdW90YSBvbiBtYWlsZGlyIGdlbmVyYWx5LCBjaGVjayBp dCBiZWZvcmUgZGVsaXZlcmluZyB0aGUgbWFpbCAqLworICAgIGlmIChuICE9IDApIHsKKyAgICAg ICAgc2V0X2V1Z2lkKHVzcl9hdHRyLnVpZCwgdXNyX2F0dHIuZ2lkKTsKKwkvKiB0cnkgdG8gcmVh ZCB0aGUgcXVvdGEgZnJvbSBtYWlsZGlyc2l6ZSBmaWxlLiBSZXR1cm5lZCB2YWx1ZXMgYnkgcmVh ZF9tYWlsZGlyc2l6ZToKKwl4IDwgMCAgPSBzb21ldGhpbmcgZmFpbGVkCisJeCA+PSAwID0gcmVh ZGluZyBzdWNjZXNzZnVsbHkgZmluaXNoZWQgLSBzdW0gc2kgcmV0dXJuZWQsIHNvIHN1bSBzaXpl IG9mIE1haWxkaXIgd2FzIDAgb3IgbW9yZSAqLworICAgICAgICBpZiAoIXZhcl92aXJ0X21haWxi b3hfbGltaXRfaW5ib3ggJiYgdmFyX3ZpcnRfbWFpbGRpcl9leHRlbmRlZCAmJiAocmVhZF9tZHMg PSByZWFkX21haWxkaXJzaXplKHNpemVmaWxlbmFtZSwgJnNhdmVkX3NpemUsICZzYXZlZF9jb3Vu dCkpID49IDApIHsKKyAgICAJICAgIGlmIChtc2dfdmVyYm9zZSkKKyAgICAgICAgCW1zZ19pbmZv KCIlczogbWFpbGRpcnNpemUgdXNlZD0lcyBzdW09JWxkIGNvdW50PSVsZCIsIG15bmFtZSwgc2l6 ZWZpbGVuYW1lLCBzYXZlZF9zaXplLCBzYXZlZF9jb3VudCk7CisJfSBlbHNlIHsKKwkgICAgaWYg KG1zZ192ZXJib3NlKSAKKwkJbXNnX2luZm8oIiVzOiBXZSB3aWxsIHJlY291bnQgdGhlIHF1b3Rh ICh2YXJfdmlydF9tYWlsYm94X2xpbWl0ID0gJWxkLCB2YXJfdmlydF9tYWlsZGlyX2V4dGVuZGVk ID0gJWQsIHJlYWRfbWFpbGRpcnNpemUgPSAlZCkiLCAKKwkJCSAgICBteW5hbWUsIHZhcl92aXJ0 X21haWxib3hfbGltaXQsIHZhcl92aXJ0X21haWxkaXJfZXh0ZW5kZWQsIHJlYWRfbWRzKTsKKwor CSAgICAvKiBzYW5pdHkgKi8KKwkgICAgc2F2ZWRfc2l6ZSA9IDA7IAorCSAgICBzYXZlZF9jb3Vu dCA9IDA7CisJICAgIAorICAgIAkgICAgaWYgKHZhcl92aXJ0X21haWxib3hfbGltaXRfaW5ib3gp IHsKKyAgICAgICAgCS8qIENoZWNrIEluYm94IG9ubHkgKG5ldywgY3VyIGFuZCB0bXAgZGlycyku ICovCisgICAgICAgIAlzYXZlZF9zaXplID0gY2hlY2tfZGlyX3NpemUobmV3ZGlyLCAmc2F2ZWRf Y291bnQpOworICAgICAgICAJc2F2ZWRfc2l6ZSArPSBjaGVja19kaXJfc2l6ZShjdXJkaXIsICZz YXZlZF9jb3VudCk7CisgICAgICAgIAlzYXZlZF9zaXplICs9IGNoZWNrX2Rpcl9zaXplKHRtcGRp ciwgJnNhdmVkX2NvdW50KTsKKyAgICAJICAgIH0gZWxzZSB7CisgICAgICAgIAkvKiBDaGVjayBh bGwgYm94ZXMuICovCisgICAgICAgIAlzYXZlZF9zaXplID0gY2hlY2tfZGlyX3NpemUodXNyX2F0 dHIubWFpbGJveCwgJnNhdmVkX2NvdW50KTsKKyAgICAJICAgIH0KKworICAgIAkgICAgc2V0X2V1 Z2lkKHZhcl9vd25lcl91aWQsIHZhcl9vd25lcl9naWQpOworICAgIAl9ICAgIAkKKyAgICB9Cisg ICAgCiAgICAgLyoKICAgICAgKiBDcmVhdGUgYW5kIHdyaXRlIHRoZSBmaWxlIGFzIHRoZSByZWNp cGllbnQsIHNvIHRoYXQgZmlsZSBxdW90YSB3b3JrLgogICAgICAqIENyZWF0ZSBhbnkgbWlzc2lu ZyBkaXJlY3RvcmllcyBvbiB0aGUgZmx5LiBUaGUgZmlsZSBuYW1lIGlzIGNob3NlbgpAQCAtMTc1 LDQ2ICs2NjQsMjg4IEBACiAgICAgICogWy4uLl0KICAgICAgKi8KICAgICBzZXRfZXVnaWQodXNy X2F0dHIudWlkLCB1c3JfYXR0ci5naWQpOwotICAgIHZzdHJpbmdfc3ByaW50ZihidWYsICIlbHUu UCVkLiVzIiwKLQkJICh1bnNpZ25lZCBsb25nKSBzdGFydHRpbWUudHZfc2VjLCB2YXJfcGlkLCBn ZXRfaG9zdG5hbWUoKSk7CisgICAgdnN0cmluZ19zcHJpbnRmKGJ1ZiwgIiVsdS5QJWQuJXMiLCAo dW5zaWduZWQgbG9uZykgc3RhcnR0aW1lLnR2X3NlYywgdmFyX3BpZCwgZ2V0X2hvc3RuYW1lKCkp OwogICAgIHRtcGZpbGUgPSBjb25jYXRlbmF0ZSh0bXBkaXIsIFNUUihidWYpLCAoY2hhciAqKSAw KTsKICAgICBuZXdmaWxlID0gMDsKKyAgICBia3BuZXdmaWxlID0gMDsKICAgICBpZiAoKGRzdCA9 IHZzdHJlYW1fZm9wZW4odG1wZmlsZSwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19FWENMLCAwNjAw KSkgPT0gMAotCSYmIChlcnJubyAhPSBFTk9FTlQKLQkgICAgfHwgbWFrZV9kaXJzKHRtcGRpciwg MDcwMCkgPCAwCi0JICAgIHx8IChkc3QgPSB2c3RyZWFtX2ZvcGVuKHRtcGZpbGUsIE9fV1JPTkxZ IHwgT19DUkVBVCB8IE9fRVhDTCwgMDYwMCkpID09IDApKSB7Ci0JZHNiX3NpbXBsZSh3aHksIG1i b3hfZHNuKGVycm5vLCAiNC4yLjAiKSwKLQkJICAgImNyZWF0ZSBtYWlsZGlyIGZpbGUgJXM6ICVt IiwgdG1wZmlsZSk7Ci0gICAgfSBlbHNlIGlmIChmc3RhdCh2c3RyZWFtX2ZpbGVubyhkc3QpLCAm c3QpIDwgMCkgewotCi0JLyoKLQkgKiBDb3Zlcml0eSAyMDA2MDQ6IGZpbGUgZGVzY3JpcHRvciBs ZWFrIGluIGNvZGUgdGhhdCBuZXZlciBleGVjdXRlcy4KLQkgKiBDb2RlIHJlcGxhY2VkIGJ5IG1z Z19mYXRhbCgpLCBhcyBpdCBpcyBub3Qgd29ydGh3aGlsZSB0byBjb250aW51ZQotCSAqIGFmdGVy IGFuIGltcG9zc2libGUgZXJyb3IgY29uZGl0aW9uLgotCSAqLwotCW1zZ19mYXRhbCgiZnN0YXQg JXM6ICVtIiwgdG1wZmlsZSk7Ci0gICAgfSBlbHNlIHsKLQl2c3RyaW5nX3NwcmludGYoYnVmLCAi JWx1LlYlbHhJJWx4TSVsdS4lcyIsCi0JCQkodW5zaWduZWQgbG9uZykgc3RhcnR0aW1lLnR2X3Nl YywKLQkJCSh1bnNpZ25lZCBsb25nKSBzdC5zdF9kZXYsCi0JCQkodW5zaWduZWQgbG9uZykgc3Qu c3RfaW5vLAotCQkJKHVuc2lnbmVkIGxvbmcpIHN0YXJ0dGltZS50dl91c2VjLAotCQkJZ2V0X2hv c3RuYW1lKCkpOwotCW5ld2ZpbGUgPSBjb25jYXRlbmF0ZShuZXdkaXIsIFNUUihidWYpLCAoY2hh ciAqKSAwKTsKLQlpZiAoKG1haWxfY29weV9zdGF0dXMgPSBtYWlsX2NvcHkoQ09QWV9BVFRSKHN0 YXRlLm1zZ19hdHRyKSwKLQkJCQkJICBkc3QsIGNvcHlfZmxhZ3MsICJcbiIsCi0JCQkJCSAgd2h5 KSkgPT0gMCkgewotCSAgICBpZiAoc2FuZV9saW5rKHRtcGZpbGUsIG5ld2ZpbGUpIDwgMAotCQkm JiAoZXJybm8gIT0gRU5PRU5UCi0JCSAgICB8fCAobWFrZV9kaXJzKGN1cmRpciwgMDcwMCksIG1h a2VfZGlycyhuZXdkaXIsIDA3MDApKSA8IDAKLQkJICAgIHx8IHNhbmVfbGluayh0bXBmaWxlLCBu ZXdmaWxlKSA8IDApKSB7Ci0JCWRzYl9zaW1wbGUod2h5LCBtYm94X2RzbihlcnJubywgIjQuMi4w IiksCi0JCQkgICAiY3JlYXRlIG1haWxkaXIgZmlsZSAlczogJW0iLCBuZXdmaWxlKTsKLQkJbWFp bF9jb3B5X3N0YXR1cyA9IE1BSUxfQ09QWV9TVEFUX1dSSVRFOwotCSAgICB9Ci0JfQotCWlmICh1 bmxpbmsodG1wZmlsZSkgPCAwKQotCSAgICBtc2dfd2FybigicmVtb3ZlICVzOiAlbSIsIHRtcGZp bGUpOworICAgICAgICAmJiAoZXJybm8gIT0gRU5PRU5UCisgICAgICAgICAgICB8fCBtYWtlX2Rp cnModG1wZGlyLCAwNzAwKSA8IDAKKyAgICAgICAgICAgIHx8IChkc3QgPSB2c3RyZWFtX2ZvcGVu KHRtcGZpbGUsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fRVhDTCwgMDYwMCkpID09IDApKSB7Cisg ICAgICAgIGRzYl9zaW1wbGUod2h5LCBtYm94X2RzbihlcnJubywgIjQuMi4wIiksICJjcmVhdGUg bWFpbGRpciBmaWxlICVzOiAlbSIsIHRtcGZpbGUpOworICAgIH0KKyAgICBlbHNlIGlmIChmc3Rh dCh2c3RyZWFtX2ZpbGVubyhkc3QpLCAmc3QpIDwgMCkgeworICAgICAgICAvKgorICAgICAgICAg KiBDb3Zlcml0eSAyMDA2MDQ6IGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIGNvZGUgdGhhdCBuZXZl ciBleGVjdXRlcy4KKyAgICAgICAgICogQ29kZSByZXBsYWNlZCBieSBtc2dfZmF0YWwoKSwgYXMg aXQgaXMgbm90IHdvcnRod2hpbGUgdG8gY29udGludWUKKyAgICAgICAgICogYWZ0ZXIgYW4gaW1w b3NzaWJsZSBlcnJvciBjb25kaXRpb24uCisgICAgICAgICAqLworICAgICAgICBtc2dfZmF0YWwo ImZzdGF0ICVzOiAlbSIsIHRtcGZpbGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdnN0 cmluZ19zcHJpbnRmKGJ1ZiwgIiVsdS5WJWx4SSVseE0lbHUuJXMiLAorICAgICAgICAgICAgICAg ICh1bnNpZ25lZCBsb25nKSBzdGFydHRpbWUudHZfc2VjLAorICAgICAgICAgICAgICAgICh1bnNp Z25lZCBsb25nKSBzdC5zdF9kZXYsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIHN0 LnN0X2lubywKKyAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgc3RhcnR0aW1lLnR2X3Vz ZWMsCisgICAgICAgICAgICAgICAgZ2V0X2hvc3RuYW1lKCkpOworICAgICAgICBuZXdmaWxlID0g Y29uY2F0ZW5hdGUobmV3ZGlyLCBTVFIoYnVmKSwgKGNoYXIgKikgMCk7CisgICAgICAgIGJrcG5l d2ZpbGUgPSBjb25jYXRlbmF0ZShTVFIoYnVmKSwgKGNoYXIgKikgMCk7IC8qIFdpbGwgbmVlZCBp dCBsYXRlciwgaWYgd2UgTU9WRSB0byBvdGhlciBmb2xkZXJzLiAqLworCisgICAgICAgIGlmICgo bWFpbF9jb3B5X3N0YXR1cyA9IG1haWxfY29weShDT1BZX0FUVFIoc3RhdGUubXNnX2F0dHIpLCBk c3QsIGNvcHlfZmxhZ3MsICJcbiIsIHdoeSkpID09IDApIHsKKyAgICAgICAgICAgIC8qCisgICAg ICAgICAgICAgKiBBZGQgYSAiLFM9PHNpemVvZmZpbGU+IiB0byB0aGUgbmV3bHkgd3JpdHRlbiBm aWxlIGFjY29yZGluZyB0byB0aGUKKyAgICAgICAgICAgICAqIE1haWxkaXIrKyBzcGVjaWZpY2F0 aW9uczogaHR0cDovL3d3dy5pbnRlcjcuY29tL2NvdXJpZXJpbWFwL1JFQURNRS5tYWlsZGlycXVv dGEuaHRtbAorICAgICAgICAgICAgICogVGhpcyBuZWVkcyBhIHN0YXQoMikgb2YgdGhlIHRlbXBm aWxlIGFuZCBtb2RpZmljYXRpb24gb2YgdGhlCisgICAgICAgICAgICAgKiBuYW1lIG9mIHRoZSBm aWxlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoc3RhdCh0bXBmaWxlLCAmbWFp bF9zdGF0KSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKG4gIT0gMCkgeworICAgICAgICAg ICAgICAgICAgICBzYXZlZF9zaXplICs9IChsb25nKSBtYWlsX3N0YXQuc3Rfc2l6ZTsKKyAgICAg ICAgICAgICAgICAgICAgc2F2ZWRfY291bnQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgaWYgKHZhcl92aXJ0X21haWxkaXJfZXh0ZW5kZWQpIHsKKyAgICAgICAgICAgICAg ICAgICAgLyogQXBwZW5kIHRoZSBzaXplIG9mIHRoZSBmaWxlIHRvIG5ld2ZpbGUuICovCisgICAg ICAgICAgICAgICAgICAgIHZzdHJpbmdfc3ByaW50ZihidWYsICIsUz0lbGQiLCAobG9uZykgbWFp bF9zdGF0LnN0X3NpemUpOworICAgICAgICAgICAgICAgICAgICBuZXdmaWxlID0gY29uY2F0ZW5h dGUobmV3ZmlsZSwgU1RSKGJ1ZiksIChjaGFyICopIDApOworICAgICAgICAgICAgICAgICAgICBi a3BuZXdmaWxlID0gY29uY2F0ZW5hdGUoYmtwbmV3ZmlsZSwgU1RSKGJ1ZiksIChjaGFyICopIDAp OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoKKyAg ICAgICAgICAgICAqIE5vdyB3ZSBoYXZlIHRoZSBtYWlsZGlyIHNpemUgaW4gc2F2ZWRfc2l6ZSwg Y29tcGFyZSBpdCB0byB0aGUgbWF4CisgICAgICAgICAgICAgKiBxdW90YSB2YWx1ZSBhbmQgZXZl bnR1YWxseSBpc3N1ZSBhIG1lc3NhZ2UgdGhhdCB3ZSd2ZSBvdmVyZHJhd24gaXQuCisgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgIGlmIChzYXZlZF9zaXplID4gbikgeworICAgICAgICAgICAg ICAgIG1haWxfY29weV9zdGF0dXMgPSBNQUlMX0NPUFlfU1RBVF9XUklURTsKKyAgICAgICAgICAg ICAgICBpZiAoKChsb25nKSBtYWlsX3N0YXQuc3Rfc2l6ZSA+IG4pIHx8ICh2YXJfdmlydF9vdmVy cXVvdGFfYm91bmNlKSkKKyAgICAgICAgICAgICAgICAgICAgZXJybm8gPSBFRkJJRzsKKyAgICAg ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVycm5vID0gRURRVU9UOworICAg ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogTWFpbGRp cmZpbHRlciBjb2RlIGJ5IHJrQGRlbWl1cmcubmV0LiAqLworICAgICAgICAgICAgICAgIGlmICh2 YXJfdmlydF9tYWlsZGlyX2ZpbHRlcikgeworICAgICAgICAgICAgICAgICAgICBpZiAobXNnX3Zl cmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBtc2dfaW5mbygiJXM6IGxvYWRpbmcgRElD VCBmaWx0ZXJzIiwgbXluYW1lKTsKKworI2RlZmluZSBTVFJFUVVBTCh4LHksbCkgKHN0cm5jYXNl Y21wKCh4KSwgKHkpLCAobCkpID09IDAgJiYgKHkpW2xdID09IDApCisjZGVmaW5lIE1BSUxfQ09Q WV9TVEFUX1JFSkVDVCAgKDE8PDMpCisjZGVmaW5lIE1BSUxfQ09QWV9TVEFUX0RJU0NBUkQgKDE8 PDQpCisKKyAgICAgICAgICAgICAgICAgICAgLyogUmVhZCBmaWx0ZXJzLiAqLworICAgICAgICAg ICAgICAgICAgICBmaWx0ZXJuYW1lID0gY29uY2F0ZW5hdGUoInJlZ2V4cDoiLCB1c3JfYXR0ci5t YWlsYm94LCAibWFpbGRpcmZpbHRlciIsIChjaGFyICopIDApOworICAgICAgICAgICAgICAgICAg ICBzcWxtdGltZSA9IHNxbDJmaWxlKHN0cmNocihmaWx0ZXJuYW1lLCAnLycpLCBzdGF0ZS5tc2df YXR0ci51c2VyKTsKKworICAgICAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGlzIGZpbHRl ciBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgYXMgZGljdGlvbmFyeS4gKi8KKyAgICAgICAgICAgICAg ICAgICAgaWYgKG1zZ192ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2luZm8o IiVzOiBjaGVja2luZyBESUNUIGZpbHRlcnMgZm9yICVzIiwgbXluYW1lLCBmaWx0ZXJuYW1lKTsK KworICAgICAgICAgICAgICAgICAgICBpZiAoKEZJTFRFUlMgPSBkaWN0X2hhbmRsZShmaWx0ZXJu YW1lKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2dfdmVyYm9zZSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtc2dfaW5mbygiJXM6IERJQ1QgZmlsdGVyIGZvdW5kIiwg bXluYW1lKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAqIElmIHdlIGhhdmUgbXRpbWUgaW4gb3VyIERJQ1Qgc3RydWN0dXJlLCBjaGVjayBp dCBhZ2FpbnN0IHNxbG10aW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbmQgcmVsb2Fk IHRoZSBmaWx0ZXJzIGlmIHRoZXkgZGlmZmVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICov CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRklMVEVSUy0+bXRpbWUgPiAwICYmIHNxbG10 aW1lID4gMCAmJiBGSUxURVJTLT5tdGltZSAhPSBzcWxtdGltZSkgeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChtc2dfdmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbXNnX2luZm8oIiVzOiByZWxvYWRpbmcgRElDVCBmaWx0ZXJzIChkaWN0X210aW1lPSVs ZCAhPSBzcWxfbXRpbWU9JWxkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbXluYW1lLCBGSUxURVJTLT5tdGltZSwgc3FsbXRpbWUpOworCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGljdF91bnJlZ2lzdGVyKGZpbHRlcm5hbWUpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEZJTFRFUlMgPSBkaWN0X29wZW4oZmlsdGVybmFtZSwgT19SRE9OTFks IERJQ1RfRkxBR19MT0NLKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0X3JlZ2lz dGVyKGZpbHRlcm5hbWUsIEZJTFRFUlMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJ TFRFUlMtPm10aW1lID0gc3FsbXRpbWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoc3FsbXRpbWUgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogUmVnaXN0ZXJpbmcgZmlsdGVyIGFzIG5ldyBkaWN0aW9uYXJ5LiAqLworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2dfdmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbXNnX2luZm8oIiVzOiBsb2FkaW5nIERJQ1QgZmlsdGVycyBmcm9tICVz IChtdGltZT0lbGQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt eW5hbWUsIGZpbHRlcm5hbWUsIHNxbG10aW1lKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEZJTFRFUlMgPSBkaWN0X29wZW4oZmlsdGVybmFtZSwgT19SRE9OTFksIERJQ1RfRkxBR19M T0NLKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0X3JlZ2lzdGVyKGZpbHRlcm5h bWUsIEZJTFRFUlMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTFRFUlMtPm10aW1l ID0gc3FsbXRpbWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoRklMVEVSUyAmJiAodG1wZmlsdGVyID0g dnN0cmVhbV9mb3Blbih0bXBmaWxlLCBPX1JET05MWSwgMCkpKSB7CisgICAgICAgICAgICAgICAg ICAgICAgICBmbHRzdHIgPSB2c3RyaW5nX2FsbG9jKDEwMjQpOworICAgICAgICAgICAgICAgICAg ICAgICAgaGVhZGVyID0gKGNoYXIgKikgbWFsbG9jKDgxOTIpOyAvKiAhISFJTlNFQ1VSRSEhISBT ZWUgNzE2OC1oYWNrIGJlbG93LiAqLworICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyWzBd ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZzdHJpbmdfZ2V0X25vbmxfYm91bmQoZmx0 c3RyLCB0bXBmaWx0ZXIsIDEwMjMpOworICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0g Y29uY2F0ZW5hdGUoaGVhZGVyLCBTVFIoZmx0c3RyKSwgKGNoYXIgKikgMCk7CisKKyAgICAgICAg ICAgICAgICAgICAgICAgIHdoaWxlKCF2c3RyZWFtX2Zlb2YodG1wZmlsdGVyKSAmJiBmbHRzdHIt PnZidWYuZGF0YVswXSAmJiBzdHJsZW4oaGVhZGVyKSA8IDcxNjggKSB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdnN0cmluZ19nZXRfbm9ubF9ib3VuZChmbHRzdHIsIHRtcGZpbHRlciwg MTAyMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR2x1ZSBtdWx0aWxpbmUgaGVh ZGVycywgcmVwbGFjaW5nIGxlYWRpbmcgVEFCIHdpdGggc3BhY2UuICovCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKG1zZ192ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtc2dfaW5mbygiJXM6IGZsdHN0ciB2YWx1ZTogJXMiLCBteW5hbWUsIFNUUihmbHRz dHIpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbHRzdHItPnZidWYuZGF0 YVswXSA9PSAnICcgfHwgZmx0c3RyLT52YnVmLmRhdGFbMF0gPT0gJ1x0JyApIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsdHN0ci0+dmJ1Zi5kYXRhWzBdID09ICdcdCcp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHRzdHItPnZidWYuZGF0YVsw XSA9ICcgJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0gY29uY2F0 ZW5hdGUoaGVhZGVyLCBTVFIoZmx0c3RyKSwgKGNoYXIgKikgMCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBjb25jYXRlbmF0ZShoZWFkZXIsICJc biIsIFNUUihmbHRzdHIpLCAoY2hhciAqKSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg IGlmIChtc2dfdmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dfaW5mbygi JXM6IGNoZWNraW5nIGZpbHRlciBDTUQgZm9yICVzIiwgbXluYW1lLCBmaWx0ZXJuYW1lKTsKKwor ICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgd2hvbGUgaGVhZGVyIHBhcnQgd2l0aCBy ZWdleHAgbWFwcy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUgPSBkaWN0 X2dldChGSUxURVJTLCBsb3dlcmNhc2UoaGVhZGVyKSkpICE9IDApIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1zZ19pbmZvKCIlczogcHJlcGFyaW5nIGZpbHRlciBDTUQiLCBteW5hbWUpOworCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kX3RleHQgPSB2YWx1ZSArIHN0cmNzcG4odmFs dWUsICIgXHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRfbGVuID0gY21kX3Rl eHQgLSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKmNtZF90ZXh0 ICYmIElTU1BBQ0UoKmNtZF90ZXh0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y21kX3RleHQrKzsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2dfdmVyYm9z ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2luZm8oIiVzOiBleGVjdXRp bmcgZmlsdGVyIENNRCIsIG15bmFtZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoU1RSRVFVQUwodmFsdWUsICJSRUpFQ1QiLCBjbWRfbGVuKSkgeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtc2dfaW5mbygiJXM6IGV4ZWN1dGluZyBmaWx0ZXIgQ01EIFJFSkVDVCIs IG15bmFtZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbF9jb3B5X3N0 YXR1cyA9IE1BSUxfQ09QWV9TVEFUX1JFSkVDVDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdnN0cmluZ19zcHJpbnRmKHdoeS0+cmVhc29uLCAiJXMiLCBjbWRfdGV4dCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzYl9zaW1wbGUod2h5LCAiNS4wLjAiLCAiVXNl ciBmaWx0ZXIgLSBSRUpFQ1QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU1RSRVFVQUwodmFsdWUsICJESVNDQVJEIiwg Y21kX2xlbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1zZ192ZXJi b3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2luZm8oIiVzOiBl eGVjdXRpbmcgZmlsdGVyIENNRCBESVNDQVJEIiwgbXluYW1lKTsKKworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtYWlsX2NvcHlfc3RhdHVzID0gTUFJTF9DT1BZX1NUQVRfRElTQ0FS RDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0cmluZ19zcHJpbnRmKHdoeS0+ cmVhc29uLCAiJXMiLCBjbWRfdGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRzYl9zaW1wbGUod2h5LCAiNS4wLjAiLCAiVXNlciBmaWx0ZXIgLSBESVNDQVJEIik7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgKHZhcl92aXJ0X21haWxkaXJfZXh0ZW5kZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKFNUUkVRVUFMKHZhbHVlLCAiTU9WRSIsIGNtZF9sZW4pKSB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2luZm8oIiVzOiBleGVjdXRpbmcgZmls dGVyIENNRCBNT1ZFIiwgbXluYW1lKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RyY3V0KChjaGFyICopIGNtZF90ZXh0LCAiICIpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RyY3V0KChjaGFyICopIGNtZF90ZXh0LCAiXHQiKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmN1dCgoY2hhciAqKSBjbWRfdGV4dCwg Ii8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmN1dCgoY2hhciAq KSBjbWRfdGV4dCwgIi4uIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmICgqdmFyX3ZpcnRfbWFpbGRpcl9zdWZmaXggPT0gMCkgeworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGUgPSBjb25jYXRlbmF0ZSh1c3JfYXR0ci5tYWls Ym94LCAoY2hhciAqKSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGUgPSBjb25jYXRlbmF0ZSh1c3JfYXR0 ci5tYWlsYm94LCB2YXJfdmlydF9tYWlsZGlyX3N1ZmZpeCwgKGNoYXIgKikgMCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChjbWRfdGV4dFswXSAhPSAnLicpIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuZXdmaWxlID0gY29uY2F0ZW5hdGUobmV3ZmlsZSwgIi4i LCAoY2hhciAqKSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2RpciAgPSBjb25jYXRlbmF0ZShu ZXdmaWxlLCBjbWRfdGV4dCwgIi8iLCAibmV3LyIsIChjaGFyICopIDApOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdG1wZGlyICA9IGNvbmNhdGVuYXRlKG5ld2ZpbGUsIGNt ZF90ZXh0LCAiLyIsICJ0bXAvIiwgKGNoYXIgKikgMCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjdXJkaXIgID0gY29uY2F0ZW5hdGUobmV3ZmlsZSwgY21kX3RleHQsICIv IiwgImN1ci8iLCAoY2hhciAqKSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1kZmZpbGVuYW1lID0gY29uY2F0ZW5hdGUobmV3ZmlsZSwgY21kX3RleHQsICIvIiwgIm1h aWxkaXJmb2xkZXIiLCAoY2hhciAqKSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5ld2ZpbGUgPSBjb25jYXRlbmF0ZShuZXdmaWxlLCBjbWRfdGV4dCwgIi8iLCAibmV3 LyIsIGJrcG5ld2ZpbGUsIChjaGFyICopIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKFNUUkVRVUFMKHZhbHVlLCAiTE9HIiwgY21kX2xlbikgfHwgU1RSRVFV QUwodmFsdWUsICJXQVJOIiwgY21kX2xlbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbXNnX3dhcm4oIiVzOiBoZWFkZXIgY2hlY2sgd2FybmluZzogJXMiLCBteW5hbWUsIGNt ZF90ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoU1RSRVFVQUwodmFsdWUsICJJTkZPIiwgY21kX2xlbikpIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2luZm8oIiVzOiBoZWFkZXIgY2hlY2sg aW5mbzogJXMiLCBteW5hbWUsIGNtZF90ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19pbmZvKCIlczogZXhpdGluZyBmaWx0ZXIg Q01EIiwgbXluYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gLyogRW5kLU9mLUNoZWNr ICovCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ZnJlZShoZWFkZXIpOworICAgICAgICAg ICAgICAgICAgICAgICAgdnN0cmluZ19mcmVlKGZsdHN0cik7CisgICAgICAgICAgICAgICAgICAg ICAgICB2c3RyZWFtX2ZjbG9zZSh0bXBmaWx0ZXIpOworICAgICAgICAgICAgICAgICAgICB9CisK KyAgICAgICAgICAgICAgICAgICAgbXlmcmVlKGZpbHRlcm5hbWUpOworICAgICAgICAgICAgICAg IH0gLyogRW5kLU9mLU1haWxkaXJmaWx0ZXIgKi8KKworICAgICAgICAgICAgICAgIC8qIERlbGl2 ZXIgdG8gY3VyZGlyLiAqLworICAgICAgICAgICAgICAgIGlmIChtYWlsX2NvcHlfc3RhdHVzID09 IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNhbmVfbGluayh0bXBmaWxlLCBuZXdmaWxl KSA8IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChlcnJubyAhPSBFTk9FTlQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8fCAobWFrZV9kaXJzKGN1cmRpciwgMDcwMCksIG1ha2Vf ZGlycyhuZXdkaXIsIDA3MDApLCBtYWtlX2RpcnModG1wZGlyLCAwNzAwKSkgPCAwCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfHwgc2FuZV9saW5rKHRtcGZpbGUsIG5ld2ZpbGUpIDwgMCkp IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRzYl9zaW1wbGUod2h5LCBtYm94X2RzbihlcnJu bywgIjQuMi4wIiksICJjcmVhdGUgbWFpbGRpciBmaWxlICVzOiAlbSIsIG5ld2ZpbGUpOworICAg ICAgICAgICAgICAgICAgICAgICAgbWFpbF9jb3B5X3N0YXR1cyA9IE1BSUxfQ09QWV9TVEFUX1dS SVRFOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZh cl92aXJ0X21haWxkaXJfZXh0ZW5kZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUo JnRtKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIHF1b3RhIGlu IHRoZSBmaWxlIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IG9uZSwgaWYgbm90LCBkZWxldGUg dGhlIGZpbGUuICovCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplZmlsZSA9IHZzdHJlYW1f Zm9wZW4oc2l6ZWZpbGVuYW1lLCBPX1JET05MWSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoc2l6ZWZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcXVvdGEg PSB2c3RyaW5nX2FsbG9jKDEyOCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0cmlu Z19nZXRfbnVsbF9ib3VuZChmaWxlcXVvdGEsIHNpemVmaWxlLCAxMjcpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZzdHJlYW1fZmNsb3NlKHNpemVmaWxlKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoYXRvbCh2c3RyaW5nX2V4cG9ydChmaWxlcXVvdGEpKSAhPSBuKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmsoc2l6ZWZpbGVuYW1lKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogT3Bl biBtYWlsZGlyc2l6ZSBmaWxlIHRvIGFwcGVuZCB0aGlzIHRyYW5zYWN0aW9uLiAqLworICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZWZpbGUgPSB2c3RyZWFtX2ZvcGVuKHNpemVmaWxlbmFtZSwg T19XUk9OTFkgfCBPX0FQUEVORCwgMDY0MCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8q IElmIHRoZSBvcGVuIGZhaWxzIChtYWlsZGlyc2l6ZSBkb2Vzbid0IGV4aXN0KSwgb3IgaXQncyB0 b28gbGFyZ2UsIG9yIHRvbyBvbGQsIG92ZXJ3cml0ZSBpdC4gKi8KKyAgICAgICAgICAgICAgICAg ICAgICAgIGlmKCFzaXplZmlsZSB8fCAoc3RhdChzaXplZmlsZW5hbWUsICZzaXplZmlsZV9zdGF0 KSA8IDApIHx8IChzaXplZmlsZV9zdGF0LnN0X3NpemUgPiBTSVpFRklMRV9NQVgpIHx8IChzaXpl ZmlsZV9zdGF0LnN0X210aW1lICsgMTUqNjAgPCB0bSkpIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBJZiB0aGUgZmlsZSBleGlzdHMsIHNpemVmaWxlIGhhcyBiZWVuIG9wZW5lZCBh Ym92ZSwgc28gY2xvc2UgaXQgZmlyc3QuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgKHNpemVmaWxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzdHJlYW1f ZmNsb3NlKHNpemVmaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWZp bGUgPSB2c3RyZWFtX2ZvcGVuKHNpemVmaWxlbmFtZSwgT19XUk9OTFkgfCBPX1RSVU5DLCAwNjQw KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVmaWxlID0g dnN0cmVhbV9mb3BlbihzaXplZmlsZW5hbWUsIE9fV1JPTkxZIHwgT19DUkVBVCwgMDY0MCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogSWYgdGhlIGNyZWF0aW9uIHdvcmtlZCwgd3JpdGUgdG8gdGhlIGZpbGUsIG90aGVyd2lz ZSBqdXN0IGdpdmUgdXAuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpemVm aWxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzdHJlYW1fZnByaW50Zihz aXplZmlsZSwgIiVsZFNcbiVsZCAlbGRcbiIsIG4sIHNhdmVkX3NpemUsIHNhdmVkX2NvdW50KTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0cmVhbV9mY2xvc2Uoc2l6ZWZpbGUp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIFdlIG9wZW5lZCBtYWlsZGlyc2l6ZSwgc28gbGV0J3MganVzdCBhcHBlbmQgdGhp cyB0cmFuc2FjdGlvbiBhbmQgY2xvc2UgaXQuICovCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdnN0cmVhbV9mcHJpbnRmKHNpemVmaWxlLCAiJWxkIDFcbiIsIChsb25nKSBtYWlsX3N0YXQu c3Rfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0cmVhbV9mY2xvc2Uoc2l6 ZWZpbGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg ICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICogMSkgbWRmZmlsZW5hbWUgIT0gMCwg c28gdGhlIG1haWxkaXJmaWx0ZXIgY29kZSB3ZW50IHRocm91Z2ggdGhlIE1PVkUgdG8gc3ViZm9s ZGVyIHJ1bGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgKiAyKSBzdGF0KCkgZmFpbGVkLCBt YXliZSB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdD8gVHJ5IHRvIGNyZWF0ZSBpdC4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1kZmZpbGVu YW1lICYmIChzdGF0KG1kZmZpbGVuYW1lLCAmbWRmZmlsZV9zdGF0KSA8IDApKSB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWRmZmlsZSA9IHZzdHJlYW1fZm9wZW4obWRmZmlsZW5hbWUs IE9fV1JPTkxZIHwgT19DUkVBVCwgMDYwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgKG1kZmZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0cmVhbV9m Y2xvc2UobWRmZmlsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtc2dfd2FybigiQ2Fubm90IGNyZWF0ZSBtYWlsZGlyZm9sZGVyIGZpbGUgJyVzJzogJXMiLCBt ZGZmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVu bGluayh0bXBmaWxlKSA8IDApCisgICAgICAgICAgICBtc2dfd2FybigicmVtb3ZlICVzOiAlbSIs IHRtcGZpbGUpOwogICAgIH0KICAgICBzZXRfZXVnaWQodmFyX293bmVyX3VpZCwgdmFyX293bmVy X2dpZCk7CiAKQEAgLTIyNCwzMSArOTU1LDY0IEBACiAgICAgICogbG9jYXRpb24gcG9zc2libHkg dW5kZXIgdXNlciBjb250cm9sLgogICAgICAqLwogICAgIGlmIChtYWlsX2NvcHlfc3RhdHVzICYg TUFJTF9DT1BZX1NUQVRfQ09SUlVQVCkgewotCWRlbGl2ZXJfc3RhdHVzID0gREVMX1NUQVRfREVG RVI7Ci0gICAgfSBlbHNlIGlmIChtYWlsX2NvcHlfc3RhdHVzICE9IDApIHsKLQlpZiAoZXJybm8g PT0gRUFDQ0VTKSB7Ci0JICAgIG1zZ193YXJuKCJtYWlsZGlyIGFjY2VzcyBwcm9ibGVtIGZvciBV SUQvR0lEPSVsdS8lbHU6ICVzIiwKLQkJICAgICAobG9uZykgdXNyX2F0dHIudWlkLCAobG9uZykg dXNyX2F0dHIuZ2lkLAotCQkgICAgIFNUUih3aHktPnJlYXNvbikpOwotCSAgICBtc2dfd2Fybigi cGVyaGFwcyB5b3UgbmVlZCB0byBjcmVhdGUgdGhlIG1haWxkaXJzIGluIGFkdmFuY2UiKTsKLQl9 Ci0JdnN0cmluZ19zcHJpbnRmX3ByZXBlbmQod2h5LT5yZWFzb24sICJtYWlsZGlyIGRlbGl2ZXJ5 IGZhaWxlZDogIik7Ci0JZGVsaXZlcl9zdGF0dXMgPQotCSAgICAoU1RSKHdoeS0+c3RhdHVzKVsw XSA9PSAnNCcgPwotCSAgICAgZGVmZXJfYXBwZW5kIDogYm91bmNlX2FwcGVuZCkKLQkgICAgKEJP VU5DRV9GTEFHUyhzdGF0ZS5yZXF1ZXN0KSwKLQkgICAgIEJPVU5DRV9BVFRSKHN0YXRlLm1zZ19h dHRyKSk7Ci0gICAgfSBlbHNlIHsKLQlkc2Jfc2ltcGxlKHdoeSwgIjIuMC4wIiwgImRlbGl2ZXJl ZCB0byBtYWlsZGlyIik7Ci0JZGVsaXZlcl9zdGF0dXMgPSBzZW50KEJPVU5DRV9GTEFHUyhzdGF0 ZS5yZXF1ZXN0KSwKLQkJCSAgICAgIFNFTlRfQVRUUihzdGF0ZS5tc2dfYXR0cikpOworICAgICAg ICBkZWxpdmVyX3N0YXR1cyA9IERFTF9TVEFUX0RFRkVSOworICAgIH0KKyAgICBlbHNlIGlmICht YWlsX2NvcHlfc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKGVycm5vID09IEVBQ0NFUykgewor ICAgICAgICAgICAgbXNnX3dhcm4oIm1haWxkaXIgYWNjZXNzIHByb2JsZW0gZm9yIFVJRC9HSUQ9 JWx1LyVsdTogJXMiLAorICAgICAgICAgICAgICAgICAgICAobG9uZykgdXNyX2F0dHIudWlkLCAo bG9uZykgdXNyX2F0dHIuZ2lkLCBTVFIod2h5LT5yZWFzb24pKTsKKyAgICAgICAgICAgIG1zZ193 YXJuKCJwZXJoYXBzIHlvdSBuZWVkIHRvIGNyZWF0ZSB0aGUgbWFpbGRpcnMgaW4gYWR2YW5jZSIp OworICAgICAgICB9CisKKyAgICAgICAgLyogU3VwcG9ydCBwZXItcmVjaXBpZW50IGJvdW5jZSBt ZXNzYWdlcy4gKi8KKyAgICAgICAgY29uc3QgY2hhciAqbGltaXRfbWVzc2FnZTsKKyAgICAgICAg aW50IGVycm5vcmVkID0gZXJybm87IC8qIFNlZW1zIGxpa2UgbWFpbF9hZGRyX2ZpbmQgcmVzZXRz IGVycm5vIC4uLiAqLworCisgICAgICAgIGlmICgqdmFyX3ZpcnRfbWFpbGRpcl9saW1pdF9tZXNz YWdlX21hcHMgIT0gMCAmJiAobGltaXRfbWVzc2FnZSA9IG1haWxfYWRkcl9maW5kKHZpcnR1YWxf bWFpbGRpcl9saW1pdF9tZXNzYWdlX21hcHMsIHN0YXRlLm1zZ19hdHRyLnVzZXIsIChjaGFyICoq KSBOVUxMKSkgIT0gMCkgeworICAgICAgICAgICAgZXJybm8gPSBlcnJub3JlZDsKKyAgICAgICAg ICAgIGlmIChlcnJubyA9PSBFRkJJRykgeworICAgICAgICAgICAgICAgIGRzYl9zaW1wbGUod2h5 LCAiNS4yLjIiLCBsaW1pdF9tZXNzYWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm IChlcnJubyA9PSBFRFFVT1QpIHsKKyAgICAgICAgICAgICAgICBkc2Jfc2ltcGxlKHdoeSwgIjQu Mi4yIiwgbGltaXRfbWVzc2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg ZWxzZSB7CisgICAgICAgICAgICBlcnJubyA9IGVycm5vcmVkOworICAgICAgICAgICAgaWYgKGVy cm5vID09IEVGQklHKSB7CisgICAgICAgICAgICAgICAgZHNiX3NpbXBsZSh3aHksICI1LjIuMiIs IHZhcl92aXJ0X21haWxkaXJfbGltaXRfbWVzc2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgICBpZiAoZXJybm8gPT0gRURRVU9UKSB7CisgICAgICAgICAgICAgICAgZHNiX3NpbXBsZSh3 aHksICI0LjIuMiIsIHZhcl92aXJ0X21haWxkaXJfbGltaXRfbWVzc2FnZSk7CisgICAgICAgICAg ICB9CisgICAgICAgIH0KKworICAgICAgICB2c3RyaW5nX3NwcmludGZfcHJlcGVuZCh3aHktPnJl YXNvbiwgIm1haWxkaXIgZGVsaXZlcnkgZmFpbGVkOiAiKTsKKyAgICAgICAgZGVsaXZlcl9zdGF0 dXMgPQorICAgICAgICAgICAgICAgIChTVFIod2h5LT5zdGF0dXMpWzBdID09ICc0JyA/IGRlZmVy X2FwcGVuZCA6IGJvdW5jZV9hcHBlbmQpCisgICAgICAgICAgICAgICAgKEJPVU5DRV9GTEFHUyhz dGF0ZS5yZXF1ZXN0KSwgQk9VTkNFX0FUVFIoc3RhdGUubXNnX2F0dHIpKTsKICAgICB9CisgICAg ZWxzZSB7CisgICAgICAgIGRzYl9zaW1wbGUod2h5LCAiMi4wLjAiLCAiZGVsaXZlcmVkIHRvIG1h aWxkaXIiKTsKKyAgICAgICAgZGVsaXZlcl9zdGF0dXMgPSBzZW50KEJPVU5DRV9GTEFHUyhzdGF0 ZS5yZXF1ZXN0KSwgU0VOVF9BVFRSKHN0YXRlLm1zZ19hdHRyKSk7CisgICAgfQorCiAgICAgdnN0 cmluZ19mcmVlKGJ1Zik7CisKICAgICBteWZyZWUobmV3ZGlyKTsKICAgICBteWZyZWUodG1wZGly KTsKICAgICBteWZyZWUoY3VyZGlyKTsKKworICAgIGlmIChzaXplZmlsZW5hbWUpCisgICAgICAg IG15ZnJlZShzaXplZmlsZW5hbWUpOworICAgIGlmIChtZGZmaWxlbmFtZSkKKyAgICAgICAgbXlm cmVlKG1kZmZpbGVuYW1lKTsKKwogICAgIG15ZnJlZSh0bXBmaWxlKTsKICAgICBpZiAobmV3Zmls ZSkKLQlteWZyZWUobmV3ZmlsZSk7CisgICAgICAgIG15ZnJlZShuZXdmaWxlKTsKKyAgICBpZiAo YmtwbmV3ZmlsZSkKKyAgICAgICAgbXlmcmVlKGJrcG5ld2ZpbGUpOworCiAgICAgcmV0dXJuIChk ZWxpdmVyX3N0YXR1cyk7CiB9CmRpZmYgLXVOciBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL3ZpcnR1 YWwvdmlydHVhbC5jIHBvc3RmaXgtMi45LjUvc3JjL3ZpcnR1YWwvdmlydHVhbC5jCi0tLSBwb3N0 Zml4LTIuOS41Lm9yaWcvc3JjL3ZpcnR1YWwvdmlydHVhbC5jCTIwMTEtMDItMTkgMDE6NDY6MDYu MDAwMDAwMDAwICswMTAwCisrKyBwb3N0Zml4LTIuOS41L3NyYy92aXJ0dWFsL3ZpcnR1YWwuYwky MDEyLTAzLTAyIDA4OjMwOjEyLjExMTUzNzAzMyArMDEwMApAQCAtMzM1LDEyICszMzUsMzAgQEAK IGNoYXIgICAqdmFyX21haWxfc3Bvb2xfZGlyOwkJLyogWFhYIGRlcGVuZGVuY3kgZml4ICovCiBi b29sICAgIHZhcl9zdHJpY3RfbWJveF9vd25lcjsKIAorY2hhciAgICp2YXJfdmlydF9tYWlsYm94 X2xpbWl0X21hcHM7Citib29sICAgIHZhcl92aXJ0X21haWxib3hfbGltaXRfaW5ib3g7Citib29s ICAgIHZhcl92aXJ0X21haWxib3hfbGltaXRfb3ZlcnJpZGU7Citib29sICAgIHZhcl92aXJ0X21h aWxkaXJfZXh0ZW5kZWQ7Citib29sICAgIHZhcl92aXJ0X292ZXJxdW90YV9ib3VuY2U7CitjaGFy ICAgKnZhcl92aXJ0X21haWxkaXJfbGltaXRfbWVzc2FnZTsKK2NoYXIgICAqdmFyX3ZpcnRfbWFp bGRpcl9saW1pdF9tZXNzYWdlX21hcHM7CitjaGFyICAgKnZhcl92aXJ0X21haWxkaXJfc3VmZml4 OworYm9vbCAgICB2YXJfdmlydF90cmFzaF9jb3VudDsKK2NoYXIgICAqdmFyX3ZpcnRfdHJhc2hf bmFtZTsKK2Jvb2wgICAgdmFyX3ZpcnRfbWFpbGRpcl9maWx0ZXI7CitjaGFyICAgKnZhcl92aXJ0 X21haWxkaXJfZmlsdGVyX21hcHM7CisKKwogIC8qCiAgICogTWFwcGluZ3MuCiAgICovCiBNQVBT ICAgKnZpcnR1YWxfbWFpbGJveF9tYXBzOwogTUFQUyAgICp2aXJ0dWFsX3VpZF9tYXBzOwogTUFQ UyAgICp2aXJ0dWFsX2dpZF9tYXBzOworTUFQUyAgICp2aXJ0dWFsX21haWxib3hfbGltaXRfbWFw czsKK01BUFMgICAqdmlydHVhbF9tYWlsZGlyX2xpbWl0X21lc3NhZ2VfbWFwczsKK01BUFMgICAq dmlydHVhbF9tYWlsZGlyX2ZpbHRlcl9tYXBzOworCiAKICAvKgogICAqIEJpdCBtYXNrcy4KQEAg LTQ1MCwxNSArNDY4LDI4IEBACiAgICAgICovCiAgICAgdmlydHVhbF9tYWlsYm94X21hcHMgPQog CW1hcHNfY3JlYXRlKFZBUl9WSVJUX01BSUxCT1hfTUFQUywgdmFyX3ZpcnRfbWFpbGJveF9tYXBz LAotCQkgICAgRElDVF9GTEFHX0xPQ0sgfCBESUNUX0ZMQUdfUEFSQU5PSUQpOworCQkgICAgRElD VF9GTEFHX0xPQ0spOwogCiAgICAgdmlydHVhbF91aWRfbWFwcyA9CiAJbWFwc19jcmVhdGUoVkFS X1ZJUlRfVUlEX01BUFMsIHZhcl92aXJ0X3VpZF9tYXBzLAotCQkgICAgRElDVF9GTEFHX0xPQ0sg fCBESUNUX0ZMQUdfUEFSQU5PSUQpOworCQkgICAgRElDVF9GTEFHX0xPQ0spOwogCiAgICAgdmly dHVhbF9naWRfbWFwcyA9CiAJbWFwc19jcmVhdGUoVkFSX1ZJUlRfR0lEX01BUFMsIHZhcl92aXJ0 X2dpZF9tYXBzLAotCQkgICAgRElDVF9GTEFHX0xPQ0sgfCBESUNUX0ZMQUdfUEFSQU5PSUQpOwor CQkgICAgRElDVF9GTEFHX0xPQ0spOworCisgICAgdmlydHVhbF9tYWlsYm94X2xpbWl0X21hcHMg PQorICAgICAgICBtYXBzX2NyZWF0ZShWQVJfVklSVF9NQUlMQk9YX0xJTUlUX01BUFMsIHZhcl92 aXJ0X21haWxib3hfbGltaXRfbWFwcywKKyAgICAgICAgICAgICAgICAgICAgRElDVF9GTEFHX0xP Q0spOworCisgICAgdmlydHVhbF9tYWlsZGlyX2xpbWl0X21lc3NhZ2VfbWFwcyA9CisgICAgICAg IG1hcHNfY3JlYXRlKFZBUl9WSVJUX01BSUxESVJfTElNSVRfTUVTU0FHRV9NQVBTLCB2YXJfdmly dF9tYWlsZGlyX2xpbWl0X21lc3NhZ2VfbWFwcywKKyAgICAgICAgICAgICAgICAgICAgRElDVF9G TEFHX0xPQ0spOworCisgICAgdmlydHVhbF9tYWlsZGlyX2ZpbHRlcl9tYXBzID0KKyAgICAgICAg bWFwc19jcmVhdGUoVkFSX1ZJUlRfTUFJTERJUl9GSUxURVJfTUFQUywgdmFyX3ZpcnRfbWFpbGRp cl9maWx0ZXJfbWFwcywKKyAgICAgICAgICAgICAgICAgICAgRElDVF9GTEFHX0xPQ0spOworCiAK ICAgICB2aXJ0dWFsX21ib3hfbG9ja19tYXNrID0gbWJveF9sb2NrX21hc2sodmFyX3ZpcnRfbWFp bGJveF9sb2NrKTsKIH0KQEAgLTUxMCwxMCArNTQxLDIyIEBACiAJVkFSX1ZJUlRfR0lEX01BUFMs IERFRl9WSVJUX0dJRF9NQVBTLCAmdmFyX3ZpcnRfZ2lkX21hcHMsIDAsIDAsCiAJVkFSX1ZJUlRf TUFJTEJPWF9CQVNFLCBERUZfVklSVF9NQUlMQk9YX0JBU0UsICZ2YXJfdmlydF9tYWlsYm94X2Jh c2UsIDEsIDAsCiAJVkFSX1ZJUlRfTUFJTEJPWF9MT0NLLCBERUZfVklSVF9NQUlMQk9YX0xPQ0ss ICZ2YXJfdmlydF9tYWlsYm94X2xvY2ssIDEsIDAsCisJVkFSX1ZJUlRfTUFJTEJPWF9MSU1JVF9N QVBTLCBERUZfVklSVF9NQUlMQk9YX0xJTUlUX01BUFMsICZ2YXJfdmlydF9tYWlsYm94X2xpbWl0 X21hcHMsIDAsIDAsCisJVkFSX1ZJUlRfTUFJTERJUl9MSU1JVF9NRVNTQUdFLCBERUZfVklSVF9N QUlMRElSX0xJTUlUX01FU1NBR0UsICZ2YXJfdmlydF9tYWlsZGlyX2xpbWl0X21lc3NhZ2UsIDEs IDAsCisJVkFSX1ZJUlRfTUFJTERJUl9MSU1JVF9NRVNTQUdFX01BUFMsIERFRl9WSVJUX01BSUxE SVJfTElNSVRfTUVTU0FHRV9NQVBTLCAmdmFyX3ZpcnRfbWFpbGRpcl9saW1pdF9tZXNzYWdlX21h cHMsIDAsIDAsCisJVkFSX1ZJUlRfTUFJTERJUl9TVUZGSVgsIERFRl9WSVJUX01BSUxESVJfU1VG RklYLCAmdmFyX3ZpcnRfbWFpbGRpcl9zdWZmaXgsIDAsIDAsCisJVkFSX1ZJUlRfVFJBU0hfTkFN RSwgREVGX1ZJUlRfVFJBU0hfTkFNRSwgJnZhcl92aXJ0X3RyYXNoX25hbWUsIDAsIDAsCisJVkFS X1ZJUlRfTUFJTERJUl9GSUxURVJfTUFQUywgREVGX1ZJUlRfTUFJTERJUl9GSUxURVJfTUFQUywg JnZhcl92aXJ0X21haWxkaXJfZmlsdGVyX21hcHMsIDAsIDAsCiAJMCwKICAgICB9OwogICAgIHN0 YXRpYyBjb25zdCBDT05GSUdfQk9PTF9UQUJMRSBib29sX3RhYmxlW10gPSB7CiAJVkFSX1NUUklD VF9NQk9YX09XTkVSLCBERUZfU1RSSUNUX01CT1hfT1dORVIsICZ2YXJfc3RyaWN0X21ib3hfb3du ZXIsCisJVkFSX1ZJUlRfTUFJTEJPWF9MSU1JVF9JTkJPWCwgREVGX1ZJUlRfTUFJTEJPWF9MSU1J VF9JTkJPWCwgJnZhcl92aXJ0X21haWxib3hfbGltaXRfaW5ib3gsCisJVkFSX1ZJUlRfTUFJTEJP WF9MSU1JVF9PVkVSUklERSwgREVGX1ZJUlRfTUFJTEJPWF9MSU1JVF9PVkVSUklERSwgJnZhcl92 aXJ0X21haWxib3hfbGltaXRfb3ZlcnJpZGUsCisJVkFSX1ZJUlRfTUFJTERJUl9FWFRFTkRFRCwg REVGX1ZJUlRfTUFJTERJUl9FWFRFTkRFRCwgJnZhcl92aXJ0X21haWxkaXJfZXh0ZW5kZWQsCisJ VkFSX1ZJUlRfT1ZFUlFVT1RBX0JPVU5DRSwgREVGX1ZJUlRfT1ZFUlFVT1RBX0JPVU5DRSwgJnZh cl92aXJ0X292ZXJxdW90YV9ib3VuY2UsCisJVkFSX1ZJUlRfVFJBU0hfQ09VTlQsIERFRl9WSVJU X1RSQVNIX0NPVU5ULCAmdmFyX3ZpcnRfdHJhc2hfY291bnQsCisJVkFSX1ZJUlRfTUFJTERJUl9G SUxURVIsIERFRl9WSVJUX01BSUxESVJfRklMVEVSLCAmdmFyX3ZpcnRfbWFpbGRpcl9maWx0ZXIs CiAJMCwKICAgICB9OwogCkBAIC01MzAsNiArNTczLDcgQEAKIAkJICAgICAgIE1BSUxfU0VSVkVS X1BSRV9JTklULCBwcmVfaW5pdCwKIAkJICAgICAgIE1BSUxfU0VSVkVSX1BPU1RfSU5JVCwgcG9z dF9pbml0LAogCQkgICAgICAgTUFJTF9TRVJWRVJfUFJFX0FDQ0VQVCwgcHJlX2FjY2VwdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgTUFJTF9TRVJWRVJfQk9PTF9UQUJMRSwgYm9vbF90YWJsZSwK IAkJICAgICAgIE1BSUxfU0VSVkVSX1BSSVZJTEVHRUQsCiAJCSAgICAgICAwKTsKIH0KZGlmZiAt dU5yIHBvc3RmaXgtMi45LjUub3JpZy9zcmMvdmlydHVhbC92aXJ0dWFsLmggcG9zdGZpeC0yLjku NS9zcmMvdmlydHVhbC92aXJ0dWFsLmgKLS0tIHBvc3RmaXgtMi45LjUub3JpZy9zcmMvdmlydHVh bC92aXJ0dWFsLmgJMjAwNi0wMS0wOCAwMDo1OTo0Ny4wMDAwMDAwMDAgKzAxMDAKKysrIHBvc3Rm aXgtMi45LjUvc3JjL3ZpcnR1YWwvdmlydHVhbC5oCTIwMTItMDMtMDIgMDg6MzA6MTIuMTExNTM3 MDMzICswMTAwCkBAIC0zNCw2ICszNCw5IEBACiBleHRlcm4gTUFQUyAqdmlydHVhbF9tYWlsYm94 X21hcHM7CiBleHRlcm4gTUFQUyAqdmlydHVhbF91aWRfbWFwczsKIGV4dGVybiBNQVBTICp2aXJ0 dWFsX2dpZF9tYXBzOworZXh0ZXJuIE1BUFMgKnZpcnR1YWxfbWFpbGJveF9saW1pdF9tYXBzOwor ZXh0ZXJuIE1BUFMgKnZpcnR1YWxfbWFpbGRpcl9saW1pdF9tZXNzYWdlX21hcHM7CitleHRlcm4g TUFQUyAqdmlydHVhbF9tYWlsZGlyX2ZpbHRlcl9tYXBzOwogCiAgLyoKICAgKiBVc2VyIGF0dHJp YnV0ZXM6IHRoZXNlIGNvbnRyb2wgdGhlIHByaXZpbGVnZXMgZm9yIGRlbGl2ZXJ5IHRvIGV4dGVy bmFsCg== --e89a8fb1ed0690339604d8ba0895--