From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17677 invoked by alias); 5 Jan 2008 22:18:41 -0000 Received: (qmail 17667 invoked by uid 22791); 5 Jan 2008 22:18:41 -0000 X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.45.13) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 05 Jan 2008 22:18:14 +0000 Received: from zps19.corp.google.com (zps19.corp.google.com [172.25.146.19]) by smtp-out.google.com with ESMTP id m05MIBMf008339 for ; Sat, 5 Jan 2008 14:18:11 -0800 Received: from wa-out-1112.google.com (wafm16.prod.google.com [10.114.189.16]) by zps19.corp.google.com with ESMTP id m05MIAjL020916 for ; Sat, 5 Jan 2008 14:18:11 -0800 Received: by wa-out-1112.google.com with SMTP id m16so10388190waf.20 for ; Sat, 05 Jan 2008 14:18:10 -0800 (PST) Received: by 10.114.53.1 with SMTP id b1mr3673615waa.134.1199571490555; Sat, 05 Jan 2008 14:18:10 -0800 (PST) Received: by 10.115.107.7 with HTTP; Sat, 5 Jan 2008 14:18:10 -0800 (PST) Message-ID: Date: Sat, 05 Jan 2008 22:18:00 -0000 From: "Doug Evans" To: gdb-patches@sourceware.org Subject: [RFA] patch for DW_AT_comp_dir/DW_AT_name vs .debug_line inconsistencies Cc: ARistovski@qnx.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_1370_25779229.1199571490543" X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-01/txt/msg00090.txt.bz2 ------=_Part_1370_25779229.1199571490543 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 844 Ref: http://sourceware.org/ml/gdb/2008-01/msg00007.html [Also ref: http://sourceware.org/ml/gdb-patches/2007-11/msg00314.html but I'm agnostic as to whether gdb should handle #line like this. The testcases in this patch use #line for convenience only.] How about this? Aleksandar, does this work for you? [you'll need to still account for IS_ABSOLUTE_PATH issues I suspect] This patch has dwarf_decode_lines prescan the .debug_line info for files that match DW_AT_name of the main source file, and passes that to start_subfile instead of what's recorded in .debug_line. This lets start_subfile get a match with the initial subfile created by start_symtab. I took an easy out in scanning for a match, I just pick the first. I can add the requisite code if folks think this is the way to go. No regressions in the testsuite (i686-linux). ------=_Part_1370_25779229.1199571490543 Content-Type: application/octet-stream; name=gdb-080105-dwarf-decode-lines-1.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fb2ptbg70 Content-Disposition: attachment; filename=gdb-080105-dwarf-decode-lines-1.patch Content-length: 31578 MjAwOC0wMS0wNSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCUhh bmRsZSAuZGVidWdfbGluZSBpbmNvbnNpc3RlbmN5IHdpdGggRFdfQVRfY29t cF9kaXIvRFdfQVRfbmFtZS4KCSogZHdhcmYycmVhZC5jIChkd2FyZjJfc3Rh cnRfc3ViZmlsZSk6IERlbGV0ZS4KCShkd2FyZl9idWlsZF9zdWJmaWxlX25h bWVzLGR3YXJmX2ZyZWVfc3ViZmlsZV9uYW1lcyk6IE5ldyBmbnMuCgkoZHdh cmZfZGVjb2RlX2xpbmVzKTogTmV3IGFyZyBjdV9maWxlX25hbWUsIGFsbCBj YWxsZXJzIHVwZGF0ZWQuCglCdWlsZCB0YWJsZSBvZiBzdWJmaWxlIG5hbWVz IGF0IHRoZSBzdGFydCwgYW5kIHRoZW4gcGFzcyB0aGUgY29tcHV0ZWQKCW5h bWUgdG8gc3RhcnRfc3ViZmlsZS4KCkluZGV4OiBkd2FyZjJyZWFkLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dk Yi9kd2FyZjJyZWFkLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQ3CmRp ZmYgLXUgLXAgLXUgLXAgLXIxLjI0NyBkd2FyZjJyZWFkLmMKLS0tIGR3YXJm MnJlYWQuYwkzIEphbiAyMDA4IDE3OjI5OjU1IC0wMDAwCTEuMjQ3CisrKyBk d2FyZjJyZWFkLmMJNSBKYW4gMjAwOCAyMjowNzo1MSAtMDAwMApAQCAtODQ1 LDEwICs4NDUsMTMgQEAgc3RhdGljIHN0cnVjdCBsaW5lX2hlYWRlciAqKGR3 YXJmX2RlY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNp Z25lZCBpbnQgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBiZmQgKmFiZmQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KSk7CiAKLXN0YXRp YyB2b2lkIGR3YXJmX2RlY29kZV9saW5lcyAoc3RydWN0IGxpbmVfaGVhZGVy ICosIGNoYXIgKiwgYmZkICosCi0JCQkJc3RydWN0IGR3YXJmMl9jdSAqLCBz dHJ1Y3QgcGFydGlhbF9zeW10YWIgKik7CitzdGF0aWMgY2hhciAqKmR3YXJm X2J1aWxkX3N1YmZpbGVfbmFtZXMgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgs CisJCQkJCSBjaGFyICpjdV9maWxlX25hbWUsIGNoYXIgKmNvbXBfZGlyKTsK Kworc3RhdGljIHZvaWQgZHdhcmZfZnJlZV9zdWJmaWxlX25hbWVzICh2b2lk ICpuYW1lcyk7CiAKLXN0YXRpYyB2b2lkIGR3YXJmMl9zdGFydF9zdWJmaWxl IChjaGFyICosIGNoYXIgKiwgY2hhciAqKTsKK3N0YXRpYyB2b2lkIGR3YXJm X2RlY29kZV9saW5lcyAoc3RydWN0IGxpbmVfaGVhZGVyICosIGNoYXIgKiwg Y2hhciAqLCBiZmQgKiwKKwkJCQlzdHJ1Y3QgZHdhcmYyX2N1ICosIHN0cnVj dCBwYXJ0aWFsX3N5bXRhYiAqKTsKIAogc3RhdGljIHN0cnVjdCBzeW1ib2wg Km5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgdHlwZSAq LAogCQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqKTsKQEAgLTEzOTAsNyArMTM5 Myw3IEBAIGR3YXJmMl9idWlsZF9pbmNsdWRlX3BzeW10YWJzIChzdHJ1Y3Qg ZHcKICAgaWYgKGxoID09IE5VTEwpCiAgICAgcmV0dXJuOyAgLyogTm8gbGlu ZXRhYmxlLCBzbyBubyBpbmNsdWRlcy4gICovCiAKLSAgZHdhcmZfZGVjb2Rl X2xpbmVzIChsaCwgTlVMTCwgYWJmZCwgY3UsIHBzdCk7CisgIGR3YXJmX2Rl Y29kZV9saW5lcyAobGgsIE5VTEwsIE5VTEwsIGFiZmQsIGN1LCBwc3QpOwog CiAgIGZyZWVfbGluZV9oZWFkZXIgKGxoKTsKIH0KQEAgLTI4NTgsNyArMjg2 MSw3IEBAIHJlYWRfZmlsZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHMKICAgICAgICAgewogICAgICAgICAgIGN1LT5saW5lX2hlYWRlciA9IGxp bmVfaGVhZGVyOwogICAgICAgICAgIG1ha2VfY2xlYW51cCAoZnJlZV9jdV9s aW5lX2hlYWRlciwgY3UpOwotICAgICAgICAgIGR3YXJmX2RlY29kZV9saW5l cyAobGluZV9oZWFkZXIsIGNvbXBfZGlyLCBhYmZkLCBjdSwgTlVMTCk7Cisg ICAgICAgICAgZHdhcmZfZGVjb2RlX2xpbmVzIChsaW5lX2hlYWRlciwgbmFt ZSwgY29tcF9kaXIsIGFiZmQsIGN1LCBOVUxMKTsKICAgICAgICAgfQogICAg IH0KIApAQCAtNjc5MSwxNCArNjc5NCwxODggQEAgY2hlY2tfY3VfZnVuY3Rp b25zIChDT1JFX0FERFIgYWRkcmVzcywgcwogICByZXR1cm4gZm4tPmxvd3Bj OwogfQogCisvKiBTdWJyb3V0aW5lIG9mIGR3YXJmX2RlY29kZV9saW5lcyB0 byBzaW1wbGlmeSBpdC4KKyAgIEdpdmVuIGxpbmVfaGVhZGVyIExILCBjb21w dXRlIHRoZSB0YWJsZSBvZiBhc3NvY2lhdGVkIHBhdGggbmFtZXMgb2YgZmls ZXMKKyAgIHRvIHBhc3MgdG8gc3RhcnRfc3ViZmlsZS4gIFRoZSByZXN1bHRp bmcgdGFibGUgaXMgaW5kZXhlZCB1c2luZyB0aGUgc2FtZQorICAgZmlsZSBu dW1iZXIgZm9yIGxoLT5maWxlX25hbWVzLiAgU3BhY2UgZm9yIHRoZSByZXN1 bHRpbmcgdGFibGUgYW5kIHN0cmluZ3MKKyAgIGFyZSBhbGxvY2F0ZWQgc2Vw YXJhdGVseSwgYW5kIGNhbiBiZSBmcmVlZCB3aXRoIGZyZWVfbGluZV9oZWFk ZXJfZmlsZXMuCisgICBDVV9GSUxFX05BTUUgaXMgdGhlIERXX0FUX25hbWUg ZW50cnkgb2YgdGhlIENVLgorICAgQ09NUF9ESVIgaXMgdGhlIERXX0FUX2Nv bXBfZGlyIGVudHJ5IG9mIHRoZSBDVS4KKworICAgQmFja2dyb3VuZDoKKwor ICAgRWFjaCBEV19UQUdfY29tcGlsZV91bml0IERJRSBoYXMgYSBwYWlyIG9m IGF0dHJpYnV0ZXMgRFdfQVRfbmFtZSBhbmQKKyAgIERXX0FUX2NvbXBfZGly LiAgQWxzbyB3aXRoaW4gdGhpcyBESUUgaXMgYSBEV19BVF9zdG10X2xpc3Qg YXR0cmlidXRlIHRoYXQKKyAgIGlzIHVzZWQgdG8gZmV0Y2ggbGluZSBudW1i ZXIgaW5mb3JtYXRpb24uICBTZWUgdGhlIER3YXJmMiBvciBEd2FyZjMKKyAg IFN0YW5kYXJkcyBmb3IgY29tcGxldGUgZGV0YWlscy4gIEZvciBvdXIgcHVy cG9zZXMgaGVyZSB3ZSBhcmUgb25seQorICAgaW50ZXJlc3RlZCBpbiBmaWxl IG5hbWVzIGFuZCB0aGVpciBwYXRocy4gIENvbnN0cnVjdGluZyBhIGNvbXBs ZXRlIHBhdGgKKyAgIG5hbWUgZm9yIGEgZmlsZSB1c2VzIHVwIHRvIHRocmVl IHBpZWNlcyBvZiBpbmZvcm1hdGlvbjogdGhlIGZpbGUgbmFtZSBhcworICAg c3BlY2lmaWVkIGluIC5kZWJ1Z19saW5lLCB0aGUgZmlsZSdzIGRpcmVjdG9y eSBhcyBzcGVjaWZpZWQgaW4gLmRlYnVnX2xpbmUsCisgICBhbmQgdGhlIGNv bXBpbGF0aW9uIGRpcmVjdG9yeS4gIFRoZSBsYXR0ZXIgaXMgdXNlZCB3aGVu IGRpcmVjdG9yeSBuYW1lCisgICArIGZpbGUgbmFtZSB5aWVsZCBhIHJlbGF0 aXZlIHBhdGggbmFtZS4KKworICAgQ29uc3RydWN0aW5nIHRoZSBmdWxsIHBh dGggbmFtZSBvZiBhIGZpbGUgaXMgc3RyYWlnaHRmb3J3YXJkLiAgV2UgYXNz dW1lCisgICB0aGUgY29tcGlsYXRpb24gZGlyZWN0b3J5IGFuZCBmaWxlIG5h bWUgYXJlIHNwZWNpZmllZC4gIFRoZSBmaWxlJ3MKKyAgIGRpcmVjdG9yeSBt YXkgb3IgbWF5IG5vdCBiZSBzcGVjaWZpZWQuICBUeXBpY2FsbHkgdGhlIGZp bGUgbmFtZSwgYXMKKyAgIGVuY29kZWQgaW4gdGhlIC5kZWJ1Z19saW5lIGVu dHJ5LCBpcyBqdXN0IHRoZSBmaWxlIG5hbWUgd2l0aCBubyBwYXRoCisgICBp bmZvcm1hdGlvbiwgYnV0IHdlIGRvbid0IGFzc3VtZSB0aGF0IGhlcmUuCisK KyAgIFtpbiBjKysgcGFybGFuY2VdCisgICBzdHJpbmcKKyAgIGJ1aWxkX2Z1 bGxfcGF0aCAoc3RyaW5nIGNvbXBfZGlyLCBzdHJpbmcgZmlsZV9kaXIsIHN0 cmluZyBmaWxlX25hbWUpCisgICB7CisgICAgIHN0cmluZyBmdWxsX3BhdGgg PSBmaWxlX25hbWU7CisgICAgIGlmICghIGFic29sdXRlX3BhdGhfcCAoZnVs bF9wYXRoKSkKKyAgICAgICB7CisgICAgICAgICBpZiAoZmlsZV9kaXIubGVu Z3RoICgpICE9IDApCisgICAgICAgICAgIGZ1bGxfcGF0aCA9IGZpbGVfZGly ICsgIi8iICsgZnVsbF9wYXRoOworICAgICAgICAgaWYgKCEgYWJzb2x1dGVf cGF0aF9wIChmdWxsX3BhdGgpKQorICAgICAgICAgICBmdWxsX3BhdGggPSBj b21wX2RpciArICIvIiArIGZ1bGxfcGF0aDsKKyAgICAgICB9CisgICAgIHJl dHVybiBmdWxsX3BhdGg7CisgICB9CisKKyAgIHN0YXJ0X3N1YmZpbGUgdGFr ZXMgY2FyZSBvZiBwcmVwZW5kaW5nIGNvbXBfZGlyIHdoZW4gbmVjZXNzYXJ5 IHNvIHdlIG9ubHkKKyAgIGhhdmUgdG8gdGFrZSBjYXJlIG9mIHByZXBlbmRp bmcgZmlsZV9kaXIuCisKKyAgIENvbnN0cnVjdGluZyBwYXRoIG5hbWVzIGNv cnJlY3RseSBpcyBpbXBvcnRhbnQgYmVjYXVzZSBHREIgKGVmZmVjdGl2ZWx5 KQorICAgdXNlcyBzdHJjbXAgdG8gZGVjaWRlIHdoZW4gZmlsZSBwYXRocyBh cmUgZXF1aXZhbGVudCwgYW5kIHdlIG5lZWQgdG8gbWFrZQorICAgc3VyZSBh IGZpbGUncyBsaW5lIG51bWJlciBpbmZvcm1hdGlvbiBnZXRzIGFzc29jaWF0 ZWQgd2l0aCB0aGUgY29ycmVjdCBmaWxlLgorCisgICBVc2luZyB0aGUgYGxp c3QnIGV4YW1wbGUgZnJvbSB0aGUgR0RCIHRlc3RzdWl0ZSwgd2hpY2ggcmVz aWRlcyBpbgorICAgL3NyY2RpciBhbmQgY29tcGlsaW5nIGl0IHdpdGggSXJp eDYuMiBjYyBpbiAvY29tcGRpciB1c2luZyBhIGZpbGVuYW1lCisgICBvZiAv c3JjZGlyL2xpc3QwLmMgeWllbGRzIHRoZSBmb2xsb3dpbmcgZGVidWdnaW5n IGluZm9ybWF0aW9uIGZvciBsaXN0MC5jOgorCisgICBEV19BVF9uYW1lOiAg ICAgICAgICAvc3JjZGlyL2xpc3QwLmMKKyAgIERXX0FUX2NvbXBfZGlyOiAg ICAgIC9jb21wZGlyCisgICBmaWxlcy5maWxlc1swXS5uYW1lOiBsaXN0MC5o CisgICBmaWxlcy5maWxlc1swXS5kaXI6ICAvc3JjZGlyCisgICBmaWxlcy5m aWxlc1sxXS5uYW1lOiBsaXN0MC5jCisgICBmaWxlcy5maWxlc1sxXS5kaXI6 ICAvc3JjZGlyCisKKyAgIFRoZSBsaW5lIG51bWJlciBpbmZvcm1hdGlvbiBm b3IgbGlzdDAuYyBoYXMgdG8gZW5kIHVwIGluIGEgc2luZ2xlCisgICBzdWJm aWxlLCBzbyB0aGF0IGBicmVhayAvc3JjZGlyL2xpc3QwLmM6MScgd29ya3Mg YXMgZXhwZWN0ZWQuCisgICBzdGFydF9zdWJmaWxlIHdpbGwgZW5zdXJlIHRo YXQgdGhpcyBoYXBwZW5zIHByb3ZpZGVkIHRoYXQgd2UgcGFzcyB0aGUKKyAg IGNvbmNhdGVuYXRpb24gb2YgZmlsZXMuZmlsZXNbMV0uZGlyIGFuZCBmaWxl cy5maWxlc1sxXS5uYW1lIGFzIHRoZQorICAgc3ViZmlsZSdzIG5hbWUuCisK KyAgIFVwIHVudGlsIG5vdyBldmVyeXRoaW5nIGhhcyBiZWVuIHN0cmFpZ2h0 Zm9yd2FyZC4KKyAgIEhlcmUncyB0aGUgcGFydCB0aGF0IHJlcXVpcmVzIGV4 dHJhIGVmZm9ydDoKKworICAgRm9yIHRoZSBjYXNlIG9mIHRoZSBtYWluIHNv dXJjZSBmaWxlJ3MgbGluZSBudW1iZXIgaW5mb3JtYXRpb24sCisgICB3aGF0 IGlmIGJ1aWxkX2Z1bGxfcGF0aCAoRFdfQVRfY29tcF9kaXIsICIiLCBEV19B VF9uYW1lKQorICAgIT0gYnVpbGRfZnVsbF9wYXRoIChEV19BVF9jb21wX2Rp ciwgZmlsZV9kaXIsIGZpbGVfbmFtZSkgPworCisgICBBbiBleGFtcGxlIGlz OgorICAgRFdfQVRfY29tcF9kaXIgPSAvdGVzdC9zcmMvb2JqCisgICBEV19B VF9uYW1lICAgICA9IC90ZXN0L3NyYy9tYWluLmNjCisgICBmaWxlX2RpciAg ICAgICA9IC4uCisgICBmaWxlX25hbWUgICAgICA9IG1haW4uY2MKKworICAg c3RhcnRfc3ltdGFiIHdpbGwgZmlyc3QgY2FsbCBzdGFydF9zdWJmaWxlIHRv IGNyZWF0ZSBhIHBzeW10YWIgZm9yCisgICAvdGVzdC9zcmMvbWFpbi5jYy4g IExhdGVyIC5kZWJ1Z19saW5lIGluZm8gd2lsbCBiZSByZWFkIGFuZCB0aGUg bGluZSBudW1iZXIKKyAgIGluZm8gZm9yIG1haW4uY2Mgd2lsbCBiZSBmb3Ig ZmlsZSAvdGVzdC9zcmMvb2JqLy4uL21haW4uY2MuICBzdGFydF9zdWJmaWxl CisgICB3aWxsIGRlY2lkZSB0aGlzIGlzIGEgZGlmZmVyZW50IGZpbGUgdGhh biAvdGVzdC9zcmMvbWFpbi5jYyBhbmQgR0RCIHdpbGwKKyAgIGxvc2UgdHJh Y2sgb2YgdGhlIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uIGZvciB0aGlzIGZp bGUuICBUaGlzIHdpbGwgY2F1c2UKKyAgICJicmVhayBtYWluLmNjOjEwIiB0 byBnZXQgdGhlIGVycm9yICJObyBsaW5lIDEwIGluIG1haW4uY2MuIgorCisg ICBPbmUgcG90ZW50aWFsIHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbSBpcyB0 byBoYXZlIHN0YXJ0X3N1YmZpbGUgY2Fub25pY2FsaXplCisgICBwYXRoIG5h bWVzIGJlZm9yZSBjb21wYXJpbmcgdGhlbS4gIEkuZS4sIGNvbnZlcnQgL3Rl c3Qvc3JjL29iai8uLi9tYWluLmNjCisgICB0byAvdGVzdC9zcmMvbWFpbi5j YyBhbmQgdGhlbiBkbyB0aGUgY29tcGFyaXNvbi4gIEhvd2V2ZXIgdGhpcyBk b2Vzbid0CisgICBuZWNlc3NhcmlseSB3b3JrIGlmIG9iaiBpcyBhIHN5bWxp bmsuCisKKyAgIFRoZSBzb2x1dGlvbiBjaG9zZW4gaGVyZSBpcyB0byB3YXRj aCBmb3IgZmlsZSBuYW1lcyBpbiAuZGVidWdfbGluZSBpbmZvCisgICB0aGF0 IG1pZ2h0IG1hdGNoIERXX0FUX25hbWUuICBJZiBpdCBkb2VzIG1hdGNoIHRo ZW4gd2UgcmVjb3JkIERXX0FUX25hbWUKKyAgIGFzIHRoZSB2YWx1ZSB0byBw YXNzIHRvIHN0YXJ0X3N1YmZpbGUgdGh1cyBlbnN1cmluZyBhIG1hdGNoLgor ICAgVGhpcyBjb3VsZCBiZSBkb25lIGJ5IGNoZWNraW5nIHJpZ2h0IGJlZm9y ZSBlYWNoIGNhbGwgdG8gc3RhcnRfc3ViZmlsZS4KKyAgIEhvd2V2ZXIsIHRo aXMgY2FuJ3QgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGFub3Ro ZXIgZmlsZSB0aGF0CisgICBtYXRjaGVzIGJhc2VuYW1lIChEV19BVF9uYW1l KSBidXQgaXMgbm90IHRoZSBzYW1lIGZpbGUsIHdlIG5lZWQgdG8gZXhhbWlu ZQorICAgYWxsIHRoZSBmaWxlcyBmaXJzdCBhbmQgcGljayB0aGUgYmVzdCBt YXRjaC4KKyAgIFdoZXRoZXIgaXQgaXMgd29ydGggaXQgdG8gaGFuZGxlIHRo aXMgY2FzZSBpcyBkZWJhdGFibGUsIGJ1dCBwcmVwcm9jZXNzaW5nCisgICB0 aGUgZmlsZSBuYW1lcyBhbGxvd3MgdXMgdG8gY2F0Y2ggdGhpcyBjYXNlLgor ICAgVGhlIER3YXJmIFN0YW5kYXJkIG1ha2VzIG5vIGd1YXJhbnRlZXMgb2Yg dGhlIG9yZGVyIG9mIGZpbGVzIGluIC5kZWJ1Z19saW5lCisgICBzbyB3ZSBj YW4ndCwgZm9yIGV4YW1wbGUsIGp1c3QgcGljayB0aGUgZmlyc3Qgb25lLgor Ki8KKworc3RhdGljIGNoYXIgKioKK2R3YXJmX2J1aWxkX3N1YmZpbGVfbmFt ZXMgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsCisJCQkgICBjaGFyICpjdV9m aWxlX25hbWUsIGNoYXIgKmNvbXBfZGlyKQoreworICBjaGFyICoqbmFtZXMg PSAoY2hhciAqKikgeG1hbGxvYyAoKGxoLT5udW1fZmlsZV9uYW1lcyArIDEp ICogc2l6ZW9mIChjaGFyKikpOworICBjb25zdCBjaGFyICpjdV9maWxlX2Jh c2VuYW1lID0gbGJhc2VuYW1lIChjdV9maWxlX25hbWUpOworICAvKiBTZXQg dG8gMSB3aGVuIGEgbWF0Y2ggdG8gRklMRV9OQU1FIGlzIGZvdW5kIGluIExI LiAgKi8KKyAgaW50IG1hdGNoX2ZvdW5kID0gMDsKKyAgaW50IGk7CisKKyAg Zm9yIChpID0gMDsgaSA8IGxoLT5udW1fZmlsZV9uYW1lczsgKytpKQorICAg IHsKKyAgICAgIHN0cnVjdCBmaWxlX2VudHJ5ICpmZSA9ICZsaC0+ZmlsZV9u YW1lc1tpXTsKKyAgICAgIGNoYXIgKmZuYW1lID0gZmUtPm5hbWU7CisgICAg ICBjb25zdCBjaGFyICpibmFtZSA9IGxiYXNlbmFtZSAoZm5hbWUpOworCisg ICAgICAvKiA/Pz8gRm9yIG5vdyB3ZSBqdXN0IHBpY2sgdGhlIGZpcnN0IGZp bGUgaW4gTEggdGhhdCBtYXRjaGVzCisJIEZJTEVfTkFNRS4gICovCisKKyAg ICAgIGlmICghIG1hdGNoX2ZvdW5kICYmIHN0cmNtcCAoYm5hbWUsIGN1X2Zp bGVfYmFzZW5hbWUpID09IDApCisJeworCSAgbmFtZXNbaV0gPSB4c3RyZHVw IChjdV9maWxlX25hbWUpOworCSAgbWF0Y2hfZm91bmQgPSAxOworCX0KKyAg ICAgIGVsc2UKKwl7CisJICBjaGFyICpkaXIgPSBOVUxMOworCisJICAvKiBB IGRpcmVjdG9yeSBpbmRleCBvZiAwIG1lYW5zIHVzZSBjb21wX2Rpci4KKwkg ICAgIE90aGVyd2lzZSBpdCBpcyBhbiBvcmlnaW4tMSBiYXNlZCBpbmRleCBp bnRvIElOQ0xVREVfRElSUy4KKwkgICAgIHN0YXJ0X3N1YmZpbGUgd2lsbCBw cmVwZW5kIGNvbXBfZGlyIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhhdAor CSAgICAgaGVyZSAoYW5kIGlmIGJvdGggZmlsZSBhbmQgY29tcF9kaXIgYXJl IHJlbGF0aXZlIHBhdGhzIHdlCisJICAgICBtdXN0bid0ISkuICAqLworCSAg aWYgKGZlLT5kaXJfaW5kZXgpCisJICAgIGRpciA9IGxoLT5pbmNsdWRlX2Rp cnNbZmUtPmRpcl9pbmRleCAtIDFdOworCisJICAvKiBOb3RlIHRoYXQgdGhl IER3YXJmMyBzdGFuZGFyZCBzYXlzIChzcGVha2luZyBvZiBmaWxlbmFtZXMg aW4gbGluZQorCSAgICAgaW5mb3JtYXRpb24pOiBgYFRoZSBkaXJlY3Rvcnkg aW5kZXggaXMgaWdub3JlZCBmb3IgZmlsZSBuYW1lcworCSAgICAgdGhhdCBy ZXByZXNlbnQgZnVsbCBwYXRoIG5hbWVzJycuICBUaHVzIGlnbm9yaW5nIGRp cm5hbWUgaW4gdGhlCisJICAgICBgZWxzZScgYnJhbmNoIGJlbG93IGlzbid0 IGFuIGlzc3VlLiAgKi8KKworCSAgaWYgKCFJU19BQlNPTFVURV9QQVRIIChm bmFtZSkgJiYgZGlyICE9IE5VTEwpCisJICAgIG5hbWVzW2ldID0gY29uY2F0 IChkaXIsIFNMQVNIX1NUUklORywgZm5hbWUsIE5VTEwpOworCSAgZWxzZQor CSAgICBuYW1lc1tpXSA9IHhzdHJkdXAgKGZuYW1lKTsKKwl9CisgICAgfQor CisgIG5hbWVzW2xoLT5udW1fZmlsZV9uYW1lc10gPSBOVUxMOworCisgIHJl dHVybiBuYW1lczsKK30KKworLyogVXRpbGl0eSB0byBmcmVlIHRoZSByZXN1 bHQgb2YgZHdhcmZfYnVpbGRfc3ViZmlsZV9uYW1lcy4KKyAgIFZOQU1FUyBp cyBhIHZvaWQqIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBhbiBhcmd1bWVu dCB0byBtYWtlX2NsZWFudXAuCisgICA/Pz8gV2UgY291bGQganVzdCBhcnJh bmdlIHRvIHVzZSBmcmVlX2FyZ3YuICBUb28gbXVjaCBvZiBhIGhhY2s/ICAq LworCitzdGF0aWMgdm9pZAorZHdhcmZfZnJlZV9zdWJmaWxlX25hbWVzICh2 b2lkICp2bmFtZXMpCit7CisgIGludCBpOworICBjaGFyICoqbmFtZXMgPSAo Y2hhciAqKikgdm5hbWVzOworCisgIGZvciAoaSA9IDA7IG5hbWVzW2ldICE9 IE5VTEw7ICsraSkKKyAgICB4ZnJlZSAobmFtZXNbaV0pOworICB4ZnJlZSAo bmFtZXMpOworfQorCiAvKiBEZWNvZGUgdGhlIExpbmUgTnVtYmVyIFByb2dy YW0gKExOUCkgZm9yIHRoZSBnaXZlbiBsaW5lX2hlYWRlcgogICAgc3RydWN0 dXJlIGFuZCBDVS4gIFRoZSBhY3R1YWwgaW5mb3JtYXRpb24gZXh0cmFjdGVk IGFuZCB0aGUgdHlwZQogICAgb2Ygc3RydWN0dXJlcyBjcmVhdGVkIGZyb20g dGhlIExOUCBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiBQU1QuCiAKICAgIDEu IElmIFBTVCBpcyBOVUxMLCB0aGVuIHRoaXMgcHJvY2VkdXJlIHVzZXMgdGhl IGRhdGEgZnJvbSB0aGUgcHJvZ3JhbQogICAgICAgdG8gY3JlYXRlIGFsbCBu ZWNlc3Nhcnkgc3ltYm9sIHRhYmxlcywgYW5kIHRoZWlyIGxpbmV0YWJsZXMu Ci0gICAgICBUaGUgY29tcGlsYXRpb24gZGlyZWN0b3J5IG9mIHRoZSBmaWxl IGlzIHBhc3NlZCBpbiBDT01QX0RJUiwKLSAgICAgIGFuZCBtdXN0IG5vdCBi ZSBOVUxMLgorICAgICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgKERXX0FUX25h bWUpIGlzIHBhc3NlZCBpbiBDVV9GSUxFX05BTUUsCisgICAgICBhbmQgbXVz dCBub3QgYmUgTlVMTC4gIEl0IGlzIHVzZWQgdG8gaGVscCByZXNvbHZlIGFt YmlndWl0aWVzIGluCisgICAgICB0aGUgLmRlY29kZV9saW5lIGluZm8uCisg ICAgICBUaGUgY29tcGlsYXRpb24gZGlyZWN0b3J5IG9mIHRoZSBmaWxlIChE V19BVF9jb21wX2RpcikgaXMgcGFzc2VkCisgICAgICBpbiBDT01QX0RJUiwg YW5kIG11c3Qgbm90IGJlIE5VTEwuCiAgICAKICAgIDIuIElmIFBTVCBpcyBu b3QgTlVMTCwgdGhpcyBwcm9jZWR1cmUgcmVhZHMgdGhlIHByb2dyYW0gdG8g ZGV0ZXJtaW5lCiAgICAgICB0aGUgbGlzdCBvZiBmaWxlcyBpbmNsdWRlZCBi eSB0aGUgdW5pdCByZXByZXNlbnRlZCBieSBQU1QsIGFuZApAQCAtNjgwNywx MSArNjk4NCwxNiBAQCBjaGVja19jdV9mdW5jdGlvbnMgKENPUkVfQUREUiBh ZGRyZXNzLCBzCiAgICAgICBpcyBub3QgdXNlZCB0byBjb21wdXRlIHRoZSBm dWxsIG5hbWUgb2YgdGhlIHN5bXRhYiwgYW5kIHRoZXJlZm9yZQogICAgICAg b21pdHRpbmcgaXQgd2hlbiBidWlsZGluZyB0aGUgcGFydGlhbCBzeW10YWIg ZG9lcyBub3QgaW50cm9kdWNlCiAgICAgICB0aGUgcG90ZW50aWFsIGZvciBp bmNvbnNpc3RlbmN5IC0gYSBwYXJ0aWFsIHN5bXRhYiBhbmQgaXRzIGFzc29j aWF0ZWQKLSAgICAgIHN5bWJ0YWIgaGF2aW5nIGEgZGlmZmVyZW50IGZ1bGxu YW1lIC0pLiAgKi8KKyAgICAgIHN5bWJ0YWIgaGF2aW5nIGEgZGlmZmVyZW50 IGZ1bGxuYW1lKS4gIENVX0ZJTEVfTkFNRSBpcyBub3QgdXNlZCBpbiB0aGlz CisgICAgICBjYXNlIGVpdGhlci4KKworICAgTk9URTogbGgtPmluY2x1ZGVf ZGlycyBhbmQgbGgtPmZpbGVfbmFtZXMgYXJlIDAtYmFzZWQsIGJ1dCB0aGUK KyAgIGRpcmVjdG9yeSBhbmQgZmlsZSBuYW1lIG51bWJlcnMgaW4gdGhlIHN0 YXRlbWVudCBwcm9ncmFtIGFyZSAxLWJhc2VkLiAgKi8KIAogc3RhdGljIHZv aWQKLWR3YXJmX2RlY29kZV9saW5lcyAoc3RydWN0IGxpbmVfaGVhZGVyICps aCwgY2hhciAqY29tcF9kaXIsIGJmZCAqYWJmZCwKLQkJICAgIHN0cnVjdCBk d2FyZjJfY3UgKmN1LCBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCkKK2R3 YXJmX2RlY29kZV9saW5lcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgY2hh ciAqY3VfZmlsZV9uYW1lLCBjaGFyICpjb21wX2RpciwKKwkJICAgIGJmZCAq YWJmZCwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCisJCSAgICBzdHJ1Y3QgcGFy dGlhbF9zeW10YWIgKnBzdCkKIHsKICAgZ2RiX2J5dGUgKmxpbmVfcHRyLCAq ZXh0ZW5kZWRfZW5kOwogICBnZGJfYnl0ZSAqbGluZV9lbmQ7CkBAIC02ODIx LDYgKzcwMDMsMTQgQEAgZHdhcmZfZGVjb2RlX2xpbmVzIChzdHJ1Y3QgbGlu ZV9oZWFkZXIgKgogICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5v YmpmaWxlOwogICBjb25zdCBpbnQgZGVjb2RlX2Zvcl9wc3RfcCA9IChwc3Qg IT0gTlVMTCk7CiAgIHN0cnVjdCBzdWJmaWxlICpsYXN0X3N1YmZpbGUgPSBO VUxMLCAqZmlyc3Rfc3ViZmlsZSA9IGN1cnJlbnRfc3ViZmlsZTsKKyAgY2hh ciAqKnN1YmZpbGVfbmFtZXMgPSBOVUxMOworCisgIC8qIEJ1aWxkIHRhYmxl IG9mIG5hbWVzIHRvIHBhc3MgdG8gc3RhcnRfc3ViZmlsZS4gICovCisgIGlm ICghIGRlY29kZV9mb3JfcHN0X3ApCisgICAgeworICAgICAgc3ViZmlsZV9u YW1lcyA9IGR3YXJmX2J1aWxkX3N1YmZpbGVfbmFtZXMgKGxoLCBjdV9maWxl X25hbWUsIGNvbXBfZGlyKTsKKyAgICAgIG1ha2VfY2xlYW51cCAoZHdhcmZf ZnJlZV9zdWJmaWxlX25hbWVzLCBzdWJmaWxlX25hbWVzKTsKKyAgICB9CiAK ICAgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZz ZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxlKSk7CiAKQEAgLTY4NDIsMTYg KzcwMzIsOSBAQCBkd2FyZl9kZWNvZGVfbGluZXMgKHN0cnVjdCBsaW5lX2hl YWRlciAqCiAgICAgICBpZiAoIWRlY29kZV9mb3JfcHN0X3AgJiYgbGgtPm51 bV9maWxlX25hbWVzID49IGZpbGUpCiAJewogICAgICAgICAgIC8qIFN0YXJ0 IGEgc3ViZmlsZSBmb3IgdGhlIGN1cnJlbnQgZmlsZSBvZiB0aGUgc3RhdGUg bWFjaGluZS4gICovCi0JICAvKiBsaC0+aW5jbHVkZV9kaXJzIGFuZCBsaC0+ ZmlsZV9uYW1lcyBhcmUgMC1iYXNlZCwgYnV0IHRoZQotCSAgICAgZGlyZWN0 b3J5IGFuZCBmaWxlIG5hbWUgbnVtYmVycyBpbiB0aGUgc3RhdGVtZW50IHBy b2dyYW0KLQkgICAgIGFyZSAxLWJhc2VkLiAgKi8KLSAgICAgICAgICBzdHJ1 Y3QgZmlsZV9lbnRyeSAqZmUgPSAmbGgtPmZpbGVfbmFtZXNbZmlsZSAtIDFd OwotICAgICAgICAgIGNoYXIgKmRpciA9IE5VTEw7Ci0KLSAgICAgICAgICBp ZiAoZmUtPmRpcl9pbmRleCkKLSAgICAgICAgICAgIGRpciA9IGxoLT5pbmNs dWRlX2RpcnNbZmUtPmRpcl9pbmRleCAtIDFdOwotCi0JICBkd2FyZjJfc3Rh cnRfc3ViZmlsZSAoZmUtPm5hbWUsIGRpciwgY29tcF9kaXIpOworCSAgLyog RmlsZSBudW1iZXJzIGluIHRoZSBzdGF0ZW1lbnQgcHJvZ3JhbSBhcmUgMS1i YXNlZC4gICovCisJICBjaGFyICpmbmFtZSA9IHN1YmZpbGVfbmFtZXNbZmls ZSAtIDFdOworCSAgc3RhcnRfc3ViZmlsZSAoZm5hbWUsIGNvbXBfZGlyKTsK IAl9CiAKICAgICAgIC8qIERlY29kZSB0aGUgdGFibGUuICAqLwpAQCAtNjk3 OSwyNyArNzE2MiwxNyBAQCBkd2FyZl9kZWNvZGVfbGluZXMgKHN0cnVjdCBs aW5lX2hlYWRlciAqCiAJICAgICAgYnJlYWs7CiAJICAgIGNhc2UgRFdfTE5T X3NldF9maWxlOgogICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg LyogVGhlIGFycmF5cyBsaC0+aW5jbHVkZV9kaXJzIGFuZCBsaC0+ZmlsZV9u YW1lcyBhcmUKLSAgICAgICAgICAgICAgICAgICAwLWJhc2VkLCBidXQgdGhl IGRpcmVjdG9yeSBhbmQgZmlsZSBuYW1lIG51bWJlcnMgaW4KLSAgICAgICAg ICAgICAgICAgICB0aGUgc3RhdGVtZW50IHByb2dyYW0gYXJlIDEtYmFzZWQu ICAqLwotICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlX2VudHJ5ICpmZTsK LSAgICAgICAgICAgICAgICBjaGFyICpkaXIgPSBOVUxMOwotCiAgICAgICAg ICAgICAgICAgZmlsZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBs aW5lX3B0ciwgJmJ5dGVzX3JlYWQpOwogICAgICAgICAgICAgICAgIGxpbmVf cHRyICs9IGJ5dGVzX3JlYWQ7CiAgICAgICAgICAgICAgICAgaWYgKGxoLT5u dW1fZmlsZV9uYW1lcyA8IGZpbGUpCiAgICAgICAgICAgICAgICAgICBkd2Fy ZjJfZGVidWdfbGluZV9taXNzaW5nX2ZpbGVfY29tcGxhaW50ICgpOwotICAg ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICAgICAgZmUgPSAmbGgtPmZpbGVfbmFtZXNbZmlsZSAtIDFd OwotICAgICAgICAgICAgICAgICAgICBpZiAoZmUtPmRpcl9pbmRleCkKLSAg ICAgICAgICAgICAgICAgICAgICBkaXIgPSBsaC0+aW5jbHVkZV9kaXJzW2Zl LT5kaXJfaW5kZXggLSAxXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFk ZWNvZGVfZm9yX3BzdF9wKQotICAgICAgICAgICAgICAgICAgICAgIHsKLSAg ICAgICAgICAgICAgICAgICAgICAgIGxhc3Rfc3ViZmlsZSA9IGN1cnJlbnRf c3ViZmlsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3YXJmMl9zdGFy dF9zdWJmaWxlIChmZS0+bmFtZSwgZGlyLCBjb21wX2Rpcik7Ci0gICAgICAg ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIGVsc2UgaWYgKCFkZWNvZGVfZm9yX3BzdF9wKQorCQkgIHsK KwkJICAgIC8qIEZpbGUgbnVtYmVycyBpbiB0aGUgc3RhdGVtZW50IHByb2dy YW0gYXJlIDEtYmFzZWQuICAqLworCQkgICAgY2hhciAqZm5hbWUgPSBzdWJm aWxlX25hbWVzW2ZpbGUgLSAxXTsKKwkJICAgIGxhc3Rfc3ViZmlsZSA9IGN1 cnJlbnRfc3ViZmlsZTsKKwkJICAgIHN0YXJ0X3N1YmZpbGUgKGZuYW1lLCBj b21wX2Rpcik7CisJCSAgfQogICAgICAgICAgICAgICB9CiAJICAgICAgYnJl YWs7CiAJICAgIGNhc2UgRFdfTE5TX3NldF9jb2x1bW46CkBAIC03MDgyLDE1 ICs3MjU1LDEyIEBAIGR3YXJmX2RlY29kZV9saW5lcyAoc3RydWN0IGxpbmVf aGVhZGVyICoKIAkgbGluZSBudW1iZXJzKS4gICovCiAKICAgICAgIGludCBp OwotICAgICAgc3RydWN0IGZpbGVfZW50cnkgKmZlOwogCiAgICAgICBmb3Ig KGkgPSAwOyBpIDwgbGgtPm51bV9maWxlX25hbWVzOyBpKyspCiAJewotCSAg Y2hhciAqZGlyID0gTlVMTDsKLQkgIGZlID0gJmxoLT5maWxlX25hbWVzW2ld OwotCSAgaWYgKGZlLT5kaXJfaW5kZXgpCi0JICAgIGRpciA9IGxoLT5pbmNs dWRlX2RpcnNbZmUtPmRpcl9pbmRleCAtIDFdOwotCSAgZHdhcmYyX3N0YXJ0 X3N1YmZpbGUgKGZlLT5uYW1lLCBkaXIsIGNvbXBfZGlyKTsKKwkgIHN0cnVj dCBmaWxlX2VudHJ5ICpmZSA9ICZsaC0+ZmlsZV9uYW1lc1tpXTsKKworCSAg c3RhcnRfc3ViZmlsZSAoc3ViZmlsZV9uYW1lc1tpXSwgY29tcF9kaXIpOwog CiAJICAvKiBTa2lwIHRoZSBtYWluIGZpbGU7IHdlIGRvbid0IG5lZWQgaXQs IGFuZCBpdCBtdXN0IGJlCiAJICAgICBhbGxvY2F0ZWQgbGFzdCwgc28gdGhh dCBpdCB3aWxsIHNob3cgdXAgYmVmb3JlIHRoZQpAQCAtNzEwNiw1NiArNzI3 Niw2IEBAIGR3YXJmX2RlY29kZV9saW5lcyAoc3RydWN0IGxpbmVfaGVhZGVy ICoKICAgICB9CiB9CiAKLS8qIFN0YXJ0IGEgc3ViZmlsZSBmb3IgRFdBUkYu ICBGSUxFTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBhbmQKLSAgIERJ Uk5BTUUgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSBkaXJlY3Rvcnkgd2hpY2gg Y29udGFpbnMgRklMRU5BTUUKLSAgIG9yIE5VTEwgaWYgbm90IGtub3duLiAg Q09NUF9ESVIgaXMgdGhlIGNvbXBpbGF0aW9uIGRpcmVjdG9yeSBmb3IgdGhl Ci0gICBsaW5ldGFibGUncyBjb21waWxhdGlvbiB1bml0IG9yIE5VTEwgaWYg bm90IGtub3duLgotICAgVGhpcyByb3V0aW5lIHRyaWVzIHRvIGtlZXAgbGlu ZSBudW1iZXJzIGZyb20gaWRlbnRpY2FsIGFic29sdXRlIGFuZAotICAgcmVs YXRpdmUgZmlsZSBuYW1lcyBpbiBhIGNvbW1vbiBzdWJmaWxlLgotCi0gICBV c2luZyB0aGUgYGxpc3QnIGV4YW1wbGUgZnJvbSB0aGUgR0RCIHRlc3RzdWl0 ZSwgd2hpY2ggcmVzaWRlcyBpbgotICAgL3NyY2RpciBhbmQgY29tcGlsaW5n IGl0IHdpdGggSXJpeDYuMiBjYyBpbiAvY29tcGRpciB1c2luZyBhIGZpbGVu YW1lCi0gICBvZiAvc3JjZGlyL2xpc3QwLmMgeWllbGRzIHRoZSBmb2xsb3dp bmcgZGVidWdnaW5nIGluZm9ybWF0aW9uIGZvciBsaXN0MC5jOgotCi0gICBE V19BVF9uYW1lOiAgICAgICAgICAvc3JjZGlyL2xpc3QwLmMKLSAgIERXX0FU X2NvbXBfZGlyOiAgICAgICAgICAgICAgL2NvbXBkaXIKLSAgIGZpbGVzLmZp bGVzWzBdLm5hbWU6IGxpc3QwLmgKLSAgIGZpbGVzLmZpbGVzWzBdLmRpcjog IC9zcmNkaXIKLSAgIGZpbGVzLmZpbGVzWzFdLm5hbWU6IGxpc3QwLmMKLSAg IGZpbGVzLmZpbGVzWzFdLmRpcjogIC9zcmNkaXIKLQotICAgVGhlIGxpbmUg bnVtYmVyIGluZm9ybWF0aW9uIGZvciBsaXN0MC5jIGhhcyB0byBlbmQgdXAg aW4gYSBzaW5nbGUKLSAgIHN1YmZpbGUsIHNvIHRoYXQgYGJyZWFrIC9zcmNk aXIvbGlzdDAuYzoxJyB3b3JrcyBhcyBleHBlY3RlZC4KLSAgIHN0YXJ0X3N1 YmZpbGUgd2lsbCBlbnN1cmUgdGhhdCB0aGlzIGhhcHBlbnMgcHJvdmlkZWQg dGhhdCB3ZSBwYXNzIHRoZQotICAgY29uY2F0ZW5hdGlvbiBvZiBmaWxlcy5m aWxlc1sxXS5kaXIgYW5kIGZpbGVzLmZpbGVzWzFdLm5hbWUgYXMgdGhlCi0g ICBzdWJmaWxlJ3MgbmFtZS4gICovCi0KLXN0YXRpYyB2b2lkCi1kd2FyZjJf c3RhcnRfc3ViZmlsZSAoY2hhciAqZmlsZW5hbWUsIGNoYXIgKmRpcm5hbWUs IGNoYXIgKmNvbXBfZGlyKQotewotICBjaGFyICpmdWxsbmFtZTsKLQotICAv KiBXaGlsZSByZWFkaW5nIHRoZSBESUVzLCB3ZSBjYWxsIHN0YXJ0X3N5bXRh YihEV19BVF9uYW1lLCBEV19BVF9jb21wX2RpcikuCi0gICAgIGBzdGFydF9z eW10YWInIHdpbGwgYWx3YXlzIHBhc3MgdGhlIGNvbnRlbnRzIG9mIERXX0FU X2NvbXBfZGlyIGFzCi0gICAgIHNlY29uZCBhcmd1bWVudCB0byBzdGFydF9z dWJmaWxlLiAgVG8gYmUgY29uc2lzdGVudCwgd2UgZG8gdGhlCi0gICAgIHNh bWUgaGVyZS4gIEluIG9yZGVyIG5vdCB0byBsb3NlIHRoZSBsaW5lIGluZm9y bWF0aW9uIGRpcmVjdG9yeSwKLSAgICAgd2UgY29uY2F0ZW5hdGUgaXQgdG8g dGhlIGZpbGVuYW1lIHdoZW4gaXQgbWFrZXMgc2Vuc2UuCi0gICAgIE5vdGUg dGhhdCB0aGUgRHdhcmYzIHN0YW5kYXJkIHNheXMgKHNwZWFraW5nIG9mIGZp bGVuYW1lcyBpbiBsaW5lCi0gICAgIGluZm9ybWF0aW9uKTogYGBUaGUgZGly ZWN0b3J5IGluZGV4IGlzIGlnbm9yZWQgZm9yIGZpbGUgbmFtZXMKLSAgICAg dGhhdCByZXByZXNlbnQgZnVsbCBwYXRoIG5hbWVzJycuICBUaHVzIGlnbm9y aW5nIGRpcm5hbWUgaW4gdGhlCi0gICAgIGBlbHNlJyBicmFuY2ggYmVsb3cg aXNuJ3QgYW4gaXNzdWUuICAqLwotCi0gIGlmICghSVNfQUJTT0xVVEVfUEFU SCAoZmlsZW5hbWUpICYmIGRpcm5hbWUgIT0gTlVMTCkKLSAgICBmdWxsbmFt ZSA9IGNvbmNhdCAoZGlybmFtZSwgU0xBU0hfU1RSSU5HLCBmaWxlbmFtZSwg KGNoYXIgKilOVUxMKTsKLSAgZWxzZQotICAgIGZ1bGxuYW1lID0gZmlsZW5h bWU7Ci0KLSAgc3RhcnRfc3ViZmlsZSAoZnVsbG5hbWUsIGNvbXBfZGlyKTsK LQotICBpZiAoZnVsbG5hbWUgIT0gZmlsZW5hbWUpCi0gICAgeGZyZWUgKGZ1 bGxuYW1lKTsKLX0KLQogc3RhdGljIHZvaWQKIHZhcl9kZWNvZGVfbG9jYXRp b24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5 bSwKIAkJICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKSW5kZXg6IHRlc3Rz dWl0ZS9nZGIuYmFzZS9oYXNobGluZTEuZXhwCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IHRlc3RzdWl0ZS9nZGIuYmFzZS9oYXNobGluZTEu ZXhwCmRpZmYgLU4gdGVzdHN1aXRlL2dkYi5iYXNlL2hhc2hsaW5lMS5leHAK LS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyB0 ZXN0c3VpdGUvZ2RiLmJhc2UvaGFzaGxpbmUxLmV4cAk1IEphbiAyMDA4IDIy OjA3OjUxIC0wMDAwCkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29weXJpZ2h0IDIw MDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMK KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0 c3VpdGUuCisKKyMgVGVzdCBsb2FkaW5nIG9mIGxpbmUgbnVtYmVyIGluZm9y bWF0aW9uIHdpdGggYWJzb2x1dGUgcGF0aCBpbiAjbGluZSwgYnVnIDIzNjAu CisKK2lmICR0cmFjZWxldmVsIHRoZW4geworICAgIHN0cmFjZSAkdHJhY2Vs ZXZlbAorfQorCitzZXQgcHJtc19pZCAyMzYwCitzZXQgYnVnX2lkIDAKKwor IyBzcmNmaWxlIGlzIGluIG9iamRpciBiZWNhdXNlIHdlIG5lZWQgdG8gbWFj aGluZSBnZW5lcmF0ZSBpdCBpbiBvcmRlcgorIyB0byBnZXQgY29ycmVjdCB0 aGUgY29ycmVjdCBwYXRoIGluIHRoZSAjbGluZSBkaXJlY3RpdmUuCisKK3Nl dCB0ZXN0ZmlsZSAiaGFzaGxpbmUxIgorc2V0IHNyY2ZpbGUgIiR7dGVzdGZp bGV9LmMiCitzZXQgYmluZmlsZSAiJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfSIKKworc2V0IGZkIFtvcGVuICR7b2JqZGlyfS8ke3N1YmRpcn0v JHtzcmNmaWxlfSB3XQorcHV0cyAkZmQgIiNsaW5lIDIgXCJbcHdkXS8ke3N1 YmRpcn0vJHtzcmNmaWxlfVwiIgorcHV0cyAkZmQgImludCBtYWluICgpIHsg cmV0dXJuIDA7IH0gLyogc2V0IGJyZWFrcG9pbnQgaGVyZSAqLyIKK2Nsb3Nl ICRmZAorCisjIFRoZSBjaG9pY2Ugb2YgcGF0aCBuYW1lIGZvciB0aGUgc291 cmNlIGZpbGUgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvCisjIHRyaWdnZXIg dGhlIGJ1Zy4gIFVzaW5nICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl fSBoZXJlIHdvbid0IHRyaWdnZXIKKyMgdGhlIGJ1Zy4KK2lmIHsgW2dkYl9j b21waWxlICIuLyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKyAgICB1bnRlc3RlZCBo YXNobGluZTEuZXhwCisgICAgcmV0dXJuIC0xCit9CisKK2dkYl9leGl0Citn ZGJfc3RhcnQKK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRp cgorZ2RiX2xvYWQgJHtiaW5maWxlfQorCitzZXQgYnBfbG9jYXRpb24gW2dk Yl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IGhlcmUiICR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfV0KKworIyBUcnkgdG8gc2V0IGEg YnJlYWtwb2ludCBvbiB0aGUgc3BlY2lmaWVkIGZpbGUgbG9jYXRpb24uCisK KyNnZGJfdGVzdCAic2V0IHN1YnN0aXR1dGUtcGF0aCBbcHdkXS8uIFtwd2Rd IiAiIiAiIgorCitnZGJfdGVzdCAiYnJlYWsgJHNyY2ZpbGU6JGJwX2xvY2F0 aW9uIiBcCisgICAgIkJyZWFrcG9pbnQuKmF0LiogZmlsZSAuKiRzcmNmaWxl LCBsaW5lLioiIFwKKyAgICAic2V0IGJyZWFrcG9pbnQiCkluZGV4OiB0ZXN0 c3VpdGUvZ2RiLmJhc2UvaGFzaGxpbmUyLmV4cAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiB0ZXN0c3VpdGUvZ2RiLmJhc2UvaGFzaGxpbmUy LmV4cApkaWZmIC1OIHRlc3RzdWl0ZS9nZGIuYmFzZS9oYXNobGluZTIuZXhw Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysg dGVzdHN1aXRlL2dkYi5iYXNlL2hhc2hsaW5lMi5leHAJNSBKYW4gMjAwOCAy MjowNzo1MSAtMDAwMApAQCAtMCwwICsxLDU4IEBACisjIENvcHlyaWdodCAy MDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisj CisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVz dHN1aXRlLgorCisjIFRlc3QgbG9hZGluZyBvZiBsaW5lIG51bWJlciBpbmZv cm1hdGlvbiB3aXRoIGFuIGFic29sdXRlIHBhdGggd2l0aCBleHRyYQorIyAv J3MgaW4gI2xpbmUsIGJ1ZyAyMzYwLgorCitpZiAkdHJhY2VsZXZlbCB0aGVu IHsKKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKK30KKworc2V0IHBybXNfaWQg MjM2MAorc2V0IGJ1Z19pZCAwCisKKyMgc3JjZmlsZSBpcyBpbiBvYmpkaXIg YmVjYXVzZSB3ZSBuZWVkIHRvIG1hY2hpbmUgZ2VuZXJhdGUgaXQgaW4gb3Jk ZXIKKyMgdG8gZ2V0IGNvcnJlY3QgdGhlIGNvcnJlY3QgcGF0aCBpbiB0aGUg I2xpbmUgZGlyZWN0aXZlLgorCitzZXQgdGVzdGZpbGUgImhhc2hsaW5lMiIK K3NldCBzcmNmaWxlICIke3Rlc3RmaWxlfS5jIgorc2V0IGJpbmZpbGUgIiR7 b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0iCisKK3NldCBmZCBbb3Bl biAke29iamRpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0gd10KK3B1dHMgJGZk ICIjbGluZSAyIFwiLy8vW3B3ZF0vJHtzdWJkaXJ9LyR7c3JjZmlsZX1cIiIK K3B1dHMgJGZkICJpbnQgbWFpbiAoKSB7IHJldHVybiAwOyB9IC8qIHNldCBi cmVha3BvaW50IGhlcmUgKi8iCitjbG9zZSAkZmQKKworaWYgeyBbZ2RiX2Nv bXBpbGUgIiR7b2JqZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7Ymlu ZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisgICAgdW50 ZXN0ZWQgaGFzaGxpbmUxLmV4cAorICAgIHJldHVybiAtMQorfQorCitnZGJf ZXhpdAorZ2RiX3N0YXJ0CitnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGly LyRzdWJkaXIKK2dkYl9sb2FkICR7YmluZmlsZX0KKworc2V0IGJwX2xvY2F0 aW9uIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCBoZXJl IiAke29iamRpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX1dCisKKyMgVHJ5IHRv IHNldCBhIGJyZWFrcG9pbnQgb24gdGhlIHNwZWNpZmllZCBmaWxlIGxvY2F0 aW9uLgorCisjZ2RiX3Rlc3QgInNldCBzdWJzdGl0dXRlLXBhdGggLy8vW3B3 ZF0gW3B3ZF0iICIiICIiCisKK2dkYl90ZXN0ICJicmVhayAkc3JjZmlsZTok YnBfbG9jYXRpb24iIFwKKyAgICAiQnJlYWtwb2ludC4qYXQuKiBmaWxlIC4q JHNyY2ZpbGUsIGxpbmUuKiIgXAorICAgICJzZXQgYnJlYWtwb2ludCIKSW5k ZXg6IHRlc3RzdWl0ZS9nZGIuYmFzZS9oYXNobGluZTMuZXhwCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHRlc3RzdWl0ZS9nZGIuYmFzZS9o YXNobGluZTMuZXhwCmRpZmYgLU4gdGVzdHN1aXRlL2dkYi5iYXNlL2hhc2hs aW5lMy5leHAKLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0w MDAwCisrKyB0ZXN0c3VpdGUvZ2RiLmJhc2UvaGFzaGxpbmUzLmV4cAk1IEph biAyMDA4IDIyOjA3OjUxIC0wMDAwCkBAIC0wLDAgKzEsNTcgQEAKKyMgQ29w eXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisK KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IGdkYiB0ZXN0c3VpdGUuCisKKyMgVGVzdCBsb2FkaW5nIG9mIGxpbmUgbnVt YmVyIGluZm9ybWF0aW9uIHdpdGggcmVsYXRpdmUgcGF0aCBpbiAjbGluZSwg YnVnIDIzNjAuCisKK2lmICR0cmFjZWxldmVsIHRoZW4geworICAgIHN0cmFj ZSAkdHJhY2VsZXZlbAorfQorCitzZXQgcHJtc19pZCAyMzYwCitzZXQgYnVn X2lkIDAKKworIyBzcmNmaWxlIGlzIGluIG9iamRpciBiZWNhdXNlIHdlIG5l ZWQgdG8gbWFjaGluZSBnZW5lcmF0ZSBpdCBpbiBvcmRlcgorIyB0byBnZXQg Y29ycmVjdCB0aGUgY29ycmVjdCBwYXRoIGluIHRoZSAjbGluZSBkaXJlY3Rp dmUuCisKK3NldCB0ZXN0ZmlsZSAiaGFzaGxpbmUzIgorc2V0IHNyY2ZpbGUg IiR7dGVzdGZpbGV9LmMiCitzZXQgYmluZmlsZSAiJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfSIKKworc2V0IGZkIFtvcGVuICR7b2JqZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSB3XQorcHV0cyAkZmQgIiNsaW5lIDIgXCIu LyR7c3ViZGlyfS8ke3NyY2ZpbGV9XCIiCitwdXRzICRmZCAiaW50IG1haW4g KCkgeyByZXR1cm4gMDsgfSAvKiBzZXQgYnJlYWtwb2ludCBoZXJlICovIgor Y2xvc2UgJGZkCisKK2lmIHsgW2dkYl9jb21waWxlICIke29iamRpcn0vJHtz dWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtk ZWJ1Z31dICE9ICIiIH0geworICAgIHVudGVzdGVkIGhhc2hsaW5lMS5leHAK KyAgICByZXR1cm4gLTEKK30KKworZ2RiX2V4aXQKK2dkYl9zdGFydAorZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCitnZGJfbG9hZCAk e2JpbmZpbGV9CisKK3NldCBicF9sb2NhdGlvbiBbZ2RiX2dldF9saW5lX251 bWJlciAic2V0IGJyZWFrcG9pbnQgaGVyZSIgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGV9XQorCisjIFRyeSB0byBzZXQgYSBicmVha3BvaW50IG9u IHRoZSBzcGVjaWZpZWQgZmlsZSBsb2NhdGlvbi4KKworI2dkYl90ZXN0ICJz ZXQgc3Vic3RpdHV0ZS1wYXRoICR7b2JqZGlyfS8uICR7b2JqZGlyfSIgIiIg IiIKKworZ2RiX3Rlc3QgImJyZWFrICRzcmNmaWxlOiRicF9sb2NhdGlvbiIg XAorICAgICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGlu ZS4qIiBcCisgICAgInNldCBicmVha3BvaW50Igo= ------=_Part_1370_25779229.1199571490543--