From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Noam Postavsky Newsgroups: gmane.emacs.bugs Subject: bug#5845: load-library vs. list-load-path-shadows Date: Tue, 16 Jan 2018 10:54:42 -0500 Message-ID: References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a11444b92cede7c0562e6bf5b" X-Trace: blaine.gmane.org 1516118600 32158 195.159.176.226 (16 Jan 2018 16:03:20 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 16 Jan 2018 16:03:20 +0000 (UTC) To: 5845@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Jan 16 17:03:15 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ebThZ-0007MR-RZ for geb-bug-gnu-emacs@m.gmane.org; Tue, 16 Jan 2018 17:03:06 +0100 Original-Received: from localhost ([::1]:43798 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebTjZ-0005Xj-I2 for geb-bug-gnu-emacs@m.gmane.org; Tue, 16 Jan 2018 11:05:09 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54704) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebTZs-0005UN-Fz for bug-gnu-emacs@gnu.org; Tue, 16 Jan 2018 10:55:14 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebTZm-0006C3-Vm for bug-gnu-emacs@gnu.org; Tue, 16 Jan 2018 10:55:08 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:50987) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ebTZm-0006Bo-P4 for bug-gnu-emacs@gnu.org; Tue, 16 Jan 2018 10:55:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ebTZm-00038c-6m for bug-gnu-emacs@gnu.org; Tue, 16 Jan 2018 10:55:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 16 Jan 2018 15:55:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 5845 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 5845-submit@debbugs.gnu.org id=B5845.151611809112037 (code B ref 5845); Tue, 16 Jan 2018 15:55:02 +0000 Original-Received: (at 5845) by debbugs.gnu.org; 16 Jan 2018 15:54:51 +0000 Original-Received: from localhost ([127.0.0.1]:58884 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ebTZa-000383-Hy for submit@debbugs.gnu.org; Tue, 16 Jan 2018 10:54:50 -0500 Original-Received: from mail-wm0-f43.google.com ([74.125.82.43]:43025) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ebTZZ-00037q-JV for 5845@debbugs.gnu.org; Tue, 16 Jan 2018 10:54:49 -0500 Original-Received: by mail-wm0-f43.google.com with SMTP id g1so9313798wmg.2 for <5845@debbugs.gnu.org>; Tue, 16 Jan 2018 07:54:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:from:date:message-id:subject:to; bh=KNIbsoLxCeGwvISFC5FGrBYQ1Jay9w4xULro979rvtg=; b=YqSHN3bjLCrzHSyGgpvT0nnyWTYsBXE1nzhVeKMD8ZOtLHLK1xNLw7g3XV308a7a7b 6rShBAxXQCA2ph1613yPonGYwI9Qb9Z5BGhMysH7YPNQdTOfc5nC2xRhHn4qZrE3DZbL R3UrYOfE4tMNW8K7zqL7BMC2TWjE3PhrQB9cWuoppw6LVFI2U/q7F6k5n/KbYqQiOIA6 gLmPa0Cu7mTAKaYwcRcpH36m1c+yDeuJx5DtHATZ8flhwFDeMsmwVkiK033Da7bZdFjw W0vywkNTEgHn78NasLVuQaoG/a/9F4p/RGuFyf8XNVokN74r+CrEae6tXt9qU+KmS5wc lFXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to; bh=KNIbsoLxCeGwvISFC5FGrBYQ1Jay9w4xULro979rvtg=; b=d47u0YFoGKNeZhU0qGqS8IADVm90SjsHrR0t4j3dnqJB0NJFbWuv5X5dyO6P6QZAeo 9D8cyzH+rj79poCFaveZ1yFyjetkY/I6U8SyRGjDsJJmGB64mqUbmkJZuLdUm24+3CSb ySfpSdcjSddlz7+b8NSpXYUEwlrp9Mlk5VZi62dDgQQvCpIX/9wpg5FG6tyD5qdSoP/+ /ci255LO1CSaEV25Rdu1jok5QIlYBCTFCaOiGHQ0TFs4duF9hodxTvpNPDdLDbZN/JhB zcJCSs8YSfDHI+WobEB8tEXkIS7+OTS/BrwkJNq65Vwh6qtWkv90umrtcfADCrV6cTjL nExw== X-Gm-Message-State: AKwxytcDMaxZzmgen7/CnKHrtC/g9oa/dBdTdtvxnY8k1LGZANvOoVIt 6V2oSz5KuxBQl3PHPM56jpNVpYtfhsUHoExfEECmEw== X-Google-Smtp-Source: ACJfBovkRAVNTEtdsR6LA8Qgj47oKoOIQ/0G3daoHfV//R4Kvit4DNw4xBeXfMMkrW+O3BRYfeHvKSkN3Dax8ujiw2s= X-Received: by 10.28.8.135 with SMTP id 129mr14951811wmi.2.1516118083545; Tue, 16 Jan 2018 07:54:43 -0800 (PST) Original-Received: by 10.223.142.53 with HTTP; Tue, 16 Jan 2018 07:54:42 -0800 (PST) X-Google-Sender-Auth: mMIJ7S_pjKeP454QmB6OGWU0iBs X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:142201 Archived-At: --001a11444b92cede7c0562e6bf5b Content-Type: text/plain; charset="UTF-8" Should we just use case-insensitive compare for `windows-nt' systems? The idea of using "the same heuristics" as `load' sounds nice, but as far as I can tell, `load' just queries the file system directly. Doing the same in `load-path-shadow-find' is far too slow (raises execution time from 0.38s to 5.64s, and that's without any packages adding to the load-path). --- i/lisp/emacs-lisp/shadow.el +++ w/lisp/emacs-lisp/shadow.el @@ -123,7 +123,9 @@ load-path-shadows-find ;; XXX.elc (or vice-versa) when they are in the same directory. (setq files-seen-this-dir (cons file files-seen-this-dir)) - (if (setq orig-dir (assoc file files)) + (if (setq orig-dir (assoc file files + (if (memq system-type '(windows-nt ms-dos)) + (lambda (f1 f2) (eq (compare-strings f1 nil nil f2 nil nil t) t))))) ;; This file was seen before, we have a shadowing. ;; Report it unless the files are identical. (let ((base1 (concat (cdr orig-dir) "/" file)) --001a11444b92cede7c0562e6bf5b Content-Type: application/octet-stream; name="naive-shadow-list.el" Content-Disposition: attachment; filename="naive-shadow-list.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jb5mi5nx0 Ozs7IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotDQoNCihyZXF1aXJlICdzaGFkb3cpDQoNCih3 aGVuIG5pbA0KICAobmFpdmUtbG9hZC1wYXRoLXNoYWRvd3MtZmluZCkNCiAgJygiYzovVXNlcnMv bnBvc3RhdnMvc3JjL2VtYWNzL2J1Zy01ODQ1LWxvYWQtcGF0aC1jYXNlLXNoYWRvdy9BVVRIT1JT Ig0KICAgImM6L2VtYWNzLTI0LjUvc2hhcmUvZW1hY3MvMjQuNS9saXNwL2VtYWNzLWxpc3AvQVVU SE9SUy5lbGMiKQ0KDQogIChsb2FkLXBhdGgtc2hhZG93cy1maW5kKQ0KICBuaWwNCiAgKGxvYWQt cGF0aC1zaGFkb3dzLWZpbmQtdjIpDQogICcoImM6L1VzZXJzL25wb3N0YXZzL3NyYy9lbWFjcy9l bWFjcy0yNi9hZG1pbi9BVVRIT1JTIg0KICAgImM6L1VzZXJzL25wb3N0YXZzL3NyYy9lbWFjcy9i dWctNTg0NS1sb2FkLXBhdGgtY2FzZS1zaGFkb3cvQVVUSE9SUyIpDQogIA0KICAoYmVuY2htYXJr IDEgJyhsb2FkLXBhdGgtc2hhZG93cy1maW5kLXYyKSkNCiAgIkVsYXBzZWQgdGltZTogMC4zODE1 MDhzICgwLjAyODY4OXMgaW4gMSBHQ3MpIg0KDQogIChiZW5jaG1hcmsgMSAnKG5haXZlLWxvYWQt cGF0aC1zaGFkb3dzLWZpbmQpKQ0KICAiRWxhcHNlZCB0aW1lOiA1LjYzNzA0MHMgKDAuODI1MzE2 cyBpbiAyOSBHQ3MpIg0KDQogIChiZW5jaG1hcmsgMSAnKGxvYWQtcGF0aC1zaGFkb3dzLWZpbmQp KQ0KICAiRWxhcHNlZCB0aW1lOiAwLjEyMjAwMHMgKDAuMDE2MDAwcyBpbiAyIEdDcykiKQ0KDQoo ZGVmdW4gbG9hZC1wYXRoLXNoYWRvd3MtZmluZC12MiAoJm9wdGlvbmFsIHBhdGgpDQogICJSZXR1 cm4gYSBsaXN0IG9mIEVtYWNzIExpc3AgZmlsZXMgdGhhdCBjcmVhdGUgc2hhZG93cy4NClRoaXMg ZnVuY3Rpb24gZG9lcyB0aGUgd29yayBmb3IgYGxpc3QtbG9hZC1wYXRoLXNoYWRvd3MnLg0KDQpX ZSB0cmF2ZXJzZSBQQVRIIGxvb2tpbmcgZm9yIHNoYWRvd3MsIGFuZCByZXR1cm4gYSBcKHBvc3Np Ymx5IGVtcHR5KQ0KZXZlbi1sZW5ndGggbGlzdCBvZiBmaWxlcy4gIEEgZmlsZSBpbiB0aGlzIGxp c3QgYXQgcG9zaXRpb24gMmkgc2hhZG93cw0KdGhlIGZpbGUgaW4gcG9zaXRpb24gMmkrMS4gIEVt YWNzIExpc3AgZmlsZSBzdWZmaXhlcyBcKC5lbCBhbmQgLmVsYykNCmFyZSBzdHJpcHBlZCBmcm9t IHRoZSBmaWxlIG5hbWVzIGluIHRoZSBsaXN0Lg0KDQpTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9y IGBsaXN0LWxvYWQtcGF0aC1zaGFkb3dzJyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4iDQogIChs ZXQgKHRydWUtbmFtZXMJCQk7IExpc3Qgb2YgZGlycyBjb25zaWRlcmVkLg0KCXNoYWRvd3MJCQkJ OyBMaXN0IG9mIHNoYWRvd2luZ3MsIHRvIGJlIHJldHVybmVkLg0KCWZpbGVzCQkJCTsgRmlsZSBu YW1lcyBldmVyIHNlZW4sIHdpdGggZGlycy4NCglkaXIJCQkJOyBUaGUgZGlyIGJlaW5nIGN1cnJl bnRseSBzY2FubmVkLg0KCWN1cnItZmlsZXMJCQk7IFRoaXMgZGlyJ3MgRW1hY3MgTGlzcCBmaWxl cy4NCglvcmlnLWRpcgkJCTsgV2hlcmUgdGhlIGZpbGUgd2FzIGZpcnN0IHNlZW4uDQoJZmlsZXMt c2Vlbi10aGlzLWRpcgkJOyBGaWxlcyBzZWVuIHNvIGZhciBpbiB0aGlzIGRpci4NCgkpCQkJCTsg VGhlIGN1cnJlbnQgZmlsZS4NCiAgICAoZG9saXN0IChwcCAob3IgcGF0aCBsb2FkLXBhdGgpKQ0K ICAgICAgKHNldHEgZGlyIChkaXJlY3RvcnktZmlsZS1uYW1lIChmaWxlLXRydWVuYW1lIChvciBw cCAiLiIpKSkpDQogICAgICAoaWYgKG1lbWJlciBkaXIgdHJ1ZS1uYW1lcykNCgkgIDs7IFdlIGhh dmUgYWxyZWFkeSBjb25zaWRlcmVkIHRoaXMgUEFUSCByZWR1bmRhbnQgZGlyZWN0b3J5Lg0KCSAg OzsgU2hvdyB0aGUgcmVkdW5kYW5jeSBpZiB3ZSBhcmUgaW50ZXJhY3RpdmUsIHVubGVzcyB0aGUg UEFUSA0KCSAgOzsgZGlyIGlzIG5pbCBvciAiLiIgKHRoZXNlIHJlZHVuZGFudCBkaXJlY3Rvcmll cyBhcmUganVzdCBhDQoJICA7OyByZXN1bHQgb2YgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rv cnksIGFuZCBhcmUgdGhlcmVmb3JlDQoJICA7OyBub3QgYWx3YXlzIHJlZHVuZGFudCkuDQoJICAo b3Igbm9uaW50ZXJhY3RpdmUNCgkgICAgICAoYW5kIHBwDQoJCSAgIChub3QgKHN0cmluZz0gcHAg Ii4iKSkNCgkJICAgKG1lc3NhZ2UgIklnbm9yaW5nIHJlZHVuZGFudCBkaXJlY3RvcnkgJXMiIHBw KSkpDQoNCgkoc2V0cSB0cnVlLW5hbWVzIChhcHBlbmQgdHJ1ZS1uYW1lcyAobGlzdCBkaXIpKSkN Cgkoc2V0cSBkaXIgKGRpcmVjdG9yeS1maWxlLW5hbWUgKG9yIHBwICIuIikpKQ0KCShzZXRxIGN1 cnItZmlsZXMgKGlmIChmaWxlLWFjY2Vzc2libGUtZGlyZWN0b3J5LXAgZGlyKQ0KCQkJICAgICAo ZGlyZWN0b3J5LWZpbGVzIGRpciBuaWwgIi5cXC5lbGM/XFwoXFwuZ3pcXCk/JCIgdCkpKQ0KCShh bmQgY3Vyci1maWxlcw0KCSAgICAgKG5vdCBub25pbnRlcmFjdGl2ZSkNCgkgICAgIChtZXNzYWdl ICJDaGVja2luZyAlZCBmaWxlcyBpbiAlcy4uLiIgKGxlbmd0aCBjdXJyLWZpbGVzKSBkaXIpKQ0K DQoJKHNldHEgZmlsZXMtc2Vlbi10aGlzLWRpciBuaWwpDQoNCgkoZG9saXN0IChmaWxlIGN1cnIt ZmlsZXMpDQoNCgkgIChpZiAoc3RyaW5nLW1hdGNoICJcXC5neiQiIGZpbGUpDQoJICAgICAgKHNl dHEgZmlsZSAoc3Vic3RyaW5nIGZpbGUgMCAtMykpKQ0KCSAgKHNldHEgZmlsZSAoc3Vic3RyaW5n DQoJCSAgICAgIGZpbGUgMCAoaWYgKHN0cmluZz0gKHN1YnN0cmluZyBmaWxlIC0xKSAiYyIpIC00 IC0zKSkpDQoNCgkgIDs7IEZJTEUgbm93IGNvbnRhaW5zIHRoZSBjdXJyZW50IGZpbGUgbmFtZSwg d2l0aCBubyBzdWZmaXguDQoJICAodW5sZXNzIChvciAobWVtYmVyIGZpbGUgZmlsZXMtc2Vlbi10 aGlzLWRpcikNCgkJICAgICAgOzsgSWdub3JlIHRoZXNlIGZpbGVzLg0KCQkgICAgICAobWVtYmVy IGZpbGUgKGxpc3QgInN1YmRpcnMiICJsZWltLWxpc3QiDQoJCQkJCSAoZmlsZS1uYW1lLXNhbnMt ZXh0ZW5zaW9uDQoJCQkJCSAgZGlyLWxvY2Fscy1maWxlKSkpKQ0KCSAgICA7OyBGaWxlIGhhcyBu b3QgYmVlbiBzZWVuIHlldCBpbiB0aGlzIGRpcmVjdG9yeS4NCgkgICAgOzsgVGhpcyB0ZXN0IHBy ZXZlbnRzIHVzIGRlY2xhcmluZyB0aGF0IFhYWC5lbCBzaGFkb3dzDQoJICAgIDs7IFhYWC5lbGMg KG9yIHZpY2UtdmVyc2EpIHdoZW4gdGhleSBhcmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lg0KCSAg ICAoc2V0cSBmaWxlcy1zZWVuLXRoaXMtZGlyIChjb25zIGZpbGUgZmlsZXMtc2Vlbi10aGlzLWRp cikpDQoNCgkgICAgKGlmIChzZXRxIG9yaWctZGlyIChhc3NvYyBmaWxlIGZpbGVzDQoJCQkJICAg ICAgKGlmIChtZW1xIHN5c3RlbS10eXBlICcod2luZG93cy1udCBtcy1kb3MpKQ0KCQkJCQkgIChs YW1iZGEgKGYxIGYyKSAoZXEgKGNvbXBhcmUtc3RyaW5ncyBmMSBuaWwgbmlsIGYyIG5pbCBuaWwg dCkgdCkpKSkpDQoJCQkJCQkgICANCgkJOzsgVGhpcyBmaWxlIHdhcyBzZWVuIGJlZm9yZSwgd2Ug aGF2ZSBhIHNoYWRvd2luZy4NCgkJOzsgUmVwb3J0IGl0IHVubGVzcyB0aGUgZmlsZXMgYXJlIGlk ZW50aWNhbC4NCgkJKGxldCAoKGJhc2UxIChjb25jYXQgKGNkciBvcmlnLWRpcikgIi8iIGZpbGUp KQ0KCQkgICAgICAoYmFzZTIgKGNvbmNhdCBkaXIgIi8iIGZpbGUpKSkNCgkJICAoaWYgKG5vdCAo YW5kIGxvYWQtcGF0aC1zaGFkb3dzLWNvbXBhcmUtdGV4dA0KCQkJCShsb2FkLXBhdGgtc2hhZG93 cy1zYW1lLWZpbGUtb3Itbm9uZXhpc3RlbnQNCgkJCQkgKGNvbmNhdCBiYXNlMSAiLmVsIikgKGNv bmNhdCBiYXNlMiAiLmVsIikpDQoJCQkJOzsgVGhpcyBpcyBhIGJpdCBzdHJpY3QsIGJ1dCBzYWZl Lg0KCQkJCShsb2FkLXBhdGgtc2hhZG93cy1zYW1lLWZpbGUtb3Itbm9uZXhpc3RlbnQNCgkJCQkg KGNvbmNhdCBiYXNlMSAiLmVsYyIpIChjb25jYXQgYmFzZTIgIi5lbGMiKSkpKQ0KCQkgICAgICAo c2V0cSBzaGFkb3dzDQoJCQkgICAgKGFwcGVuZCBzaGFkb3dzIChsaXN0IGJhc2UxIGJhc2UyKSkp KSkNCg0KCSAgICAgIDs7IE5vdCBzZWVuIGJlZm9yZSwgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHNl ZW4gZmlsZXMuDQoJICAgICAgKHNldHEgZmlsZXMgKGNvbnMgKGNvbnMgZmlsZSBkaXIpIGZpbGVz KSkpKSkpKQ0KICAgIDs7IFJldHVybiB0aGUgbGlzdCBvZiBzaGFkb3dpbmdzLg0KICAgIHNoYWRv d3MpKQ0KDQooZGVmdW4gbmFpdmUtbG9hZC1wYXRoLXNoYWRvd3MtZmluZCAoJm9wdGlvbmFsIHBh dGgpDQogICJSZXR1cm4gYSBsaXN0IG9mIEVtYWNzIExpc3AgZmlsZXMgdGhhdCBjcmVhdGUgc2hh ZG93cy4NClRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgd29yayBmb3IgYGxpc3QtbG9hZC1wYXRoLXNo YWRvd3MnLg0KDQpXZSB0cmF2ZXJzZSBQQVRIIGxvb2tpbmcgZm9yIHNoYWRvd3MsIGFuZCByZXR1 cm4gYSBcKHBvc3NpYmx5IGVtcHR5XCkNCmV2ZW4tbGVuZ3RoIGxpc3Qgb2YgZmlsZXMuICBBIGZp bGUgaW4gdGhpcyBsaXN0IGF0IHBvc2l0aW9uIDJpIHNoYWRvd3MNCnRoZSBmaWxlIGluIHBvc2l0 aW9uIDJpKzEuICBFbWFjcyBMaXNwIGZpbGUgc3VmZml4ZXMgXCguZWwgYW5kIC5lbGNcKQ0KYXJl IHN0cmlwcGVkIGZyb20gdGhlIGZpbGUgbmFtZXMgaW4gdGhlIGxpc3QuDQoNClNlZSB0aGUgZG9j dW1lbnRhdGlvbiBmb3IgYGxpc3QtbG9hZC1wYXRoLXNoYWRvd3MnIGZvciBmdXJ0aGVyIGluZm9y bWF0aW9uLiINCiAgKGxldCAoKHRydWUtbmFtZXMgbmlsKQ0KICAgICAgICAocGF0aCAob3IgcGF0 aCBsb2FkLXBhdGgpKQ0KICAgICAgICAoc2hhZG93cyBuaWwpKQ0KICAgICh3aGlsZSAoY2RyIHBh dGgpDQogICAgICAobGV0KiAoKHBwIChwb3AgcGF0aCkpDQogICAgICAgICAgICAgKGRpciAoZGly ZWN0b3J5LWZpbGUtbmFtZSAoZmlsZS10cnVlbmFtZSAob3IgcHAgIi4iKSkpKQ0KICAgICAgICAg ICAgIGN1cnItZmlsZXMpDQogICAgICAgIChpZiAobWVtYmVyIGRpciB0cnVlLW5hbWVzKQ0KICAg ICAgICAgICAgOzsgV2UgaGF2ZSBhbHJlYWR5IGNvbnNpZGVyZWQgdGhpcyBQQVRIIHJlZHVuZGFu dCBkaXJlY3RvcnkuDQogICAgICAgICAgICA7OyBTaG93IHRoZSByZWR1bmRhbmN5IGlmIHdlIGFy ZSBpbnRlcmFjdGl2ZSwgdW5sZXNzIHRoZSBQQVRIDQogICAgICAgICAgICA7OyBkaXIgaXMgbmls IG9yICIuIiAodGhlc2UgcmVkdW5kYW50IGRpcmVjdG9yaWVzIGFyZSBqdXN0IGENCiAgICAgICAg ICAgIDs7IHJlc3VsdCBvZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgYW5kIGFyZSB0 aGVyZWZvcmUNCiAgICAgICAgICAgIDs7IG5vdCBhbHdheXMgcmVkdW5kYW50KS4NCiAgICAgICAg ICAgIChvciBub25pbnRlcmFjdGl2ZQ0KICAgICAgICAgICAgICAgIChhbmQgcHANCiAgICAgICAg ICAgICAgICAgICAgIChub3QgKHN0cmluZz0gcHAgIi4iKSkNCiAgICAgICAgICAgICAgICAgICAg IChtZXNzYWdlICJJZ25vcmluZyByZWR1bmRhbnQgZGlyZWN0b3J5ICVzIiBwcCkpKQ0KDQogICAg ICAgICAgKHNldHEgdHJ1ZS1uYW1lcyAoYXBwZW5kIHRydWUtbmFtZXMgKGxpc3QgZGlyKSkpDQog ICAgICAgICAgKHNldHEgZGlyIChkaXJlY3RvcnktZmlsZS1uYW1lIChvciBwcCAiLiIpKSkNCiAg ICAgICAgICAoc2V0cSBjdXJyLWZpbGVzIChpZiAoZmlsZS1hY2Nlc3NpYmxlLWRpcmVjdG9yeS1w IGRpcikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlyZWN0b3J5LWZpbGVzIGRp ciBuaWwgIi5cXC5lbGM/XFwoXFwuZ3pcXCk/JCIgdCkpKQ0KICAgICAgICAgIChhbmQgY3Vyci1m aWxlcw0KICAgICAgICAgICAgICAgKG5vdCBub25pbnRlcmFjdGl2ZSkNCiAgICAgICAgICAgICAg IChtZXNzYWdlICJDaGVja2luZyAlZCBmaWxlcyBpbiAlcy4uLiIgKGxlbmd0aCBjdXJyLWZpbGVz KSBkaXIpKQ0KDQogICAgICAgICAgKGRvbGlzdCAoZmlsZSBjdXJyLWZpbGVzKQ0KDQogICAgICAg ICAgICAoaWYgKHN0cmluZy1tYXRjaCAiXFwuZ3okIiBmaWxlKQ0KICAgICAgICAgICAgICAgIChz ZXRxIGZpbGUgKHN1YnN0cmluZyBmaWxlIDAgLTMpKSkNCiAgICAgICAgICAgIChzZXRxIGZpbGUg KHN1YnN0cmluZw0KICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSAwIChpZiAoc3RyaW5nPSAo c3Vic3RyaW5nIGZpbGUgLTEpICJjIikgLTQgLTMpKSkNCg0KICAgICAgICAgICAgOzsgRklMRSBu b3cgY29udGFpbnMgdGhlIGN1cnJlbnQgZmlsZSBuYW1lLCB3aXRoIG5vIHN1ZmZpeC4NCiAgICAg ICAgICAgICh1bmxlc3MNCiAgICAgICAgICAgICAgICA7OyBJZ25vcmUgdGhlc2UgZmlsZXMuDQog ICAgICAgICAgICAgICAgKG1lbWJlciBmaWxlIChsaXN0ICJzdWJkaXJzIiAibGVpbS1saXN0Ig0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5z aW9uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXItbG9jYWxzLWZpbGUp KSkNCiAgICAgICAgICAgICAgKGxldCAoKHNoYWRvd2VkIChsb2NhdGUtbGlicmFyeSBmaWxlIG5p bCBwYXRoKSkpDQogICAgICAgICAgICAgICAgKHdoZW4gc2hhZG93ZWQNCiAgICAgICAgICAgICAg ICAgIChzZXRxIHNoYWRvd3MgKGFwcGVuZCBzaGFkb3dzIChsaXN0IChjb25jYXQgcHAgIi8iIGZp bGUpIHNoYWRvd2VkKSkpKSkpKSkpKQ0KICAgIHNoYWRvd3MpKQ0K --001a11444b92cede7c0562e6bf5b--