From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11318 invoked by alias); 13 May 2011 22:38:49 -0000 Received: (qmail 10995 invoked by uid 22791); 13 May 2011 22:38:45 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,TW_BJ,TW_CP,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.67) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 13 May 2011 22:38:28 +0000 Received: from wpaz13.hot.corp.google.com (wpaz13.hot.corp.google.com [172.24.198.77]) by smtp-out.google.com with ESMTP id p4DMcQpH008600 for ; Fri, 13 May 2011 15:38:26 -0700 Received: from gxk1 (gxk1.prod.google.com [10.202.11.1]) by wpaz13.hot.corp.google.com with ESMTP id p4DMawPI006310 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Fri, 13 May 2011 15:38:25 -0700 Received: by gxk1 with SMTP id 1so1188462gxk.38 for ; Fri, 13 May 2011 15:38:25 -0700 (PDT) MIME-Version: 1.0 Received: by 10.91.218.17 with SMTP id v17mr1903109agq.18.1305326303501; Fri, 13 May 2011 15:38:23 -0700 (PDT) Received: by 10.90.72.6 with HTTP; Fri, 13 May 2011 15:38:23 -0700 (PDT) In-Reply-To: References: <20110510190926.A294F246199@ruffy.mtv.corp.google.com> Date: Fri, 13 May 2011 22:38:00 -0000 Message-ID: Subject: Re: [RFA] Add support for $sdir and $pdir to libthread-db-search-path From: Doug Evans To: Tom Tromey Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00163630fbe1a2dedf04a32ff676 X-System-Of-Record: true 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: 2011-05/txt/msg00333.txt.bz2 --00163630fbe1a2dedf04a32ff676 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1877 On Thu, May 12, 2011 at 1:12 PM, Tom Tromey wrote: >>>>>> "Doug" =3D=3D Doug Evans writes: > > Doug> This patch adds $sdir to the patch referenced here: > Doug> http://sourceware.org/ml/gdb-patches/2011-04/msg00553.html > > Doug> and puts $sdir ahead of $pdir. > Doug> If/when gdb gets a security model I think $pdir should be moved > Doug> ahead of $sdir. > > Doug> It also simplifies some of the code to parse libthread-db-search-pa= th. > > Doug> Ok to check in? > > It looks ok to me. > > Well, actually, I think the pre-existing code has some problems, but > they aren't introduced by your patch. =A0I will clean them up separately. Here is what I checked in. 2011-05-13 Doug Evans Support $pdir and $sdir in libthread-db-search-path. * NEWS: Mention $sdir,$pdir. * gdb_thread_db.h (LIBTHREAD_DB_SEARCH_PATH): Add $sdir:$pdir. * linux-thread-db.c (try_thread_db_load_from_pdir): New function. (try_thread_db_load_from_sdir): New function. (try_thread_db_load_from_dir): New function. (thread_db_load_search): Handle $pdir, $sdir. Remove trying of system directories if search of libthread-db-search-path fails, that is now done via $sdir. (has_libpthread): New function. (thread_db_load): Remove search for libthread_db in directory of libpthread, that is now done via $pdir. gdbserver/ * thread-db.c (try_thread_db_load_from_sdir): New function. (try_thread_db_load_from_dir): New function. (thread_db_load_search): Handle $sdir, ignore $pdir. Remove trying of system directories if search of libthread-db-search-path fails, that is now done via $sdir. doc/ * gdb.texinfo (Threads): Document $sdir,$pdir. (Server): Document $pdir exception. --00163630fbe1a2dedf04a32ff676 Content-Type: text/plain; charset=US-ASCII; name="gdb-110513-pdir-3.patch.txt" Content-Disposition: attachment; filename="gdb-110513-pdir-3.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gnnpjmhm0 Content-length: 21159 MjAxMS0wNS0xMyAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCVN1 cHBvcnQgJHBkaXIgYW5kICRzZGlyIGluIGxpYnRocmVhZC1kYi1zZWFyY2gt cGF0aC4KCSogTkVXUzogTWVudGlvbiAkc2RpciwkcGRpci4KCSogZ2RiX3Ro cmVhZF9kYi5oIChMSUJUSFJFQURfREJfU0VBUkNIX1BBVEgpOiBBZGQgJHNk aXI6JHBkaXIuCgkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2Ri X2xvYWRfZnJvbV9wZGlyKTogTmV3IGZ1bmN0aW9uLgoJKHRyeV90aHJlYWRf ZGJfbG9hZF9mcm9tX3NkaXIpOiBOZXcgZnVuY3Rpb24uCgkodHJ5X3RocmVh ZF9kYl9sb2FkX2Zyb21fZGlyKTogTmV3IGZ1bmN0aW9uLgoJKHRocmVhZF9k Yl9sb2FkX3NlYXJjaCk6IEhhbmRsZSAkcGRpciwgJHNkaXIuICBSZW1vdmUg dHJ5aW5nIG9mCglzeXN0ZW0gZGlyZWN0b3JpZXMgaWYgc2VhcmNoIG9mIGxp YnRocmVhZC1kYi1zZWFyY2gtcGF0aCBmYWlscywKCXRoYXQgaXMgbm93IGRv bmUgdmlhICRzZGlyLgoJKGhhc19saWJwdGhyZWFkKTogTmV3IGZ1bmN0aW9u LgoJKHRocmVhZF9kYl9sb2FkKTogUmVtb3ZlIHNlYXJjaCBmb3IgbGlidGhy ZWFkX2RiIGluIGRpcmVjdG9yeSBvZgoJbGlicHRocmVhZCwgdGhhdCBpcyBu b3cgZG9uZSB2aWEgJHBkaXIuCgoJZ2Ric2VydmVyLwoJKiB0aHJlYWQtZGIu YyAodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fc2Rpcik6IE5ldyBmdW5jdGlv bi4KCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBOZXcgZnVuY3Rp b24uCgkodGhyZWFkX2RiX2xvYWRfc2VhcmNoKTogSGFuZGxlICRzZGlyLCBp Z25vcmUgJHBkaXIuCglSZW1vdmUgdHJ5aW5nIG9mIHN5c3RlbSBkaXJlY3Rv cmllcyBpZiBzZWFyY2ggb2YKCWxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aCBm YWlscywJdGhhdCBpcyBub3cgZG9uZSB2aWEgJHNkaXIuCgoJZG9jLwoJKiBn ZGIudGV4aW5mbyAoVGhyZWFkcyk6IERvY3VtZW50ICRzZGlyLCRwZGlyLgoJ KFNlcnZlcik6IERvY3VtZW50ICRwZGlyIGV4Y2VwdGlvbi4KCkluZGV4OiBO RVdTCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3Jj L3NyYy9nZGIvTkVXUyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NDAKZGlm ZiAtdSAtcCAtcjEuNDQwIE5FV1MKLS0tIE5FV1MJMTMgTWF5IDIwMTEgMjI6 MTE6NDYgLTAwMDAJMS40NDAKKysrIE5FV1MJMTMgTWF5IDIwMTEgMjI6Mjg6 MzAgLTAwMDAKQEAgLTMsNiArMywyMCBAQAogCiAqKiogQ2hhbmdlcyBzaW5j ZSBHREIgNy4zCiAKKyogbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoIG5vdyBz dXBwb3J0cyB0d28gc3BlY2lhbCB2YWx1ZXM6ICRzZGlyIGFuZCAkcGRpci4K KyAgJHNkaXIgc3BlY2lmaWVzIHRoZSBkZWZhdWx0IHN5c3RlbSBsb2NhdGlv bnMgb2Ygc2hhcmVkIGxpYnJhcmllcy4KKyAgJHBkaXIgc3BlY2lmaWVzIHRo ZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGxpYnB0aHJlYWQgdXNlZCBieSB0aGUg YXBwbGljYXRpb24KKyAgbGl2ZXMuCisKKyAgR0RCIG5vIGxvbmdlciBsb29r cyBpbiAkc2RpciBhbmQgJHBkaXIgYWZ0ZXIgaXQgaGFzIHNlYXJjaGVkIHRo ZSBkaXJlY3RvcmllcworICBtZW50aW9uZWQgaW4gbGlidGhyZWFkLWRiLXNl YXJjaC1wYXRoLiAgSWYgeW91IHdhbnQgdG8gc2VhcmNoIHRob3NlCisgIGRp cmVjdG9yaWVzLCB0aGV5IG11c3QgYmUgc3BlY2lmaWVkIGluIGxpYnRocmVh ZC1kYi1zZWFyY2gtcGF0aC4KKyAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgbGli dGhyZWFkLWRiLXNlYXJjaC1wYXRoIG9uIEdOVS9MaW51eCBhbmQgU29sYXJp cworICBzeXN0ZW1zIGlzIG5vdyAiJHNkaXI6JHBkaXIiLgorCisgICRwZGly IGlzIG5vdCBzdXBwb3J0ZWQgYnkgZ2Ric2VydmVyLCBpdCBpcyBjdXJyZW50 bHkgaWdub3JlZC4KKyAgJHNkaXIgaXMgc3VwcG9ydGVkIGJ5IGdkYnNlcnZl ci4KKwogKiBOZXcgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtaWNvbnYtYmlu LgogICBXaGVuIHVzaW5nIHRoZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBzdXBw b3J0IGxpa2UgdGhlIG9uZSBpbiB0aGUgR05VIEMKICAgbGlicmFyeSwgR0RC IHdpbGwgaW52b2tlIHRoZSAiaWNvbnYiIHByb2dyYW0gdG8gZ2V0IGEgbGlz dCBvZiBzdXBwb3J0ZWQKSW5kZXg6IGdkYl90aHJlYWRfZGIuaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2dk Yl90aHJlYWRfZGIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNgpkaWZm IC11IC1wIC1yMS4xNiBnZGJfdGhyZWFkX2RiLmgKLS0tIGdkYl90aHJlYWRf ZGIuaAk3IEphbiAyMDExIDE5OjM2OjE3IC0wMDAwCTEuMTYKKysrIGdkYl90 aHJlYWRfZGIuaAkxMyBNYXkgMjAxMSAyMjoyODozMCAtMDAwMApAQCAtNiw3 ICs2LDEwIEBACiAjZW5kaWYKIAogI2lmbmRlZiBMSUJUSFJFQURfREJfU0VB UkNIX1BBVEgKLSNkZWZpbmUgTElCVEhSRUFEX0RCX1NFQVJDSF9QQVRIICIi CisvKiAkc2RpciBhcHBlYXJzIGJlZm9yZSAkcGRpciBmb3Igc29tZSBtaW5p bWFsIHNlY3VyaXR5IHByb3RlY3Rpb246CisgICB3ZSB0cnVzdCB0aGUgc3lz dGVtIGxpYnRocmVhZF9kYi5zbyBhIGJpdCBtb3JlIHRoYW4gc29tZSByYW5k b20KKyAgIGxpYnRocmVhZF9kYiBhc3NvY2lhdGVkIHdpdGggd2hhdGV2ZXIg bGlicHRocmVhZCB0aGUgYXBwIGlzIHVzaW5nLiAgKi8KKyNkZWZpbmUgTElC VEhSRUFEX0RCX1NFQVJDSF9QQVRIICIkc2RpcjokcGRpciIKICNlbmRpZgog CiAjZWxzZQpJbmRleDogbGludXgtdGhyZWFkLWRiLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9saW51eC10 aHJlYWQtZGIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44NApkaWZmIC11 IC1wIC1yMS44NCBsaW51eC10aHJlYWQtZGIuYwotLS0gbGludXgtdGhyZWFk LWRiLmMJMTAgTWF5IDIwMTEgMTg6NDU6MjIgLTAwMDAJMS44NAorKysgbGlu dXgtdGhyZWFkLWRiLmMJMTMgTWF5IDIwMTEgMjI6Mjg6MzAgLTAwMDAKQEAg LTgxMiw3MyArODEyLDE2MyBAQCB0cnlfdGhyZWFkX2RiX2xvYWQgKGNvbnN0 IGNoYXIgKmxpYnJhcnkpCiAgIHJldHVybiAwOwogfQogCisvKiBIYW5kbGUg JHBkaXIgaW4gbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoLgorICAgTG9vayBm b3IgbGlidGhyZWFkX2RiIGluIHRoZSBkaXJlY3Rvcnkgb2YgbGlicHRocmVh ZC4KKyAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBmb3Igc3VjY2Vzcy4gICovCisK K3N0YXRpYyBpbnQKK3RyeV90aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXIgKHZv aWQpCit7CisgIHN0cnVjdCBvYmpmaWxlICpvYmo7CisKKyAgQUxMX09CSkZJ TEVTIChvYmopCisgICAgaWYgKGxpYnB0aHJlYWRfbmFtZV9wIChvYmotPm5h bWUpKQorICAgICAgeworCWNoYXIgcGF0aFtQQVRIX01BWF0sICpjcDsKKwor CWdkYl9hc3NlcnQgKHN0cmxlbiAob2JqLT5uYW1lKSA8IHNpemVvZiAocGF0 aCkpOworCXN0cmNweSAocGF0aCwgb2JqLT5uYW1lKTsKKwljcCA9IHN0cnJj aHIgKHBhdGgsICcvJyk7CisKKwlpZiAoY3AgPT0gTlVMTCkKKwkgIHsKKwkg ICAgd2FybmluZyAoXygiRXhwZWN0ZWQgYWJzb2x1dGUgcGF0aG5hbWUgZm9y IGxpYnB0aHJlYWQgaW4gdGhlIgorCQkgICAgICAgIiBpbmZlcmlvciwgYnV0 IGdvdCAlcy4iKSwgcGF0aCk7CisJICB9CisJZWxzZSBpZiAoY3AgKyAxICsg c3RybGVuIChMSUJUSFJFQURfREJfU08pICsgMSA+IHBhdGggKyBzaXplb2Yg KHBhdGgpKQorCSAgeworCSAgICB3YXJuaW5nIChfKCJVbmV4cGVjdGVkOiBw YXRoIHRvIGxpYnB0aHJlYWQgaW4gdGhlIGluZmVyaW9yIGlzIgorCQkgICAg ICAgIiB0b28gbG9uZzogJXMiKSwgcGF0aCk7CisJICB9CisJZWxzZQorCSAg eworCSAgICBzdHJjcHkgKGNwICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKwkg ICAgaWYgKHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCkpCisJICAgICAgcmV0 dXJuIDE7CisJICB9CisJcmV0dXJuIDA7CisgICAgICB9CisKKyAgcmV0dXJu IDA7Cit9CisKKy8qIEhhbmRsZSAkc2RpciBpbiBsaWJ0aHJlYWQtZGItc2Vh cmNoLXBhdGguCisgICBMb29rIGZvciBsaWJ0aHJlYWRfZGIgaW4gdGhlIHN5 c3RlbSBkaXJzLCBvciB3aGVyZXZlciBhIHBsYWluCisgICBkbG9wZW4oZmls ZV93aXRob3V0X3BhdGgpIHdpbGwgbG9vay4KKyAgIFRoZSByZXN1bHQgaXMg dHJ1ZSBmb3Igc3VjY2Vzcy4gICovCisKK3N0YXRpYyBpbnQKK3RyeV90aHJl YWRfZGJfbG9hZF9mcm9tX3NkaXIgKHZvaWQpCit7CisgIHJldHVybiB0cnlf dGhyZWFkX2RiX2xvYWQgKExJQlRIUkVBRF9EQl9TTyk7Cit9CisKKy8qIFRy eSB0byBsb2FkIGxpYnRocmVhZF9kYiBmcm9tIGRpcmVjdG9yeSBESVIgb2Yg bGVuZ3RoIERJUl9MRU4uCisgICBUaGUgcmVzdWx0IGlzIHRydWUgZm9yIHN1 Y2Nlc3MuICAqLworCitzdGF0aWMgaW50Cit0cnlfdGhyZWFkX2RiX2xvYWRf ZnJvbV9kaXIgKGNvbnN0IGNoYXIgKmRpciwgc2l6ZV90IGRpcl9sZW4pCit7 CisgIGNoYXIgcGF0aFtQQVRIX01BWF07CisKKyAgaWYgKGRpcl9sZW4gKyAx ICsgc3RybGVuIChMSUJUSFJFQURfREJfU08pICsgMSA+IHNpemVvZiAocGF0 aCkpCisgICAgeworICAgICAgY2hhciAqY3AgPSB4bWFsbG9jIChkaXJfbGVu ICsgMSk7CisKKyAgICAgIG1lbWNweSAoY3AsIGRpciwgZGlyX2xlbik7Cisg ICAgICBjcFtkaXJfbGVuXSA9ICdcMCc7CisgICAgICB3YXJuaW5nIChfKCJs aWJ0aHJlYWQtZGItc2VhcmNoLXBhdGggY29tcG9uZW50IHRvbyBsb25nLCIK KwkJICIgaWdub3JlZDogJXMuIiksIGNwKTsKKyAgICAgIHhmcmVlIChjcCk7 CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgbWVtY3B5IChwYXRoLCBk aXIsIGRpcl9sZW4pOworICBwYXRoW2Rpcl9sZW5dID0gJy8nOworICBzdHJj cHkgKHBhdGggKyBkaXJfbGVuICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKyAg cmV0dXJuIHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7Cit9CisKIC8qIFNl YXJjaCBsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGggZm9yIGxpYnRocmVhZF9k YiB3aGljaCAiYWdyZWVzIgotICAgdG8gd29yayBvbiBjdXJyZW50IGluZmVy aW9yLiAgKi8KKyAgIHRvIHdvcmsgb24gY3VycmVudCBpbmZlcmlvci4KKyAg IFRoZSByZXN1bHQgaXMgdHJ1ZSBmb3Igc3VjY2Vzcy4gICovCiAKIHN0YXRp YyBpbnQKIHRocmVhZF9kYl9sb2FkX3NlYXJjaCAodm9pZCkKIHsKLSAgY2hh ciBwYXRoW1BBVEhfTUFYXTsKICAgY29uc3QgY2hhciAqc2VhcmNoX3BhdGgg PSBsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGg7CiAgIGludCByYyA9IDA7CiAK ICAgd2hpbGUgKCpzZWFyY2hfcGF0aCkKICAgICB7CiAgICAgICBjb25zdCBj aGFyICplbmQgPSBzdHJjaHIgKHNlYXJjaF9wYXRoLCAnOicpOworICAgICAg Y29uc3QgY2hhciAqdGhpc19kaXIgPSBzZWFyY2hfcGF0aDsKKyAgICAgIHNp emVfdCB0aGlzX2Rpcl9sZW47CiAKICAgICAgIGlmIChlbmQpCiAJewotCSAg c2l6ZV90IGxlbiA9IGVuZCAtIHNlYXJjaF9wYXRoOwotCi0gICAgICAgICAg aWYgKGxlbiArIDEgKyBzdHJsZW4gKExJQlRIUkVBRF9EQl9TTykgKyAxID4g c2l6ZW9mIChwYXRoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg Y2hhciAqY3AgPSB4bWFsbG9jIChsZW4gKyAxKTsKLQotICAgICAgICAgICAg ICBtZW1jcHkgKGNwLCBzZWFyY2hfcGF0aCwgbGVuKTsKLSAgICAgICAgICAg ICAgY3BbbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICAgIHdhcm5pbmcgKF8o ImxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aCBjb21wb25lbnQgdG9vIGxvbmcs IgotICAgICAgICAgICAgICAgICAgICAgICAgICIgaWdub3JlZDogJXMuIiks IGNwKTsKLSAgICAgICAgICAgICAgeGZyZWUgKGNwKTsKLSAgICAgICAgICAg ICAgc2VhcmNoX3BhdGggKz0gbGVuICsgMTsKLSAgICAgICAgICAgICAgY29u dGludWU7Ci0gICAgICAgICAgICB9Ci0JICBtZW1jcHkgKHBhdGgsIHNlYXJj aF9wYXRoLCBsZW4pOwotCSAgcGF0aFtsZW5dID0gJ1wwJzsKLQkgIHNlYXJj aF9wYXRoICs9IGxlbiArIDE7CisJICB0aGlzX2Rpcl9sZW4gPSBlbmQgLSBz ZWFyY2hfcGF0aDsKKwkgIHNlYXJjaF9wYXRoICs9IHRoaXNfZGlyX2xlbiAr IDE7CiAJfQogICAgICAgZWxzZQogCXsKLSAgICAgICAgICBzaXplX3QgbGVu ID0gc3RybGVuIChzZWFyY2hfcGF0aCk7CisJICB0aGlzX2Rpcl9sZW4gPSBz dHJsZW4gKHRoaXNfZGlyKTsKKwkgIHNlYXJjaF9wYXRoICs9IHRoaXNfZGly X2xlbjsKKwl9CiAKLSAgICAgICAgICBpZiAobGVuICsgMSArIHN0cmxlbiAo TElCVEhSRUFEX0RCX1NPKSArIDEgPiBzaXplb2YgKHBhdGgpKQotICAgICAg ICAgICAgewotICAgICAgICAgICAgICB3YXJuaW5nIChfKCJsaWJ0aHJlYWRf ZGJfc2VhcmNoX3BhdGggY29tcG9uZW50IHRvbyBsb25nLCIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAiIGlnbm9yZWQ6ICVzLiIpLCBzZWFyY2hfcGF0 aCk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCSAg bWVtY3B5IChwYXRoLCBzZWFyY2hfcGF0aCwgbGVuICsgMSk7Ci0JICBzZWFy Y2hfcGF0aCArPSBsZW47Ci0JfQotICAgICAgc3RyY2F0IChwYXRoLCAiLyIp OwotICAgICAgc3RyY2F0IChwYXRoLCBMSUJUSFJFQURfREJfU08pOwotICAg ICAgaWYgKHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCkpCisgICAgICBpZiAo dGhpc19kaXJfbGVuID09IHNpemVvZiAoIiRwZGlyIikgLSAxCisJICAmJiBz dHJuY21wICh0aGlzX2RpciwgIiRwZGlyIiwgdGhpc19kaXJfbGVuKSA9PSAw KQogCXsKLQkgIHJjID0gMTsKLQkgIGJyZWFrOworCSAgaWYgKHRyeV90aHJl YWRfZGJfbG9hZF9mcm9tX3BkaXIgKCkpCisJICAgIHsKKwkgICAgICByYyA9 IDE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwl9CisgICAgICBlbHNlIGlm ICh0aGlzX2Rpcl9sZW4gPT0gc2l6ZW9mICgiJHNkaXIiKSAtIDEKKwkgICAg ICAgJiYgc3RybmNtcCAodGhpc19kaXIsICIkc2RpciIsIHRoaXNfZGlyX2xl bikgPT0gMCkKKwl7CisJICBpZiAodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21f c2RpciAoKSkKKwkgICAgeworCSAgICAgIHJjID0gMTsKKwkgICAgICBicmVh azsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBpZiAodHJ5X3Ro cmVhZF9kYl9sb2FkX2Zyb21fZGlyICh0aGlzX2RpciwgdGhpc19kaXJfbGVu KSkKKwkgICAgeworCSAgICAgIHJjID0gMTsKKwkgICAgICBicmVhazsKKwkg ICAgfQogCX0KICAgICB9Ci0gIGlmIChyYyA9PSAwKQotICAgIHJjID0gdHJ5 X3RocmVhZF9kYl9sb2FkIChMSUJUSFJFQURfREJfU08pOworCisgIGlmIChs aWJ0aHJlYWRfZGJfZGVidWcpCisgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8o InRocmVhZF9kYl9sb2FkX3NlYXJjaCByZXR1cm5pbmcgJWRcbiIpLCByYyk7 CiAgIHJldHVybiByYzsKIH0KIAorLyogUmV0dXJuIG5vbi16ZXJvIGlmIHRo ZSBpbmZlcmlvciBoYXMgYSBsaWJwdGhyZWFkLiAgKi8KKworc3RhdGljIGlu dAoraGFzX2xpYnB0aHJlYWQgKHZvaWQpCit7CisgIHN0cnVjdCBvYmpmaWxl ICpvYmo7CisKKyAgQUxMX09CSkZJTEVTIChvYmopCisgICAgaWYgKGxpYnB0 aHJlYWRfbmFtZV9wIChvYmotPm5hbWUpKQorICAgICAgcmV0dXJuIDE7CisK KyAgcmV0dXJuIDA7Cit9CisKIC8qIEF0dGVtcHQgdG8gbG9hZCBhbmQgaW5p dGlhbGl6ZSBsaWJ0aHJlYWRfZGIuCiAgICBSZXR1cm4gMSBvbiBzdWNjZXNz LiAgKi8KIAogc3RhdGljIGludAogdGhyZWFkX2RiX2xvYWQgKHZvaWQpCiB7 Ci0gIHN0cnVjdCBvYmpmaWxlICpvYmo7CiAgIHN0cnVjdCB0aHJlYWRfZGJf aW5mbyAqaW5mbzsKIAogICBpbmZvID0gZ2V0X3RocmVhZF9kYl9pbmZvIChH RVRfUElEIChpbmZlcmlvcl9wdGlkKSk7CkBAIC04OTgsMzkgKzk4OCwxNSBA QCB0aHJlYWRfZGJfbG9hZCAodm9pZCkKICAgaWYgKHRocmVhZF9kYl9sb2Fk X3NlYXJjaCAoKSkKICAgICByZXR1cm4gMTsKIAotICAvKiBOb25lIG9mIHRo ZSBsaWJ0aHJlYWRfZGIncyBvbiBvdXIgc2VhcmNoIHBhdGgsIG5vdCB0aGUg c3lzdGVtIGRlZmF1bHQKLSAgICAgb25lcyB3b3JrZWQuICBJZiB0aGUgZXhl Y3V0YWJsZSBpcyBkeW5hbWljYWxseSBsaW5rZWQgYWdhaW5zdAotICAgICBs aWJwdGhyZWFkLCB0cnkgbG9hZGluZyBsaWJ0aHJlYWRfZGIgZnJvbSB0aGUg c2FtZSBkaXJlY3RvcnkuICAqLwotCi0gIEFMTF9PQkpGSUxFUyAob2JqKQot ICAgIGlmIChsaWJwdGhyZWFkX25hbWVfcCAob2JqLT5uYW1lKSkKLSAgICAg IHsKLQljaGFyIHBhdGhbUEFUSF9NQVhdLCAqY3A7Ci0KLQlnZGJfYXNzZXJ0 IChzdHJsZW4gKG9iai0+bmFtZSkgPCBzaXplb2YgKHBhdGgpKTsKLQlzdHJj cHkgKHBhdGgsIG9iai0+bmFtZSk7Ci0JY3AgPSBzdHJyY2hyIChwYXRoLCAn LycpOwotCi0JaWYgKGNwID09IE5VTEwpCi0JICB7Ci0JICAgIHdhcm5pbmcg KF8oIkV4cGVjdGVkIGFic29sdXRlIHBhdGhuYW1lIGZvciBsaWJwdGhyZWFk IGluIHRoZSIKLQkJICAgICAgICIgaW5mZXJpb3IsIGJ1dCBnb3QgJXMuIiks IHBhdGgpOwotCSAgfQotCWVsc2UgaWYgKGNwICsgMSArIHN0cmxlbiAoTElC VEhSRUFEX0RCX1NPKSArIDEgPiBwYXRoICsgc2l6ZW9mIChwYXRoKSkKLQkg IHsKLQkgICAgd2FybmluZyAoXygiVW5leHBlY3RlZDogcGF0aCB0byBsaWJw dGhyZWFkIGluIHRoZSBpbmZlcmlvciBpcyIKLQkJICAgICAgICIgdG9vIGxv bmc6ICVzIiksIHBhdGgpOwotCSAgfQotCWVsc2UKLQkgIHsKLQkgICAgc3Ry Y3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7Ci0JICAgIGlmICh0cnlf dGhyZWFkX2RiX2xvYWQgKHBhdGgpKQotCSAgICAgIHJldHVybiAxOwotCSAg fQotCXdhcm5pbmcgKF8oIlVuYWJsZSB0byBmaW5kIGxpYnRocmVhZF9kYiBt YXRjaGluZyBpbmZlcmlvcidzIHRocmVhZCIKLQkJICAgIiBsaWJyYXJ5LCB0 aHJlYWQgZGVidWdnaW5nIHdpbGwgbm90IGJlIGF2YWlsYWJsZS4iKSk7Ci0J cmV0dXJuIDA7CisgIC8qIFdlIGNvdWxkbid0IGZpbmQgYSBsaWJ0aHJlYWRf ZGIuCisgICAgIElmIHRoZSBpbmZlcmlvciBoYXMgYSBsaWJwdGhyZWFkIHdh cm4gdGhlIHVzZXIuICAqLworICBpZiAoaGFzX2xpYnB0aHJlYWQgKCkpCisg ICAgeworICAgICAgd2FybmluZyAoXygiVW5hYmxlIHRvIGZpbmQgbGlidGhy ZWFkX2RiIG1hdGNoaW5nIGluZmVyaW9yJ3MgdGhyZWFkIgorCQkgIiBsaWJy YXJ5LCB0aHJlYWQgZGVidWdnaW5nIHdpbGwgbm90IGJlIGF2YWlsYWJsZS4i KSk7CisgICAgICByZXR1cm4gMDsKICAgICB9CisKICAgLyogRWl0aGVyIHRo aXMgZXhlY3V0YWJsZSBpc24ndCB1c2luZyBsaWJwdGhyZWFkIGF0IGFsbCwg b3IgaXQgaXMKICAgICAgc3RhdGljYWxseSBsaW5rZWQuICBTaW5jZSB3ZSBj YW4ndCBlYXNpbHkgZGlzdGluZ3Vpc2ggdGhlc2UgdHdvIGNhc2VzLAogICAg ICBubyB3YXJuaW5nIGlzIGlzc3VlZC4gICovCkluZGV4OiBkb2MvZ2RiLnRl eGluZm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9z cmMvc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8sdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuODM3CmRpZmYgLXUgLXAgLXIxLjgzNyBnZGIudGV4aW5mbwotLS0g ZG9jL2dkYi50ZXhpbmZvCTEzIE1heSAyMDExIDIyOjExOjQ2IC0wMDAwCTEu ODM3CisrKyBkb2MvZ2RiLnRleGluZm8JMTMgTWF5IDIwMTEgMjI6Mjg6MzAg LTAwMDAKQEAgLTI4NTgsMTYgKzI4NTgsMjIgQEAgd2F0Y2hwb2ludHMgaW4g cHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0aAogSWYgdGhpcyB2YXJpYWJsZSBp cyBzZXQsIEB2YXJ7cGF0aH0gaXMgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBv ZgogZGlyZWN0b3JpZXMgQHZhbHVle0dEQk59IHdpbGwgdXNlIHRvIHNlYXJj aCBmb3IgQGNvZGV7bGlidGhyZWFkX2RifS4KIElmIHlvdSBvbWl0IEB2YXJ7 cGF0aH0sIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gd2lsbCBi ZSByZXNldCB0bwotaXRzIGRlZmF1bHQgdmFsdWUgKGFuIGVtcHR5IGxpc3Qg b24gQHNje2dudX0vTGludXggYW5kIFNvbGFyaXMgc3lzdGVtcykuCitpdHMg ZGVmYXVsdCB2YWx1ZSAoQGNvZGV7JHNkaXI6JHBkaXJ9IG9uIEBzY3tnbnV9 L0xpbnV4IGFuZCBTb2xhcmlzIHN5c3RlbXMpLgogSW50ZXJuYWxseSwgdGhl IGRlZmF1bHQgdmFsdWUgY29tZXMgZnJvbSB0aGUgQGNvZGV7TElCVEhSRUFE X0RCX1NFQVJDSF9QQVRIfQogbWFjcm8uCiAKIE9uIEBzY3tnbnV9L0xpbnV4 IGFuZCBTb2xhcmlzIHN5c3RlbXMsIEB2YWx1ZXtHREJOfSB1c2VzIGEgYGBo ZWxwZXInJwogQGNvZGV7bGlidGhyZWFkX2RifSBsaWJyYXJ5IHRvIG9idGFp biBpbmZvcm1hdGlvbiBhYm91dCB0aHJlYWRzIGluIHRoZQogaW5mZXJpb3Ig cHJvY2Vzcy4gIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSBAc2FtcHtsaWJ0aHJl YWQtZGItc2VhcmNoLXBhdGh9Ci10byBmaW5kIEBjb2Rle2xpYnRocmVhZF9k Yn0uICBJZiB0aGF0IGZhaWxzLCBAdmFsdWV7R0RCTn0gd2lsbCBjb250aW51 ZQotd2l0aCBkZWZhdWx0IHN5c3RlbSBzaGFyZWQgbGlicmFyeSBkaXJlY3Rv cmllcywgYW5kIGZpbmFsbHkgdGhlIGRpcmVjdG9yeQotZnJvbSB3aGljaCBA Y29kZXtsaWJwdGhyZWFkfSB3YXMgbG9hZGVkIGluIHRoZSBpbmZlcmlvciBw cm9jZXNzLgordG8gZmluZCBAY29kZXtsaWJ0aHJlYWRfZGJ9LgorCitBIHNw ZWNpYWwgZW50cnkgQHNhbXB7JHNkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQt ZGItc2VhcmNoLXBhdGh9CityZWZlcnMgdG8gdGhlIGRlZmF1bHQgc3lzdGVt IGRpcmVjdG9yaWVzIHRoYXQgYXJlCitub3JtYWxseSBzZWFyY2hlZCBmb3Ig bG9hZGluZyBzaGFyZWQgbGlicmFyaWVzLgorCitBIHNwZWNpYWwgZW50cnkg QHNhbXB7JHBkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBh dGh9CityZWZlcnMgdG8gdGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIEBjb2Rl e2xpYnB0aHJlYWR9Cit3YXMgbG9hZGVkIGluIHRoZSBpbmZlcmlvciBwcm9j ZXNzLgogCiBGb3IgYW55IEBjb2Rle2xpYnRocmVhZF9kYn0gbGlicmFyeSBA dmFsdWV7R0RCTn0gZmluZHMgaW4gYWJvdmUgZGlyZWN0b3JpZXMsCiBAdmFs dWV7R0RCTn0gYXR0ZW1wdHMgdG8gaW5pdGlhbGl6ZSBpdCB3aXRoIHRoZSBj dXJyZW50IGluZmVyaW9yIHByb2Nlc3MuCkBAIC0xNjM4Miw2ICsxNjM4OCw5 IEBAIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgQGNvZGV7bGlidGhyZWEK IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0pLiAgSWYgeW91IG9taXQgQHZh cntwYXRofSwKIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gd2ls bCBiZSByZXNldCB0byBpdHMgZGVmYXVsdCB2YWx1ZS4KIAorVGhlIHNwZWNp YWwgZW50cnkgQHNhbXB7JHBkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGIt c2VhcmNoLXBhdGh9IGlzCitub3Qgc3VwcG9ydGVkIGluIEBjb2Rle2dkYnNl cnZlcn0uCisKIEBpdGVtIG1vbml0b3IgZXhpdAogVGVsbCBnZGJzZXJ2ZXIg dG8gZXhpdCBpbW1lZGlhdGVseS4gIFRoaXMgY29tbWFuZCBzaG91bGQgYmUg Zm9sbG93ZWQgYnkKIEBjb2Rle2Rpc2Nvbm5lY3R9IHRvIGNsb3NlIHRoZSBk ZWJ1Z2dpbmcgc2Vzc2lvbi4gIEBjb2Rle2dkYnNlcnZlcn0gd2lsbApJbmRl eDogZ2Ric2VydmVyL3RocmVhZC1kYi5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2Ric2VydmVyL3RocmVh ZC1kYi5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQwCmRpZmYgLXUgLXAg LXIxLjQwIHRocmVhZC1kYi5jCi0tLSBnZGJzZXJ2ZXIvdGhyZWFkLWRiLmMJ MTAgTWF5IDIwMTEgMTY6NTM6MjMgLTAwMDAJMS40MAorKysgZ2Ric2VydmVy L3RocmVhZC1kYi5jCTEzIE1heSAyMDExIDIyOjI4OjMwIC0wMDAwCkBAIC02 OTgsMTAgKzY5OCw1MCBAQCB0cnlfdGhyZWFkX2RiX2xvYWQgKGNvbnN0IGNo YXIgKmxpYnJhcnkpCiAgIHJldHVybiAwOwogfQogCisvKiBIYW5kbGUgJHNk aXIgaW4gbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoLgorICAgTG9vayBmb3Ig bGlidGhyZWFkX2RiIGluIHRoZSBzeXN0ZW0gZGlycywgb3Igd2hlcmV2ZXIg YSBwbGFpbgorICAgZGxvcGVuKGZpbGVfd2l0aG91dF9wYXRoKSB3aWxsIGxv b2suCisgICBUaGUgcmVzdWx0IGlzIHRydWUgZm9yIHN1Y2Nlc3MuICAqLwor CiBzdGF0aWMgaW50Ci10aHJlYWRfZGJfbG9hZF9zZWFyY2ggKHZvaWQpCit0 cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9zZGlyICh2b2lkKQoreworICByZXR1 cm4gdHJ5X3RocmVhZF9kYl9sb2FkIChMSUJUSFJFQURfREJfU08pOworfQor CisvKiBUcnkgdG8gbG9hZCBsaWJ0aHJlYWRfZGIgZnJvbSBkaXJlY3Rvcnkg RElSIG9mIGxlbmd0aCBESVJfTEVOLgorICAgVGhlIHJlc3VsdCBpcyB0cnVl IGZvciBzdWNjZXNzLiAgKi8KKworc3RhdGljIGludAordHJ5X3RocmVhZF9k Yl9sb2FkX2Zyb21fZGlyIChjb25zdCBjaGFyICpkaXIsIHNpemVfdCBkaXJf bGVuKQogewogICBjaGFyIHBhdGhbUEFUSF9NQVhdOworCisgIGlmIChkaXJf bGVuICsgMSArIHN0cmxlbiAoTElCVEhSRUFEX0RCX1NPKSArIDEgPiBzaXpl b2YgKHBhdGgpKQorICAgIHsKKyAgICAgIGNoYXIgKmNwID0geG1hbGxvYyAo ZGlyX2xlbiArIDEpOworCisgICAgICBtZW1jcHkgKGNwLCBkaXIsIGRpcl9s ZW4pOworICAgICAgY3BbZGlyX2xlbl0gPSAnXDAnOworICAgICAgd2Fybmlu ZyAoXygibGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoIGNvbXBvbmVudCB0b28g bG9uZywiCisJCSAiIGlnbm9yZWQ6ICVzLiIpLCBjcCk7CisgICAgICBmcmVl IChjcCk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgbWVtY3B5IChw YXRoLCBkaXIsIGRpcl9sZW4pOworICBwYXRoW2Rpcl9sZW5dID0gJy8nOwor ICBzdHJjcHkgKHBhdGggKyBkaXJfbGVuICsgMSwgTElCVEhSRUFEX0RCX1NP KTsKKyAgcmV0dXJuIHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7Cit9CisK Ky8qIFNlYXJjaCBsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGggZm9yIGxpYnRo cmVhZF9kYiB3aGljaCAiYWdyZWVzIgorICAgdG8gd29yayBvbiBjdXJyZW50 IGluZmVyaW9yLgorICAgVGhlIHJlc3VsdCBpcyB0cnVlIGZvciBzdWNjZXNz LiAgKi8KKworc3RhdGljIGludAordGhyZWFkX2RiX2xvYWRfc2VhcmNoICh2 b2lkKQorewogICBjb25zdCBjaGFyICpzZWFyY2hfcGF0aDsKICAgaW50IHJj ID0gMDsKIApAQCAtNzEyLDQ5ICs3NTIsNDUgQEAgdGhyZWFkX2RiX2xvYWRf c2VhcmNoICh2b2lkKQogICB3aGlsZSAoKnNlYXJjaF9wYXRoKQogICAgIHsK ICAgICAgIGNvbnN0IGNoYXIgKmVuZCA9IHN0cmNociAoc2VhcmNoX3BhdGgs ICc6Jyk7CisgICAgICBjb25zdCBjaGFyICp0aGlzX2RpciA9IHNlYXJjaF9w YXRoOworICAgICAgc2l6ZV90IHRoaXNfZGlyX2xlbjsKKwogICAgICAgaWYg KGVuZCkKIAl7Ci0JICBzaXplX3QgbGVuID0gZW5kIC0gc2VhcmNoX3BhdGg7 Ci0JICBpZiAobGVuICsgMSArIHN0cmxlbiAoTElCVEhSRUFEX0RCX1NPKSAr IDEgPiBzaXplb2YgKHBhdGgpKQotCSAgICB7Ci0JICAgICAgY2hhciAqY3Ag PSB4bWFsbG9jIChsZW4gKyAxKTsKLQkgICAgICBtZW1jcHkgKGNwLCBzZWFy Y2hfcGF0aCwgbGVuKTsKLQkgICAgICBjcFtsZW5dID0gJ1wwJzsKLQkgICAg ICB3YXJuaW5nICgibGlidGhyZWFkX2RiX3NlYXJjaF9wYXRoIGNvbXBvbmVu dCB0b28gbG9uZywgIgotCQkgICAgICAgImlnbm9yZWQ6ICVzLiIsIGNwKTsK LQkgICAgICBmcmVlIChjcCk7Ci0JICAgICAgc2VhcmNoX3BhdGggKz0gbGVu ICsgMTsKLQkgICAgICBjb250aW51ZTsKLQkgICAgfQotCSAgbWVtY3B5IChw YXRoLCBzZWFyY2hfcGF0aCwgbGVuKTsKLQkgIHBhdGhbbGVuXSA9ICdcMCc7 Ci0JICBzZWFyY2hfcGF0aCArPSBsZW4gKyAxOworCSAgdGhpc19kaXJfbGVu ID0gZW5kIC0gc2VhcmNoX3BhdGg7CisJICBzZWFyY2hfcGF0aCArPSB0aGlz X2Rpcl9sZW4gKyAxOwogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBzaXplX3Qg bGVuID0gc3RybGVuIChzZWFyY2hfcGF0aCk7CisJICB0aGlzX2Rpcl9sZW4g PSBzdHJsZW4gKHRoaXNfZGlyKTsKKwkgIHNlYXJjaF9wYXRoICs9IHRoaXNf ZGlyX2xlbjsKKwl9CiAKLQkgIGlmIChsZW4gKyAxICsgc3RybGVuIChMSUJU SFJFQURfREJfU08pICsgMSA+IHNpemVvZiAocGF0aCkpCisgICAgICBpZiAo dGhpc19kaXJfbGVuID09IHNpemVvZiAoIiRwZGlyIikgLSAxCisJICAmJiBz dHJuY21wICh0aGlzX2RpciwgIiRwZGlyIiwgdGhpc19kaXJfbGVuKSA9PSAw KQorCXsKKwkgIC8qIFdlIGRvbid0IG1haW50YWluIGEgbGlzdCBvZiBsb2Fk ZWQgbGlicmFyaWVzIHNvIHdlIGRvbid0IGtub3cKKwkgICAgIHdoZXJlIGxp YnB0aHJlYWQgbGl2ZXMuICBXZSAqY291bGQqIGZldGNoIHRoZSBpbmZvLCBi dXQgd2UgZG9uJ3QKKwkgICAgIGRvIHRoYXQgeWV0LiAgSWdub3JlIGl0LiAg Ki8KKwl9CisgICAgICBlbHNlIGlmICh0aGlzX2Rpcl9sZW4gPT0gc2l6ZW9m ICgiJHNkaXIiKSAtIDEKKwkgICAgICAgJiYgc3RybmNtcCAodGhpc19kaXIs ICIkc2RpciIsIHRoaXNfZGlyX2xlbikgPT0gMCkKKwl7CisJICBpZiAodHJ5 X3RocmVhZF9kYl9sb2FkX2Zyb21fc2RpciAoKSkKIAkgICAgewotCSAgICAg IHdhcm5pbmcgKCJsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGggY29tcG9uZW50 IHRvbyBsb25nLCIKLQkJICAgICAgICIgaWdub3JlZDogJXMuIiwgc2VhcmNo X3BhdGgpOworCSAgICAgIHJjID0gMTsKIAkgICAgICBicmVhazsKIAkgICAg fQotCSAgbWVtY3B5IChwYXRoLCBzZWFyY2hfcGF0aCwgbGVuICsgMSk7Ci0J ICBzZWFyY2hfcGF0aCArPSBsZW47CiAJfQotICAgICAgc3RyY2F0IChwYXRo LCAiLyIpOwotICAgICAgc3RyY2F0IChwYXRoLCBMSUJUSFJFQURfREJfU08p OwotICAgICAgaWYgKGRlYnVnX3RocmVhZHMpCi0JZnByaW50ZiAoc3RkZXJy LCAidGhyZWFkX2RiX2xvYWRfc2VhcmNoIHRyeWluZyAlc1xuIiwgcGF0aCk7 Ci0gICAgICBpZiAodHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKSkKKyAgICAg IGVsc2UKIAl7Ci0JICByYyA9IDE7Ci0JICBicmVhazsKKwkgIGlmICh0cnlf dGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIgKHRoaXNfZGlyLCB0aGlzX2Rpcl9s ZW4pKQorCSAgICB7CisJICAgICAgcmMgPSAxOworCSAgICAgIGJyZWFrOwor CSAgICB9CiAJfQogICAgIH0KLSAgaWYgKHJjID09IDApCi0gICAgcmMgPSB0 cnlfdGhyZWFkX2RiX2xvYWQgKExJQlRIUkVBRF9EQl9TTyk7CiAKICAgaWYg KGRlYnVnX3RocmVhZHMpCiAgICAgZnByaW50ZiAoc3RkZXJyLCAidGhyZWFk X2RiX2xvYWRfc2VhcmNoIHJldHVybmluZyAlZFxuIiwgcmMpOwo= --00163630fbe1a2dedf04a32ff676--