From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#51622: 29.0.50; [PATCH v2] Abbreviate remote home directories in `abbreviate-file-name' Date: Sun, 7 Nov 2021 20:54:25 -0800 Message-ID: References: <5ac0b5f3-302c-2f96-771c-8d38088aa573@gmail.com> <87mtmhmh60.fsf@gmx.de> <87a6ihchbo.fsf@gmx.de> <87sfw7u7zw.fsf@gmx.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------B36EBEDB0154B043363706E1" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36830"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 51622@debbugs.gnu.org To: Michael Albinus Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Nov 08 05:55:34 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mjwgv-0009O8-SJ for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 08 Nov 2021 05:55:33 +0100 Original-Received: from localhost ([::1]:56786 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mjwgu-0005d3-DT for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 07 Nov 2021 23:55:32 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:58222) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mjwgQ-0005cu-Sv for bug-gnu-emacs@gnu.org; Sun, 07 Nov 2021 23:55:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:44083) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mjwgQ-00068L-Jz for bug-gnu-emacs@gnu.org; Sun, 07 Nov 2021 23:55:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mjwgQ-0000se-Ft for bug-gnu-emacs@gnu.org; Sun, 07 Nov 2021 23:55:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 08 Nov 2021 04:55:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51622 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 51622-submit@debbugs.gnu.org id=B51622.16363472743343 (code B ref 51622); Mon, 08 Nov 2021 04:55:02 +0000 Original-Received: (at 51622) by debbugs.gnu.org; 8 Nov 2021 04:54:34 +0000 Original-Received: from localhost ([127.0.0.1]:55629 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mjwfy-0000rq-2h for submit@debbugs.gnu.org; Sun, 07 Nov 2021 23:54:34 -0500 Original-Received: from mail-pf1-f172.google.com ([209.85.210.172]:45728) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mjwfv-0000rc-Pj for 51622@debbugs.gnu.org; Sun, 07 Nov 2021 23:54:32 -0500 Original-Received: by mail-pf1-f172.google.com with SMTP id x131so9645118pfc.12 for <51622@debbugs.gnu.org>; Sun, 07 Nov 2021 20:54:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language; bh=MII4t2qNHRNftjdwNYJ9BYwFQdqc3g3BAzvXrS6C25c=; b=J22hadfiSOXaqB2MIK70FnguZAFEiJoti4nytSstnNHYq4nxpUFyGAEH7X8KTIlvTY 1znUIeqgJrgvxg7Vw5obCe3paCVlvAhFyLkokPG9FCYIXTlMIZDC3dVnOEECGZhChL52 lfHsm+FEyWvxyYqEklkj40TDZFziq6btuQeDID1pzwecLf//a83TtovhN5qTu8QOEBM4 v0uoUbR1r+IIRuEbMJhF4J7EGdGdifpRF/HoRqe6Iwy4G94/po+BkxgQvO3e2c8qjfCb UIhZWnUhpQcG8ShyHZqC+muBkkZhW8RInaDUkPkbWh9pW+VFVvwMAHLmEBrKnL2giL9G CqRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language; bh=MII4t2qNHRNftjdwNYJ9BYwFQdqc3g3BAzvXrS6C25c=; b=kYri1y3LFRveyZmzLVrnDyt7cvaD4r2oEHM6BYH7vHWT0WhsvGuk1kCr2Sirg0GYaK 4pJtcfgcuN1oknOO6B8suz6UVtV4P6K0UQdx4k9BpNcAcWyFvyoHLvVHeOiiq4scI9rU onTX1NxkmOzdJy5pAoXb/pWU8VLckP7prwjS32cY03FDqKUTpdJxUeh9JX2oJZPAzPCw 1AYhjc7WnXmx56WqMt1yuC/xWSrnrZI+TzKq6TKErhN+BCk3Vc1tcS1dcdi7ffPwA06B JUWOZq6iwywPdmLMl5VguYpM2DlaipBgpRtUkqHUA2/iTQHsKCWv9CX2Ygp5s5Vio/Gi 2AXQ== X-Gm-Message-State: AOAM53115yy1nhlcmc3S05IA8EUGR/m11qjRBjyk4sNUiOQSTfgpPwvZ e/mVo8xscsQwSc8cgs1o0M/+iTTHmi4= X-Google-Smtp-Source: ABdhPJwNF8/03pCqViBDrnIKixbTA3ZuP2qGL+EK4nHlENYuc+lEvLhkC9nA/Zlj4TIdvISDCc2/kQ== X-Received: by 2002:a63:9348:: with SMTP id w8mr58959833pgm.325.1636347265760; Sun, 07 Nov 2021 20:54:25 -0800 (PST) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id na15sm16171025pjb.31.2021.11.07.20.54.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 07 Nov 2021 20:54:25 -0800 (PST) In-Reply-To: <87sfw7u7zw.fsf@gmx.de> Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:219313 Archived-At: This is a multi-part message in MIME format. --------------B36EBEDB0154B043363706E1 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 11/7/2021 10:37 AM, Michael Albinus wrote: > Jim Porter writes: > >> Thanks for the pointers. I've attached a new version of the patch, >> along with updated benchmark results. When abbreviating Tramp files, >> not only is this version faster than my previous patch, it's also 2-4x >> faster(!) than Emacs trunk. > > Thanks, it looks very promising. According to the benchmarks I'm not > surprised, because you use Tramp caches. Hmm, actually it turns out that my patch was only this fast because I forgot to check whether the host has case-sensitive file names or not. Adding that check back in slows things down again. How I update my previous patch will depend on whether we can make `file-name-case-insensitive-p' fast for Tramp files, so I'll just focus on this part for now and then follow up on the other parts of your message after we've decided on what to do here. Currently on case-sensitive hosts, `tramp-handle-file-name-case-insensitive-p' performs its checks on the connection every time this function is called. The beginning of tramp.el says the following: * `tramp-case-insensitive' Whether the remote file system handles file names case insensitive. Only a non-nil value counts, the default value nil means to perform further checks on the remote host. See `tramp-connection-properties' for a way to overwrite this. I interpret this to mean that Tramp *intentionally* performs checks on the host every time if the result is nil. Is there a reason this is necessary? Are there any systems out there where the check would return nil, but it's still case-insensitive in some cases? Even if there are, I imagine that *most* of the time, this check is reliable, and it would be nice if we could cache the result for case-sensitive hosts. I've attached the beginnings of a patch to do this. What do you think? If the general idea makes sense, I'll finish it up and file a separate bug to track it. If Tramp needs to perform the checks every time for some remote hosts, maybe the user could set `tramp-case-insensitive' to `never-cache' for those connections? > Thanks. I've kept that patch on hold for a while. During my illness, it > got applied, and so you did the dirty task to rearrange everything. I've > pushed it in your name to the master branch. Thanks. I hope your health is doing better now. Thanks again for taking a look at this patch (and merging the two smaller ones). --------------B36EBEDB0154B043363706E1 Content-Type: text/plain; charset=UTF-8; name="tramp-cache-case-sensitive.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tramp-cache-case-sensitive.patch" ZGlmZiAtLWdpdCBhL2xpc3AvbmV0L3RyYW1wLmVsIGIvbGlzcC9uZXQvdHJhbXAuZWwKaW5k ZXggNzQwY2IyM2ViZS4uOTM5M2NmZTU4OSAxMDA2NDQKLS0tIGEvbGlzcC9uZXQvdHJhbXAu ZWwKKysrIGIvbGlzcC9uZXQvdHJhbXAuZWwKQEAgLTE0NjksMjEgKzE0NjksMjIgQEAgdHJh bXAtZmlsZS1uYW1lLWVxdWFsLXAKICAgICAgICAoZXF1YWwgKHRyYW1wLWZpbGUtbmFtZS11 bmlmeSB2ZWMxKQogCSAgICAgICh0cmFtcC1maWxlLW5hbWUtdW5pZnkgdmVjMikpKSkKIAot KGRlZnVuIHRyYW1wLWdldC1tZXRob2QtcGFyYW1ldGVyICh2ZWMgcGFyYW0pCisoZGVmdW4g dHJhbXAtZ2V0LW1ldGhvZC1wYXJhbWV0ZXIgKHZlYyBwYXJhbSAmb3B0aW9uYWwgZGVmYXVs dCkKICAgIlJldHVybiB0aGUgbWV0aG9kIHBhcmFtZXRlciBQQVJBTS4KIElmIFZFQyBpcyBh IHZlY3RvciwgY2hlY2sgZmlyc3QgaW4gY29ubmVjdGlvbiBwcm9wZXJ0aWVzLgogQWZ0ZXJ3 YXJkcywgY2hlY2sgaW4gYHRyYW1wLW1ldGhvZHMnLiAgSWYgdGhlIGB0cmFtcC1tZXRob2Rz JwotZW50cnkgZG9lcyBub3QgZXhpc3QsIHJldHVybiBuaWwuIgorZW50cnkgZG9lcyBub3Qg ZXhpc3QsIHJldHVybiBERUZBVUxULiIKICAgKGxldCAoKGhhc2gtZW50cnkKIAkgKHJlcGxh Y2UtcmVnZXhwLWluLXN0cmluZyAiXnRyYW1wLSIgIiIgKHN5bWJvbC1uYW1lIHBhcmFtKSkp KQogICAgIChpZiAodHJhbXAtY29ubmVjdGlvbi1wcm9wZXJ0eS1wIHZlYyBoYXNoLWVudHJ5 KQogCTs7IFdlIHVzZSB0aGUgY2FjaGVkIHByb3BlcnR5LgotCSh0cmFtcC1nZXQtY29ubmVj dGlvbi1wcm9wZXJ0eSB2ZWMgaGFzaC1lbnRyeSBuaWwpCisJKHRyYW1wLWdldC1jb25uZWN0 aW9uLXByb3BlcnR5IHZlYyBoYXNoLWVudHJ5IGRlZmF1bHQpCiAgICAgICA7OyBVc2UgdGhl IHN0YXRpYyB2YWx1ZSBmcm9tIGB0cmFtcC1tZXRob2RzJy4KLSAgICAgICh3aGVuLWxldCAo KG1ldGhvZHMtZW50cnkKLQkJICAoYXNzb2MKLQkJICAgcGFyYW0gKGFzc29jICh0cmFtcC1m aWxlLW5hbWUtbWV0aG9kIHZlYykgdHJhbXAtbWV0aG9kcykpKSkKLQkoY2FkciBtZXRob2Rz LWVudHJ5KSkpKSkKKyAgICAgIChpZi1sZXQgKChtZXRob2RzLWVudHJ5CisJCShhc3NvYwor CQkgcGFyYW0gKGFzc29jICh0cmFtcC1maWxlLW5hbWUtbWV0aG9kIHZlYykgdHJhbXAtbWV0 aG9kcykpKSkKKwkgIChjYWRyIG1ldGhvZHMtZW50cnkpCisgICAgICAgIGRlZmF1bHQpKSkp CiAKIDs7IFRoZSBsb2NhbG5hbWUgY2FuIGJlIHF1b3RlZCB3aXRoICIvOiIuICBFeHRyYWN0 IHRoaXMuCiAoZGVmdW4gdHJhbXAtZmlsZS1uYW1lLXVucXVvdGUtbG9jYWxuYW1lICh2ZWMp CkBAIC0zNDgyLDUxICszNDgzLDU3IEBAIHRyYW1wLWhhbmRsZS1maWxlLW5hbWUtY2FzZS1p bnNlbnNpdGl2ZS1wCiAgIDs7IHRlc3RzIHdpbGwgYmUgYWRkZWQgaW4gY2FzZSB0aGV5IGFy ZSBuZWVkZWQuCiAgIChzZXRxIGZpbGVuYW1lIChleHBhbmQtZmlsZS1uYW1lIGZpbGVuYW1l KSkKICAgKHdpdGgtcGFyc2VkLXRyYW1wLWZpbGUtbmFtZSBmaWxlbmFtZSBuaWwKLSAgICAo b3IgOzsgTWF5YmUgdGhlcmUgaXMgYSBkZWZhdWx0IHZhbHVlLgotICAgICAodHJhbXAtZ2V0 LW1ldGhvZC1wYXJhbWV0ZXIgdiAndHJhbXAtY2FzZS1pbnNlbnNpdGl2ZSkKLQotICAgICA7 OyBUaGVyZSBpc24ndC4gIFNvIHdlIG11c3QgY2hlY2ssIGluIGNhc2UgdGhlcmUncyBhIGNv bm5lY3Rpb24gYWxyZWFkeS4KLSAgICAgKGFuZCAoZmlsZS1yZW1vdGUtcCBmaWxlbmFtZSBu aWwgJ2Nvbm5lY3RlZCkKLSAgICAgICAgICAod2l0aC10cmFtcC1jb25uZWN0aW9uLXByb3Bl cnR5IHYgImNhc2UtaW5zZW5zaXRpdmUiCi0JICAgIChpZ25vcmUtZXJyb3JzCi0JICAgICAg KHdpdGgtdHJhbXAtcHJvZ3Jlc3MtcmVwb3J0ZXIgdiA1ICJDaGVja2luZyBjYXNlLWluc2Vu c2l0aXZlIgotCQk7OyBUaGUgaWRlYSBpcyB0byBjb21wYXJlIGEgZmlsZSB3aXRoIGxvd2Vy IGNhc2UKLQkJOzsgbGV0dGVycyB3aXRoIHRoZSBzYW1lIGZpbGUgd2l0aCB1cHBlciBjYXNl IGxldHRlcnMuCi0JCShsZXQgKChjYW5kaWRhdGUKLQkJICAgICAgICh0cmFtcC1jb21wYXQt ZmlsZS1uYW1lLXVucXVvdGUKLQkJCShkaXJlY3RvcnktZmlsZS1uYW1lIGZpbGVuYW1lKSkp Ci0JCSAgICAgIGNhc2UtZm9sZC1zZWFyY2gKLQkJICAgICAgdG1wZmlsZSkKLQkJICA7OyBD aGVjaywgd2hldGhlciB3ZSBmaW5kIGFuIGV4aXN0aW5nIGZpbGUgd2l0aAotCQkgIDs7IGxv d2VyIGNhc2UgbGV0dGVycy4gIFRoaXMgYXZvaWRzIHVzIHRvIGNyZWF0ZSBhCi0JCSAgOzsg dGVtcG9yYXJ5IGZpbGUuCi0JCSAgKHdoaWxlIChhbmQgKHN0cmluZy1tYXRjaC1wCi0JCQkg ICAgICAgIltbOmxvd2VyOl1dIiAodHJhbXAtZmlsZS1sb2NhbC1uYW1lIGNhbmRpZGF0ZSkp Ci0JCQkgICAgICAobm90IChmaWxlLWV4aXN0cy1wIGNhbmRpZGF0ZSkpKQotCQkgICAgKHNl dHEgY2FuZGlkYXRlCi0JCQkgIChkaXJlY3RvcnktZmlsZS1uYW1lCi0JCQkgICAoZmlsZS1u YW1lLWRpcmVjdG9yeSBjYW5kaWRhdGUpKSkpCi0JCSAgOzsgTm90aGluZyBmb3VuZCwgc28g d2UgbXVzdCB1c2UgYSB0ZW1wb3JhcnkgZmlsZQotCQkgIDs7IGZvciBjb21wYXJpc29uLiAg YG1ha2UtbmVhcmJ5LXRlbXAtZmlsZScgaXMgYWRkZWQKLQkJICA7OyB0byBFbWFjcyAyNisg bGlrZSBgZmlsZS1uYW1lLWNhc2UtaW5zZW5zaXRpdmUtcCcsCi0JCSAgOzsgc28gdGhlcmUg aXMgbm8gY29tcGF0aWJpbGl0eSBwcm9ibGVtIGNhbGxpbmcgaXQuCi0JCSAgKHVubGVzcyAo c3RyaW5nLW1hdGNoLXAKLQkJCSAgICJbWzpsb3dlcjpdXSIgKHRyYW1wLWZpbGUtbG9jYWwt bmFtZSBjYW5kaWRhdGUpKQotCQkgICAgKHNldHEgdG1wZmlsZQotCQkJICAobGV0ICgoZGVm YXVsdC1kaXJlY3RvcnkKLQkJCQkgIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGVuYW1lKSkp Ci0JCQkgICAgKHRyYW1wLWNvbXBhdC1mdW5jYWxsCi0JCQkgICAgICdtYWtlLW5lYXJieS10 ZW1wLWZpbGUgInRyYW1wLiIpKQotCQkJICBjYW5kaWRhdGUgdG1wZmlsZSkpCi0JCSAgOzsg Q2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIHNhbWUgZmlsZSB3aXRoCi0JCSAgOzsg dXBwZXIgY2FzZSBsZXR0ZXJzLgotCQkgICh1bndpbmQtcHJvdGVjdAotCQkgICAgICAoZmls ZS1leGlzdHMtcAotCQkgICAgICAgKGNvbmNhdAotCQkJKGZpbGUtcmVtb3RlLXAgY2FuZGlk YXRlKQotCQkJKHVwY2FzZSAodHJhbXAtZmlsZS1sb2NhbC1uYW1lIGNhbmRpZGF0ZSkpKSkK LQkJICAgIDs7IENsZWFudXAuCi0JCSAgICAod2hlbiB0bXBmaWxlIChkZWxldGUtZmlsZSB0 bXBmaWxlKSkpKSkpKSkpKSkKKyAgICAobGV0ICgoY2FzZS1pbnNlbnNpdGl2ZQorCSAgICh0 cmFtcC1nZXQtbWV0aG9kLXBhcmFtZXRlciB2ICd0cmFtcC1jYXNlLWluc2Vuc2l0aXZlICd1 bnNldCkpKQorICAgICAgKGlmIChub3QgKGVxIGNhc2UtaW5zZW5zaXRpdmUgJ3Vuc2V0KSkK KwkgIDs7IE1heWJlIHRoZXJlIGlzIGEgZGVmYXVsdCB2YWx1ZS4KKwkgIGNhc2UtaW5zZW5z aXRpdmUKKwk7OyBUaGVyZSBpc24ndC4gIFNvIHdlIG11c3QgY2hlY2ssIGluIGNhc2UgdGhl cmUncyBhCisJOzsgY29ubmVjdGlvbiBhbHJlYWR5LgorCShhbmQgKGZpbGUtcmVtb3RlLXAg ZmlsZW5hbWUgbmlsICdjb25uZWN0ZWQpCisJICAgICAod2l0aC10cmFtcC1jb25uZWN0aW9u LXByb3BlcnR5IHYgImNhc2UtaW5zZW5zaXRpdmUiCisJICAgICAgIChpZ25vcmUtZXJyb3Jz CisJCSAod2l0aC10cmFtcC1wcm9ncmVzcy1yZXBvcnRlciB2IDUgIkNoZWNraW5nIGNhc2Ut aW5zZW5zaXRpdmUiCisJCSAgIDs7IFRoZSBpZGVhIGlzIHRvIGNvbXBhcmUgYSBmaWxlIHdp dGggbG93ZXIgY2FzZQorCQkgICA7OyBsZXR0ZXJzIHdpdGggdGhlIHNhbWUgZmlsZSB3aXRo IHVwcGVyIGNhc2UKKwkJICAgOzsgbGV0dGVycy4KKwkJICAgKGxldCAoKGNhbmRpZGF0ZQor CQkJICAodHJhbXAtY29tcGF0LWZpbGUtbmFtZS11bnF1b3RlCisJCQkgICAoZGlyZWN0b3J5 LWZpbGUtbmFtZSBmaWxlbmFtZSkpKQorCQkJIGNhc2UtZm9sZC1zZWFyY2gKKwkJCSB0bXBm aWxlKQorCQkgICAgIDs7IENoZWNrLCB3aGV0aGVyIHdlIGZpbmQgYW4gZXhpc3RpbmcgZmls ZSB3aXRoCisJCSAgICAgOzsgbG93ZXIgY2FzZSBsZXR0ZXJzLiAgVGhpcyBhdm9pZHMgdXMg dG8gY3JlYXRlCisJCSAgICAgOzsgYSB0ZW1wb3JhcnkgZmlsZS4KKwkJICAgICAod2hpbGUg KGFuZCAoc3RyaW5nLW1hdGNoLXAKKwkJCQkgICJbWzpsb3dlcjpdXSIKKwkJCQkgICh0cmFt cC1maWxlLWxvY2FsLW5hbWUgY2FuZGlkYXRlKSkKKwkJCQkgKG5vdCAoZmlsZS1leGlzdHMt cCBjYW5kaWRhdGUpKSkKKwkJICAgICAgIChzZXRxIGNhbmRpZGF0ZQorCQkJICAgICAoZGly ZWN0b3J5LWZpbGUtbmFtZQorCQkJICAgICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgY2FuZGlk YXRlKSkpKQorCQkgICAgIDs7IE5vdGhpbmcgZm91bmQsIHNvIHdlIG11c3QgdXNlIGEgdGVt cG9yYXJ5IGZpbGUKKwkJICAgICA7OyBmb3IgY29tcGFyaXNvbi4gIGBtYWtlLW5lYXJieS10 ZW1wLWZpbGUnIGlzCisJCSAgICAgOzsgYWRkZWQgdG8gRW1hY3MgMjYrIGxpa2UKKwkJICAg ICA7OyBgZmlsZS1uYW1lLWNhc2UtaW5zZW5zaXRpdmUtcCcsIHNvIHRoZXJlIGlzIG5vCisJ CSAgICAgOzsgY29tcGF0aWJpbGl0eSBwcm9ibGVtIGNhbGxpbmcgaXQuCisJCSAgICAgKHVu bGVzcyAoc3RyaW5nLW1hdGNoLXAKKwkJCSAgICAgICJbWzpsb3dlcjpdXSIgKHRyYW1wLWZp bGUtbG9jYWwtbmFtZSBjYW5kaWRhdGUpKQorCQkgICAgICAgKHNldHEgdG1wZmlsZQorCQkJ ICAgICAobGV0ICgoZGVmYXVsdC1kaXJlY3RvcnkKKwkJCQkgICAgIChmaWxlLW5hbWUtZGly ZWN0b3J5IGZpbGVuYW1lKSkpCisJCQkgICAgICAgKHRyYW1wLWNvbXBhdC1mdW5jYWxsCisJ CQkJJ21ha2UtbmVhcmJ5LXRlbXAtZmlsZSAidHJhbXAuIikpCisJCQkgICAgIGNhbmRpZGF0 ZSB0bXBmaWxlKSkKKwkJICAgICA7OyBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUg c2FtZSBmaWxlIHdpdGgKKwkJICAgICA7OyB1cHBlciBjYXNlIGxldHRlcnMuCisJCSAgICAg KHVud2luZC1wcm90ZWN0CisJCQkgKGZpbGUtZXhpc3RzLXAKKwkJCSAgKGNvbmNhdAorCQkJ ICAgKGZpbGUtcmVtb3RlLXAgY2FuZGlkYXRlKQorCQkJICAgKHVwY2FzZSAodHJhbXAtZmls ZS1sb2NhbC1uYW1lIGNhbmRpZGF0ZSkpKSkKKwkJICAgICAgIDs7IENsZWFudXAuCisJCSAg ICAgICAod2hlbiB0bXBmaWxlIChkZWxldGUtZmlsZSB0bXBmaWxlKSkpKSkpKSkpKSkpCiAK IChkZWZ1biB0cmFtcC1oYW5kbGUtZmlsZS1uYW1lLWNvbXBsZXRpb24KICAgKGZpbGVuYW1l IGRpcmVjdG9yeSAmb3B0aW9uYWwgcHJlZGljYXRlKQo= --------------B36EBEDB0154B043363706E1--