From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: lin Sun via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#62767: 29.0.90; [PATCH] *lisp/emacs-lisp/package.el: set variables after info package Date: Thu, 25 May 2023 00:46:58 +0000 Message-ID: References: <1181651021.466162.1581309285621.ref@mail.yahoo.com> <1181651021.466162.1581309285621@mail.yahoo.com> <87sfd2ns6d.fsf@posteo.net> <833551ecb2.fsf@gnu.org> <87ttxh4e9i.fsf@posteo.net> <87bkjmiqtz.fsf@posteo.net> <83edn6new6.fsf@gnu.org> Reply-To: lin Sun Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000ec52bc05fc79f5c7" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="14995"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 62767@debbugs.gnu.org To: Eli Zaretskii , monnier@iro.umontreal.ca, philipk@posteo.net Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu May 25 02:48:20 2023 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 1q1z9P-0003fx-T0 for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 25 May 2023 02:48:20 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q1z9C-0006gh-Qu; Wed, 24 May 2023 20:48:06 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q1z9A-0006gV-OP for bug-gnu-emacs@gnu.org; Wed, 24 May 2023 20:48:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q1z9A-00072m-GH for bug-gnu-emacs@gnu.org; Wed, 24 May 2023 20:48:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1q1z98-0001nB-0h for bug-gnu-emacs@gnu.org; Wed, 24 May 2023 20:48:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: lin Sun Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 25 May 2023 00:48:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62767 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 62767-submit@debbugs.gnu.org id=B62767.16849756486695 (code B ref 62767); Thu, 25 May 2023 00:48:01 +0000 Original-Received: (at 62767) by debbugs.gnu.org; 25 May 2023 00:47:28 +0000 Original-Received: from localhost ([127.0.0.1]:45484 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q1z8Z-0001jt-TQ for submit@debbugs.gnu.org; Wed, 24 May 2023 20:47:28 -0400 Original-Received: from sonic310-25.consmr.mail.ne1.yahoo.com ([66.163.186.206]:46689) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q1z8V-0001jY-Fh for 62767@debbugs.gnu.org; Wed, 24 May 2023 20:47:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1684975637; bh=6F6SNu4SVfC4yvL2t4J9vnYBkFMun0FvPFmdZIyLNa0=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From:Subject:Reply-To; b=MRZC5i9diU3tqomSJMox1PbuLzPHeitdkqwML3nd6/KyxanweBUHf4/RQvxXKoq0zKCnbxoRybCvX1gMp9hf0apKcq4D8lMzYq9tRr7EXuuq0JN4YnvkzgkHO568qLqRlYU9yze+D6gufvHY1lu8H4bflGACK7vqJIhZQaHhvfr5/TL+oQDD/f287jkQaUt+rsrR86g3UvFTkzjLvwX90Z28lkvkmUXilnsuB0N3K0CV+09OgDXcrA6qh7dvGzTh1Tok+yMljXBmrXtXCWWZNclUqSBfHVLwSXMCZs7lH49i8S0U1orqvAxMMLrmvdi+850w3uh6LwnpOIPn8ZGD3A== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1684975637; bh=BdaMq+QNlg6HH2AZi3rSZSCkXkWcC1/H4zrJF3Y1IhU=; h=X-Sonic-MF:From:Date:Subject:To:From:Subject; b=donE0jdM0q9kCevFvwLijRwgjtxN+kigLqtVAZMqAY4v/8kKAdELa32B6A7fU68By67ztDZ3LQASLTqYnuJmhQgSE4gzjXxUc23CCzO8+RBBE5T+o3KX9xBNzSq5lRwlW+MTtcnFpeM3mNLrXcJ1B7eKfrwaNwWMkYBx+IJFAdJK/Z54knBv2EnJ7we7qBYR5FBkE7WHnHQEFUYAmeGfFYBG0Dr1X/xM4W6VvsZwkNMEcH3NQk/ak3hzhTSCCqSKn+DzXmaSkEebw39Cc5Ik8E2XAaOrnPetkCnKK3UdWVKoB3NuhgFS2tvRUah3Ro5EnDRND4+QaHu17/+1pgMJ/w== X-YMail-OSG: gdoJF1gVM1nr5YFzEb0ZRYW_T2_f7P2YxcWDxCBwPDAah8a6RHb6pjUb4CxPX83 MrSAP7raiBaBmja38m6oD60jprSt2vEJrbAOYwDiM3yaWhjhGKGIH81wa0H6EwRG8wNT3Z0Rl5Dc f2uDuuH7MuLwh5aby7lkF.p4ofvVpQvLf67Remjb77z_aVXf.zQOcTebqEVB3DDtDp62VTMLHn11 m_1G.sPe8wOZebs.Lt7acFN0wQmnSKT8Ewy93ATNqnfbiFCIpsL_8LQBIx9fK.iVW9xWqgEBO40D 2HvSXVJf4v36KY0t.G1FOqg78FP4pGEasCiyq17sgAs4HhyyIx.hWMzdvfIXH5s5RwUJDOE1KlCT DY2nNRFav1zFSXXrNzU0A0MyD87.L197PdfadlPeIQMalKikYfxiBja8NlHyy6N095x5F_JI9BJp 76UktA5YMQiuamHAzfIeybuf8pSk0e4yWC5Fkbqclmy09_MBuioyfywADo5NZng2zj3pf38PP7X. 3cEPiCh69_E_PY2NP1yoXeXOi18L4TYvVr_8Qz7JqsyjQEB8PTKT1UoVzygYyimWd3SPrOQCOorr skAjFVSX0Srp.Q7Wc8DUk6nksWyWo26VkorzKw5R8qVP1WSU7eEPcL1VWTSDoaJuCL6RN0JXsJey rTlxlOVi0y3L3PPytnnPjkHjGskm2yfh6xGlUSGvegoZsgIEoh7JIhp5uwDxp0I4jMLCwbv6mrbu OgO5iCGJiE3hM1Jxz2M.1jbWLRGh3of1pzUmbhax5c_1yFPu5hqhAZnPvY2HG0sYrLwix3nchg4W D_lXFtt4eReC.Rnx3WW5Desoju2zLneQK1yH6QIgUw X-Sonic-MF: X-Sonic-ID: dbaf4d09-dd03-41ea-9999-310af48d3a78 Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.ne1.yahoo.com with HTTP; Thu, 25 May 2023 00:47:17 +0000 Original-Received: by hermes--production-ir2-7867f454fc-ns8nf (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 3d9b90027af9fd27fb3047a618b75ace; Thu, 25 May 2023 00:47:12 +0000 (UTC) Original-Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-96fb45a5258so268650966b.2 for <62767@debbugs.gnu.org>; Wed, 24 May 2023 17:47:12 -0700 (PDT) X-Gm-Message-State: AC+VfDypSicoxLmmiZTUW6Pg8fhFf/oCFzyoJfSOQLn8yYtEG46si9rM 7P3NDJ0p6bl9v6xVTEx8qfJB6Wx9S5QAryKYoXs= X-Google-Smtp-Source: ACHHUZ7SxaXXog3U8MO4qH16ySa23RDMdXMNYFv5Int8uaYb0GQdCAW62CwehA1svlkJF66UFX6G6IHcqWeQpkyOnFA= X-Received: by 2002:a17:906:ccd3:b0:96f:6a03:eca with SMTP id ot19-20020a170906ccd300b0096f6a030ecamr14856642ejb.48.1684975630677; Wed, 24 May 2023 17:47:10 -0700 (PDT) In-Reply-To: <83edn6new6.fsf@gnu.org> X-Gmail-Original-Message-ID: X-Mailer: WebService/1.1.21495 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo 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-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:262323 Archived-At: --000000000000ec52bc05fc79f5c7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, May 24, 2023 at 11:32=E2=80=AFAM Eli Zaretskii wrote= : > ... > Could you please describe how this makes sure Info-directory-list will > be set to a correct value, in the various scenarios that are relevant? > > In particular, Info-directory-list is not the right variable to tweak > here, as it is computed by info.el. I think we need a separate > variable. In the original function `info-initialize', it will rely on the value `Info-directory-list' to indicate function initialization and parse the "INFOPATH" or get system info dirs as the initialized value. The bug comes for: package.el will add several paths into `Info-directory-list', that maybe lead function `info-initialize' return without parsing the "INFOPATH" or getting the system info dires as initial value. So package.el required the entire `info.el` and called function `info-initialize' to initialize the value first (by parsing the "INFOPATH" or get system info dir), then the package.el modify the `Info-directory-list'. The patch will allow users to set the `Info-directory-list' before calling function `info-initialize'; when info.el use the `Info-directory-list' variable to read plain *.info file, will call function `info-initialize' to add system info dirs. Two functions `Info-insert-dir' and `Info-find-file', will use (get/read) the value of `Info-directory-list' to read the plain *.info files. In the patch file, both functions will call the function `info-initialize' at their entry to ensure the `Info-directory-list' is initialized with the "INFOPATH" env string. Users will just insert/remove dirs from/to `Info-directory-list', but won't use the list to read/get plain *.info files. So users can define the `Info-directory-list' and modify its value on their elisp files. > > + (when-let ((info-dirs (butlast Info-directory-list))) > > + (pp `(defvar Info-directory-list '()) (current-buffer)) > > + (pp `(setq Info-directory-list > > + (delete-dups > > + (append ',info-dirs Info-directory-list))) > > + (current-buffer))) > > Using 'append' here could cause duplicate directories in > Info-directory-list. The `delete-dups' will avoid that. > > +(defvar Info--initialized nil > > + "Non-nil if `info-initialize' has been run.") > There's no need to capitalize the first letter of the name of an > internal variable. We capitalize 'I' in "Info" so that it would be > easier to type info.el commands with completion (other commands that > begin with 'i' use lower-case 'i'). This is not a factor for internal > variables. Very helpful to understand the naming rules. And rename it to `info--initialized', new patch attached, please review again. Best Regards Lin --000000000000ec52bc05fc79f5c7 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avoid-to-load-the-entire-info-package-V3.patch" Content-Disposition: attachment; filename="0001-avoid-to-load-the-entire-info-package-V3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_li2eyfsq0 RnJvbSBhMTdmMzg5Y2U2YWY3NjAwNzE0ZDBjYWRmOTI1YTliY2Q1YTZjY2IxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaW4gU3VuIDxzdW5saW43QGhvdG1haWwuY29tPgpEYXRlOiBU dWUsIDExIEFwciAyMDIzIDAwOjAwOjEzICswMDAwClN1YmplY3Q6IFtQQVRDSF0gYXZvaWQgdG8g bG9hZCB0aGUgZW50aXJlIGluZm8gcGFja2FnZQoKKmxpc3AvZW1hY3MtbGlzcC9wYWNrYWdlLmVs OiBkb24ndCByZXF1aXJlIGluZm8gcGFja2FnZQoqbGlzcC9pbmZvLmVsOiB1c2UgZXhwbGljaXQg bWFyayBgSW5mby0taW5pdGlhbGl6ZWQnCi0tLQogbGlzcC9lbWFjcy1saXNwL3BhY2thZ2UuZWwg fCAxNyArKysrKystLS0tLS0tLS0tLQogbGlzcC9pbmZvLmVsICAgICAgICAgICAgICAgfCAzNCAr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDI1IGlu c2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlz cC9wYWNrYWdlLmVsIGIvbGlzcC9lbWFjcy1saXNwL3BhY2thZ2UuZWwKaW5kZXggMjkzYzFjMzlj YS4uNDZkZTg0NmI4MCAxMDA2NDQKLS0tIGEvbGlzcC9lbWFjcy1saXNwL3BhY2thZ2UuZWwKKysr IGIvbGlzcC9lbWFjcy1saXNwL3BhY2thZ2UuZWwKQEAgLTkwNyw5ICs5MDcsNiBAQCBwYWNrYWdl LWFjdGl2YXRlLTEKICAgICAgICAgKGFkZC10by1saXN0ICdsb2FkLXBhdGggKGRpcmVjdG9yeS1m aWxlLW5hbWUgcGtnLWRpcikpKQogICAgICAgOzsgQWRkIGluZm8gbm9kZS4KICAgICAgICh3aGVu IChmaWxlLWV4aXN0cy1wIChleHBhbmQtZmlsZS1uYW1lICJkaXIiIHBrZy1kaXIpKQotICAgICAg ICA7OyBGSVhNRTogbm90IHRoZSBmcmllbmRsaWVzdCwgYnV0IHNpbXBsZS4KLSAgICAgICAgKHJl cXVpcmUgJ2luZm8pCi0gICAgICAgIChpbmZvLWluaXRpYWxpemUpCiAgICAgICAgIChhZGQtdG8t bGlzdCAnSW5mby1kaXJlY3RvcnktbGlzdCBwa2ctZGlyKSkKICAgICAgIChwdXNoIG5hbWUgcGFj a2FnZS1hY3RpdmF0ZWQtbGlzdCkKICAgICAgIDs7IERvbid0IHJldHVybiBuaWwuCkBAIC00NDc4 LDcgKzQ0NzUsNiBAQCBwYWNrYWdlLXF1aWNrc3RhcnQtcmVmcmVzaAogICAiKFJlKUdlbmVyYXRl IHRoZSBgcGFja2FnZS1xdWlja3N0YXJ0LWZpbGUnLiIKICAgKGludGVyYWN0aXZlKQogICAocGFj a2FnZS1pbml0aWFsaXplICduby1hY3RpdmF0ZSkKLSAgKHJlcXVpcmUgJ2luZm8pCiAgIChsZXQg KChwYWNrYWdlLS1xdWlja3N0YXJ0LXBrZ3MgKCkpCiAgICAgICAgIDs7IFByZXRlbmQgd2UgaGF2 ZW4ndCBhY3RpdmF0ZWQgYW55dGhpbmcgeWV0IQogICAgICAgICAocGFja2FnZS1hY3RpdmF0ZWQt bGlzdCAoKSkKQEAgLTQ1MjEsMTMgKzQ1MTcsMTIgQEAgcGFja2FnZS1xdWlja3N0YXJ0LXJlZnJl c2gKICAgICAgICAgICAgICAgICAgIChhcHBlbmQgJywobWFwY2FyICMncGFja2FnZS1kZXNjLW5h bWUgcGFja2FnZS0tcXVpY2tzdGFydC1wa2dzKQogICAgICAgICAgICAgICAgICAgICAgICAgICBw YWNrYWdlLWFjdGl2YXRlZC1saXN0KSkpCiAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSkKLSAg ICAgIChsZXQgKChpbmZvLWRpcnMgKGJ1dGxhc3QgSW5mby1kaXJlY3RvcnktbGlzdCkpKQotICAg ICAgICAod2hlbiBpbmZvLWRpcnMKLSAgICAgICAgICAocHAgYChwcm9nbiAocmVxdWlyZSAnaW5m bykKLSAgICAgICAgICAgICAgICAgICAgICAoaW5mby1pbml0aWFsaXplKQotICAgICAgICAgICAg ICAgICAgICAgIChzZXRxIEluZm8tZGlyZWN0b3J5LWxpc3QKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoYXBwZW5kICcsaW5mby1kaXJzIEluZm8tZGlyZWN0b3J5LWxpc3QpKSkKLSAgICAg ICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSkpKQorICAgICAgKHdoZW4tbGV0ICgoaW5mby1kaXJz IChidXRsYXN0IEluZm8tZGlyZWN0b3J5LWxpc3QpKSkKKyAgICAgICAgKHBwIGAoZGVmdmFyIElu Zm8tZGlyZWN0b3J5LWxpc3QgJygpKSAoY3VycmVudC1idWZmZXIpKQorICAgICAgICAocHAgYChz ZXRxIEluZm8tZGlyZWN0b3J5LWxpc3QKKyAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWR1cHMK KyAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCAnLGluZm8tZGlycyBJbmZvLWRpcmVjdG9yeS1s aXN0KSkpCisgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpKSkKICAgICAgIDs7IFVzZSBgXHMn IGluc3RlYWQgb2YgYSBzcGFjZSBjaGFyYWN0ZXIsIHNvIHRoaXMgY29kZSBjaHVuayBpcyBub3QK ICAgICAgIDs7IG1pc3Rha2VuIGZvciBhbiBhY3R1YWwgZmlsZS1sb2NhbCBzZWN0aW9uIG9mIHBh Y2thZ2UuZWwuCiAgICAgICAoaW5zZXJ0ICIMCmRpZmYgLS1naXQgYS9saXNwL2luZm8uZWwgYi9s aXNwL2luZm8uZWwKaW5kZXggMDM1ZGZmNjZlNy4uNjMxYzM1MTQwYiAxMDA2NDQKLS0tIGEvbGlz cC9pbmZvLmVsCisrKyBiL2xpc3AvaW5mby5lbApAQCAtNDAwLDYgKzQwMCw5IEBAIEluZm8tdmly dHVhbC1ub2RlcwogKGRlZnZhci1sb2NhbCBJbmZvLWN1cnJlbnQtbm9kZS12aXJ0dWFsIG5pbAog ICAiTm9uLW5pbCBpZiB0aGUgY3VycmVudCBJbmZvIG5vZGUgaXMgdmlydHVhbC4iKQogCisoZGVm dmFyIGluZm8tLWluaXRpYWxpemVkIG5pbAorICAiTm9uLW5pbCBpZiBgaW5mby1pbml0aWFsaXpl JyBoYXMgYmVlbiBydW4uIikKKwogKGRlZnVuIEluZm8tdmlydHVhbC1maWxlLXAgKGZpbGVuYW1l KQogICAiQ2hlY2sgaWYgSW5mbyBmaWxlIEZJTEVOQU1FIGlzIHZpcnR1YWwuIgogICAoSW5mby12 aXJ0dWFsLWZ1biAnZmluZC1maWxlIGZpbGVuYW1lIG5pbCkpCkBAIC03MDAsMjkgKzcwMywyOSBA QCBJbmZvLWRlZmF1bHQtZGlycwogCiAoZGVmdW4gaW5mby1pbml0aWFsaXplICgpCiAgICJJbml0 aWFsaXplIGBJbmZvLWRpcmVjdG9yeS1saXN0JywgaWYgdGhhdCBoYXNuJ3QgYmVlbiBkb25lIHll dC4iCi0gICh1bmxlc3MgSW5mby1kaXJlY3RvcnktbGlzdAorICAodW5sZXNzIGluZm8tLWluaXRp YWxpemVkCiAgICAgKGxldCAoKHBhdGggKGdldGVudiAiSU5GT1BBVEgiKSkKIAkgIChzZXAgKHJl Z2V4cC1xdW90ZSBwYXRoLXNlcGFyYXRvcikpKQotICAgICAgKHNldHEgSW5mby1kaXJlY3Rvcnkt bGlzdAotCSAgICAocHJ1bmUtZGlyZWN0b3J5LWxpc3QKLQkgICAgIChpZiBwYXRoCi0JCSAoaWYg KHN0cmluZy1tYXRjaC1wIChjb25jYXQgc2VwICJcXCciKSBwYXRoKQotCQkgICAgIChhcHBlbmQg KHNwbGl0LXN0cmluZyAoc3Vic3RyaW5nIHBhdGggMCAtMSkgc2VwKQotCQkJICAgICAoSW5mby1k ZWZhdWx0LWRpcnMpKQotCQkgICAoc3BsaXQtc3RyaW5nIHBhdGggc2VwKSkKLQkgICAgICAgKElu Zm8tZGVmYXVsdC1kaXJzKSkpKQorICAgICAgKGRvbGlzdCAoZGlyCisJICAgICAgIChwcnVuZS1k aXJlY3RvcnktbGlzdAorCSAgICAgICAgKGlmIHBhdGgKKwkJICAgIChpZiAoc3RyaW5nLW1hdGNo LXAgKGNvbmNhdCBzZXAgIlxcJyIpIHBhdGgpCisJCSAgICAgICAgKGFwcGVuZCAoc3BsaXQtc3Ry aW5nIChzdWJzdHJpbmcgcGF0aCAwIC0xKSBzZXApCisJCQkgICAgICAgIChJbmZvLWRlZmF1bHQt ZGlycykpCisJCSAgICAgIChzcGxpdC1zdHJpbmcgcGF0aCBzZXApKQorCSAgICAgICAgICAoSW5m by1kZWZhdWx0LWRpcnMpKSkpCisgICAgICAgIChhZGQtdG8tbGlzdCAnSW5mby1kaXJlY3Rvcnkt bGlzdCBkaXIpKQogICAgICAgOzsgRm9yIGEgc2VsZi1jb250YWluZWQgKGllIHJlbG9jYXRhYmxl KSBOUyBidWlsZCwgQUZBSUNTIHdlCiAgICAgICA7OyBhbHdheXMgd2FudCB0aGUgaW5jbHVkZWQg aW5mbyBkaXJlY3RvcnkgdG8gYmUgYXQgdGhlIGhlYWQgb2YKICAgICAgIDs7IHRoZSBzZWFyY2gg cGF0aCwgdW5sZXNzIGl0J3MgYWxyZWFkeSBpbiBJTkZPUEFUSCBzb21ld2hlcmUuCiAgICAgICA7 OyBJdCdzIGF0IHRoZSBoZWFkIG9mIEluZm8tZGVmYXVsdC1kaXJlY3RvcnktbGlzdCwKICAgICAg IDs7IGJ1dCB0aGVyZSdzIG5vIHdheSB0byBnZXQgaXQgYXQgdGhlIGhlYWQgb2YgSW5mby1kaXJl Y3RvcnktbGlzdAogICAgICAgOzsgZXhjZXB0IGJ5IGRvaW5nIGl0IGhlcmUuCi0gICAgICAoYW5k IHBhdGgKLQkgICAoZmVhdHVyZXAgJ25zKQotCSAgIChsZXQgKChkaXIgKGV4cGFuZC1maWxlLW5h bWUgIi4uL2luZm8iIGRhdGEtZGlyZWN0b3J5KSkpCi0JICAgICAoYW5kIChmaWxlLWRpcmVjdG9y eS1wIGRpcikKLQkJICAobm90IChtZW1iZXIgZGlyIChzcGxpdC1zdHJpbmcgcGF0aCAiOiIgdCkp KQotCQkgIChwdXNoIGRpciBJbmZvLWRpcmVjdG9yeS1saXN0KSkpKSkpKQorICAgICAgKHdoZW4g KGFuZCBwYXRoIChmZWF0dXJlcCAnbnMpKQorICAgICAgICAod2hlbi1sZXQqICgoZGlyIChleHBh bmQtZmlsZS1uYW1lICIuLi9pbmZvIiBkYXRhLWRpcmVjdG9yeSkpCisgICAgICAgICAgICAgICAg ICAgICgoZmlsZS1kaXJlY3RvcnktcCBkaXIpKSkKKwkgIChhZGQtdG8tbGlzdCAnSW5mby1kaXJl Y3RvcnktbGlzdCBkaXIpKSkpKQorICAoc2V0cSBpbmZvLS1pbml0aWFsaXplZCB0KSkKIAogOzs7 IyMjYXV0b2xvYWQKIChkZWZ1biBpbmZvLW90aGVyLXdpbmRvdyAoJm9wdGlvbmFsIGZpbGUtb3It bm9kZSBidWZmZXIpCkBAIC0xMjc5LDYgKzEyODIsNyBAQCBJbmZvLWRpci1maWxlLW5hbWUKIDs7 IGRlZmF1bHQtZGlyZWN0b3J5IHRvIHRoZSBmaXJzdCBkaXJlY3Rvcnkgd2UgYWN0dWFsbHkgZ2V0 IGFueSB0ZXh0CiA7OyBmcm9tLgogKGRlZnVuIEluZm8taW5zZXJ0LWRpciAoKQorICAoaW5mby1p bml0aWFsaXplKQogICAoaWYgKGFuZCBJbmZvLWRpci1jb250ZW50cyBJbmZvLWRpci1maWxlLWF0 dHJpYnV0ZXMKIAkgICA7OyBWZXJpZnkgdGhhdCBub25lIG9mIHRoZSBmaWxlcyB3ZSB1c2VkIGhh cyBjaGFuZ2VkCiAJICAgOzsgc2luY2Ugd2UgdXNlZCBpdC4KLS0gCjIuMjAuNQoK --000000000000ec52bc05fc79f5c7--