From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 6A2NBDjtqGGDdAAAgWs5BA (envelope-from ) for ; Thu, 02 Dec 2021 16:58:48 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id SLwyADjtqGFbKQAAbx9fmQ (envelope-from ) for ; Thu, 02 Dec 2021 15:58:48 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id E2D50100F7 for ; Thu, 2 Dec 2021 16:58:46 +0100 (CET) Received: from localhost ([::1]:43242 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1msoTp-0005G6-91 for larch@yhetil.org; Thu, 02 Dec 2021 10:58:41 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42870) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1msoSi-0005Ab-LZ for emacs-orgmode@gnu.org; Thu, 02 Dec 2021 10:57:32 -0500 Received: from mail-4317.proton.ch ([185.70.43.17]:44825) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1msoSb-0000P4-6f for emacs-orgmode@gnu.org; Thu, 02 Dec 2021 10:57:31 -0500 Date: Thu, 02 Dec 2021 15:56:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vidal-rosset.net; s=protonmail3; t=1638460628; bh=DQwVqqb3PMyrKX9BM/wZ/pnUNs60ZLO9MxKDz7oHUNM=; h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To: References:From:To:Cc; b=bMKPhC07LM+QZVmImHkp8lf1welU1SG4J63w8IOhDaDQ3FcB74hhpXjLogrIkZ6pG t6RlcWcqpVXjqtEUyLeKz/78UQegZQvZZEpThpQu5Bc3b9brOfIoCR1cr4A0OkYjZV pZm5US5w93sRgc+dtOM/6GR8EgqjMwlF0ky8QOshFVHv37fKWw+8uF3DOIJG7gFE6j KTtN8jCR1T8kyKhuxSnChJoAcaoJO8KGZWI21GCvFa3jfTZm/sJ+ndNFSzxS1g5ZAw fFDWRGoDBN/TsLqQxGkfcO71bN6J1LcWK3qbiky4W0dk1f1DBuHVNM+nT8BSPX3Fv4 zzrerHEEKS/mQ== To: John Kitchin From: Joseph Vidal-Rosset Subject: Re: citeproc-org and org-ref 3 Message-ID: <0d4028ea-8ed6-22f3-023b-20b2df18406c@vidal-rosset.net> In-Reply-To: <61af3132-888f-1200-2e52-dec66c26551b@vidal-rosset.net> References: <56442351-6f41-3490-01f2-0ca5aa930c6a@vidal-rosset.net> <573b6fad-e445-3f53-9cd5-43d5b7f86904@vidal-rosset.net> <61af3132-888f-1200-2e52-dec66c26551b@vidal-rosset.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_BoUR6aYcmeklYrghlWD7Q6rdu5VhUWy3JUmktcTbUw" Received-SPF: pass client-ip=185.70.43.17; envelope-from=joseph@vidal-rosset.net; helo=mail-4317.proton.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Joseph Vidal-Rosset Cc: org-mode-email , Ivan Tadeu Ferreira Antunes Filho Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1638460727; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=DQwVqqb3PMyrKX9BM/wZ/pnUNs60ZLO9MxKDz7oHUNM=; b=aXTHw26dG14O8mP4SVwKdjYHc8QKYqWK9m0tikN2ZJgcRnlkHJWDXPKq51y24KLml9+liT wThBOLNraEFNgGe+/6+42UnGMlYJiatQEuQLFDnQ2WK+xpx69Jc9G3KVNgHe6IQ7tjmqO1 RkQCuWrjAT9s1cyJQsoyqVwpiZtqCv4F3HHuxVtN7yXFMw2r4RPE9NYKz/FVutlewvliih S7ioBWx5YLRD/b5Q6xsLWz1bXLWc3iHFTX87POEoYoFCGmXkr0NiFMhslXywhYIzg/yMoj HarMHh3E0ROEFDWe/OFdDHg7ZAxanyr9rNUN1XUOQ0ZDc2XqyL05YGvR70flow== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1638460727; a=rsa-sha256; cv=none; b=b7qo+lW33RhFc70+egRPVIeQm15SkQlkcsyeMsGGnpzXVEIm81oDb+z19h3LMYKw9V/y+/ Uu4yXhqnani3Z+/f7ncaOz20LCvlit456J1yY25+zd6Xasyl9+qUyTzGUN/HEu2SBlaVbl yTLzlOJOt+uJMnS+bxE/vf1OPMS5eX8qRUc6Daz5RMMEni8gORBSHSt/iA46cHBY5Ke+Gn b34vkrFwdInnGQ0lz4AD/SbQxZiXhHMQup+bIqzgCb1m8a2kMQIbWT5Jtl8Fa0u3YYTfgS +l1/cUpbLx4t8He5nPkfWHSlHIO7e784I69pdWcO9t1cmDMgiYYpmCgrDWPHCw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=vidal-rosset.net header.s=protonmail3 header.b=bMKPhC07; dmarc=pass (policy=none) header.from=vidal-rosset.net; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -3.02 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=vidal-rosset.net header.s=protonmail3 header.b=bMKPhC07; dmarc=pass (policy=none) header.from=vidal-rosset.net; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: E2D50100F7 X-Spam-Score: -3.02 X-Migadu-Scanner: scn0.migadu.com X-TUID: cG6avJwP8I6H This is a multi-part message in MIME format. --b1_BoUR6aYcmeklYrghlWD7Q6rdu5VhUWy3JUmktcTbUw Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Dear all, I just succeeded in solving my problem. l-210-235 of myblogexporter.el, I changed the code for: (defun org-export-head-export-headers (directory-name backend) "Exports each heading to directory-name using backend" (if (equal backend "html") (org-export-head--run-on-each-heading #'(lambda () (org-set-property "EXPORT_FILE_NAME" (concat directory-name (org-export-head--escaped-headline))) (deactivate-mark) (let ((org-export-before-parsing-hook '(org-ref-csl-preprocess-buffer))) (cl-letf (((symbol-function 'org-export-get-reference) (symbol-function 'org-export-get-reference-custom))) (if org-export-head-click-toc-h2 (cl-letf (( ;(symbol-function 'org-html-toc) (symbol-function 'org-export-head--custom-toc))) (org-html-export-to-html nil t))))) (set-buffer-modified-p t)) "-noexport-noreexport")) (if (equal backend "pdf") (org-export-head--run-on-each-heading #'(lambda () (org-set-property "EXPORT_FILE_NAME" (concat directory-name (org-export-head--escaped-headline))) (deactivate-mark) (org-latex-export-to-pdf nil t) (set-buffer-modified-p t)) "-noexport-noreexport"))) and it works with org-ref 3. Best wishes, I attach myblogexporter.el Jo. Le 02/12/2021 =C3=A0 14:17, Joseph Vidal-Rosset a =C3=A9crit=C2=A0: > Dear John (cc. Ivan), > > First, thanks for your help and for your patience, that's very kind of yo= u. > > The good news is that indeed, org-ref 3 exports nicely the html > bibliography with my CSL file, it works well with your org file and your > bibliography. My error was simple: I did not use the specific org-ref > keys but the ordinary h-o keys.. A stupid mistake. > > The bad news is that this new function for exporting with org-ref 3 is > not included in org-export-head, a nice org mode to blog exporter, made > by Ivan Tadeu Ferreira Antunes Filho, which converts each header to a > different file, I find this exporter very convenient. I had no problem > with this org-ref 2 to use this blog-exporter, but it org-ref 3 is > unfortunately not still adapted to its use. Nevertheless, I believe that > it should be possible to find the lines to include this function > (let ((org-export-before-parsing-hook '(org-ref-csl-preprocess-buffer))) > (org-open-file (org-html-export-to-html))) > in org-export-head. I tried, but without success, because I am simply > not expert enough. I see the best, that is to export both with org-ref 3 > (i.e. "r h") and org-export-head, but I am unable to code it. > > No doubt that it should be for you and Ivan a piece of cake, but please > do it only if you think that it is interesting and if you find the time > to do it. > > Best wishes, > > Jo. > > PS in attachment, myblogexporter.el in my ~/.emacs.d/personal (usual > path with Prelude Emacs). > > Le 01/12/2021 =C3=A0 23:16, John Kitchin a =C3=A9crit=C2=A0: >> >> Joseph Vidal-Rosset writes: >> >>> Dear Andras, >>> >>> You are very probably right. I will have a look on this entry in my >>> default bibliography file. >>> >>> The code >>> >>> (let ((org-export-before-parsing-hook '(org-ref-csl-preprocess-buffer)= )) >>> (org-open-file (org-html-export-to-html))) >>> >>> put in .emacs.d/personal/preload/myorgexport.el >>> >> This code should not go in your init file. It is executed each time, and >> not what you want. I usually put it a src block at the end in a section >> tagged noexport and run it from there. >> >> Alternatively, if this is the only preprocessing you do, I think you can >> do C-c C-e rh to export to html (this runs the org-ref html exporter. >> >> Finally, if you really want something in your init file it should be >> like this: >> >> (defun my-html () >> (interactive) >> (let ((org-export-before-parsing-hook '(org-ref-csl-preprocess-buff= er))) >> (org-open-file (org-html-export-to-html)))) >> >> and then later you run it with M-x my-html >> >> >>> provokes the request of opening a html file, when emacs --daemon is >>> started; therefore I conclude that it should not be used as I did... >>> >>> Anyway, every tentative to export in a bibliography in html fails at >>> the moment, even with a new bibliography file... :( >> >> See of the one at >> https://github.com/jkitchin/org-ref/blob/master/examples/basic-csl.org >> works. The bib file is in >> https://github.com/jkitchin/org-ref/blob/master/org-ref.bib. >> >> >> >>> >>> Best wishes, >>> >>> Le 01/12/2021 =C3=A0 17:33, Andr=C3=A1s Simonyi a =C3=A9crit=C2=A0: >>>> Dear Joseph, >>>> >>>> based on the error message there seems to be a problem with the >>>> 'curley-nil-on-bennet-spinoz' bibliography entry, is it possible that >>>> it contains a 'year =3D nil' row? If yes then I don't think that is >>>> well-formed, at least citeproc-el cannot currently parse it. Anyhow, >>>> apparently I need to improve/add citeproc-el error messages about >>>> bib(la)tex parsing, because several parsing problems have surfaced >>>> lately and the current error messages aren't helpful at all. >>>> >>>> best wishes, >>>> Andr=C3=A1s >>>> >>>> On Wed, 1 Dec 2021 at 16:50, Joseph Vidal-Rosset >>>> wrote: >>>>> >>>>> Dear John, >>>>> >>>>> I must say that to export references in html with org-ref 3, I meet a >>>>> lot of problems (with LaTeX, it's fine). >>>>> >>>>> I am using prelude emacs and GNU Emacs 29.0.50 . >>>>> >>>>> Starting emacs --daemon, the code >>>>> >>>>> (let ((org-export-before-parsing-hook '(org-ref-csl-preprocess-buffe= r))) >>>>> (org-open-file (org-html-export-to-html))) >>>>> >>>>> in my setup provokes this unwanting effect: >>>>> >>>>> [Prelude] Loading personal configuration files in >>>>> /home/joseph/.emacs.d/personal/preload... >>>>> Loading /home/joseph/.emacs.d/personal/preload/myorgexport.el (source= )... >>>>> Output file: >>>>> >>>>> and with Enter : >>>>> >>>>> [Prelude] Loading personal configuration files in >>>>> /home/joseph/.emacs.d/personal/preload... >>>>> Loading /home/joseph/.emacs.d/personal/preload/myorgexport.el (source= )... >>>>> Output file: >>>>> Warning (initialization): An error occurred while loading >>>>> =E2=80=98/home/joseph/.emacs.d/init.el=E2=80=99: >>>>> >>>>> Wrong type argument: stringp, nil >>>>> >>>>> To ensure normal operation, you should investigate and remove the >>>>> cause of the error in your initialization file. Start Emacs with >>>>> the =E2=80=98--debug-init=E2=80=99 option to view a complete error ba= cktrace. Disable >>>>> showing Disable logging >>>>> Starting Emacs daemon. >>>>> >>>>> With --debug-init, I get: >>>>> >>>>> Debugger entered--Lisp error: (wrong-type-argument stringp nil) >>>>> string-to-number(nil) >>>>> citeproc-bt--to-csl-date("nil" nil) >>>>> citeproc-blt-entry-to-csl((("Url" . >>>>> "http://dx.doi.org/10.1163/9789004246638_005") ("Doi" . >>>>> "10.1163/9789004246638_005") ("Date_added" . "Mon May 16 19:09:37 201= 6") >>>>> ("Booktitle" . "Spinoza: Issues and Directions") ("Series" . "Spinoza= : >>>>> Issues and Directions") ("Year" . "nil") ("Publisher" . "Brill Academ= ic >>>>> Publishers") ("Pages" . "39-52") ("Author" . "Edwin Curley") ("Title"= . >>>>> "ON BENNETTS SPINOZA: THE ISSUE OF TELEOLOGY") ("=3Dtype=3D" . "InBoo= k") >>>>> ("=3Dkey=3D" . "curley-nil-on-bennet-spinoz")) nil nil) >>>>> #f(compiled-function (key entry) #>>>> -0x7fcb46b5c8e80b3>)("curley-nil-on-bennet-spinoz" (("Url" . >>>>> "http://dx.doi.org/10.1163/9789004246638_005") ("Doi" . >>>>> "10.1163/9789004246638_005") ("Date_added" . "Mon May 16 19:09:37 201= 6") >>>>> ("Booktitle" . "Spinoza: Issues and Directions") ("Series" . "Spinoza= : >>>>> Issues and Directions") ("Year" . "nil") ("Publisher" . "Brill Academ= ic >>>>> Publishers") ("Pages" . "39-52") ("Author" . "Edwin Curley") ("Title"= . >>>>> "ON BENNETTS SPINOZA: THE ISSUE OF TELEOLOGY") ("=3Dtype=3D" . "InBoo= k") >>>>> ("=3Dkey=3D" . "curley-nil-on-bennet-spinoz"))) >>>>> maphash(#f(compiled-function (key entry) #>>>> -0x7fcb46b5c8e80b3>) #) >>>>> citeproc-hash-itemgetter-from-any(("~/Dropbox/Orgzly/reforg.bib= ")) >>>>> org-ref-process-buffer(html) >>>>> org-ref-csl-preprocess-buffer(html) >>>>> run-hook-with-args(org-ref-csl-preprocess-buffer html) >>>>> org-export-as(html nil nil nil (:output-file "~/test.html")) >>>>> org-export-to-file(html "~/test.html" nil nil nil nil nil) >>>>> org-html-export-to-html() >>>>> (org-open-file (org-html-export-to-html)) >>>>> (let ((org-export-before-parsing-hook >>>>> '(org-ref-csl-preprocess-buffer))) (org-open-file >>>>> (org-html-export-to-html))) >>>>> eval-buffer(# nil >>>>> "/home/joseph/.emacs.d/personal/preload/myorgexport..." nil t) ; >>>>> Reading at buffer position 3196 >>>>> >>>>> load-with-code-conversion("/home/joseph/.emacs.d/personal/preload/myo= rgexport..." >>>>> "/home/joseph/.emacs.d/personal/preload/myorgexport..." nil nil) >>>>> load("/home/joseph/.emacs.d/personal/preload/myorgexport...") >>>>> mapc(load ("/home/joseph/.emacs.d/personal/preload/myorgexport.= ..")) >>>>> (progn (message "[Prelude] Loading personal configuration files= in >>>>> ..." prelude-personal-preload-dir) (mapc 'load (directory-files >>>>> prelude-personal-preload-dir 't "^[^#.].*el$"))) >>>>> (if (file-exists-p prelude-personal-preload-dir) (progn (messag= e >>>>> "[Prelude] Loading personal configuration files in ..." >>>>> prelude-personal-preload-dir) (mapc 'load (directory-files >>>>> prelude-personal-preload-dir 't "^[^#.].*el$")))) >>>>> eval-buffer(# nil "/home/joseph/.emacs.d/init.e= l" nil >>>>> t) ; Reading at buffer position 4489 >>>>> load-with-code-conversion("/home/joseph/.emacs.d/init.el" >>>>> "/home/joseph/.emacs.d/init.el" t t) >>>>> load("/home/joseph/.emacs.d/init" noerror nomessage) >>>>> startup--load-user-init-file(#f(compiled-function () #>>>> 0xec639179d6199fa>) #f(compiled-function () #>>>> -0x1f3c686ddc0dc635>) t) >>>>> command-line() >>>>> normal-top-level() >>>>> >>>>> It's too complicated for me. >>>>> org-ref version 2 with citeproc-org by Andras worked well, but now I = am >>>>> afraid that to downgrade to org-ref 2 is not necessarily the best >>>>> solution. I am lost. >>>>> >>>>> Best wishes, and thanks for your help. >>>>> >>>>> Jo. >>>>> >>>>> >>>>> Le 30/11/2021 =C3=A0 18:31, John Kitchin a =C3=A9crit : >>>>>> See https://www.youtube.com/watch?v=3DrRR-5NSpKyE >>>>>> for an overview of w= hat to >>>>>> do. basically you need a csl file that provides the style you want, = and >>>>>> you specify it like this in the org file or in default settings. You= may >>>>>> also need a locale file if you are not blogging in english. >>>>>> >>>>>> #+csl-style: apa-5th-edition.csl >>>>>> >>>>>> #+csl-locale: en-US >>>>>> >>>>>> >>>>>> You can find a basic example org file for html export with CSL at >>>>>> https://github.com/jkitchin/org-ref/blob/master/examples/basic-csl.o= rg >>>>>> >>>>>> >>>>>> Here is a minimal way to export your blog file I suppose. >>>>>> >>>>>> (let ((org-export-before-parsing-hook '(org-ref-csl-preprocess-buff= er))) >>>>>> (org-open-file (org-html-export-to-html))) >>>>>> >>>>>> >>>>>> John >>>>>> >>>>>> ----------------------------------- >>>>>> Professor John Kitchin (he/him/his) >>>>>> Doherty Hall A207F >>>>>> Department of Chemical Engineering >>>>>> Carnegie Mellon University >>>>>> Pittsburgh, PA 15213 >>>>>> 412-268-7803 >>>>>> @johnkitchin >>>>>> http://kitchingroup.cheme.cmu.edu >>>>>> >>>>>> >>>>>> >>>>>> On Tue, Nov 30, 2021 at 12:16 PM Andr=C3=A1s Simonyi >>>>>> > wrote: >>>>>> >>>>>> Dear Joseph, >>>>>> >>>>>> unfortunately, my note on the `citeproc-org` page has become = kind of >>>>>> misleading and has to be updated because org-ref didn't switc= h to the >>>>>> new org-cite citation syntax after all, although this was the= plan for >>>>>> a while. I think if you wish to use org-ref 3 then you should= simply >>>>>> remove citeproc-org entirely -- if I understand correctly the= latest >>>>>> version of org-ref supports the old syntax as well and is cap= able of >>>>>> CSL-based export (among others) on its own. >>>>>> >>>>>> best regards, >>>>>> Andr=C3=A1s >>>>>> >>>>>> On Tue, 30 Nov 2021 at 18:00, Joseph Vidal-Rosset >>>>>> > wr= ote: >>>>>> > >>>>>> > >>>>>> > Dear John, and dear Andras, >>>>>> > >>>>>> > Having updated my org-ref to the last version, I see that = the html >>>>>> > export of bibliography does not work any longer for my blo= g. >>>>>> > >>>>>> > Reading Andras's note here >>>>>> > https://github.com/andras-simonyi/citeproc-org >>>>>> >>>>>> > I confess that I am lost. >>>>>> > >>>>>> > What have I to do to not waste too much time with this pro= blem? >>>>>> > >>>>>> > Best wishes, >>>>>> > >>>>>> > Jo. >>>>>> > >>>>>> >>>>> >> >> >> -- >> Professor John Kitchin >> Doherty Hall A207F >> Department of Chemical Engineering >> Carnegie Mellon University >> Pittsburgh, PA 15213 >> 412-268-7803 >> @johnkitchin >> http://kitchingroup.cheme.cmu.edu >> Pronouns: he/him/his >> --b1_BoUR6aYcmeklYrghlWD7Q6rdu5VhUWy3JUmktcTbUw Content-Type: text/x-emacs-lisp; name=myblogexporter.el Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=myblogexporter.el IjoiOyBleGVjIGVtYWNzIC0tbm8tc2l0ZS1maWxlIC0tc2NyaXB0ICIkMCIgIiRAIiAjIC0qLWVt YWNzLWxpc3AtKi0NCjs7IFRoZSBhYm92ZSBsaW5lIGlzIGJhc2ggdHJpY2tlcnkgIGh0dHBzOi8v c3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYyMzgzMzEvZW1hY3Mtc2hlbGwtc2NyaXB0cy1o b3ctdG8tcHV0LWluaXRpYWwtb3B0aW9ucy1pbnRvLXRoZS1zY3JpcHQjNjI1OTMzMA0KDQoNCg0K DQoNCjs7IGJhc2VkIG9uIGh0dHA6Ly9wcmFnbWF0aWNlbWFjcy5jb20vZW1hY3MvZXhwb3J0LW9y Zy1tb2RlLWhlYWRsaW5lcy10by1zZXBhcmF0ZS1maWxlcy8NCjs7IGV4cG9ydCBoZWFkbGluZXMg dG8gc2VwYXJhdGUgZmlsZXMNCjs7IGh0dHA6Ly9lbWFjcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVz dGlvbnMvMjI1OS9ob3ctdG8tZXhwb3J0LXRvcC1sZXZlbC1oZWFkaW5ncy1vZi1vcmctbW9kZS1i dWZmZXItdG8tc2VwYXJhdGUtZmlsZXMNCg0KOzs7IEJlZ2luIGNvbmZpZw0KKHNldHEgb3JnLWV4 cG9ydC1oZWFkLS1odG1sLXBvc3RhbWJsZQ0KIjwhIC0tQmVnaW4gb2YgIGlzc28gc2NyaXB0IC0t Pg0KPHNjcmlwdCBkYXRhLWlzc289XCIvaXNzby9cIg0KICAgICAgIGRhdGEtaXNzby1jc3M9XCJm YWxzZVwiDQogICAgICAgZGF0YS1pc3NvLWxhbmc9XCJlblwiDQogICAgICAgZGF0YS1pc3NvLXJl cGx5LXRvLXNlbGY9XCJmYWxzZVwiDQogICAgICAgZGF0YS1pc3NvLXJlcXVpcmUtYXV0aG9yPVwi ZmFsc2VcIg0KICAgICAgIGRhdGEtaXNzby1yZXF1aXJlLWVtYWlsPVwiZmFsc2VcIg0KICAgICAg IGRhdGEtaXNzby1hdmF0YXI9XCJ0cnVlXCINCiAgICAgICBkYXRhLWlzc28tYXZhdGFyLWJnPVwi I2YwZjBmMFwiDQogICAgICAgZGF0YS1pc3NvLW1heC1jb21tZW50cy10b3A9XCIxMFwiDQogICAg ICAgZGF0YS1pc3NvLW1heC1jb21tZW50cy1uZXN0ZWQ9XCI1XCINCiAgICAgICBkYXRhLWlzc28t cmV2ZWFsLW9uLWNsaWNrPVwiNVwiDQogICAgICAgZGF0YS1pc3NvLXZvdGU9XCJ0cnVlXCINCiAg ICAgICBkYXRhLWlzc28tZmVlZD1cImZhbHNlXCINCiAgICAgICBzcmM9XCIvaXNzby9qcy9lbWJl ZC5taW4uanNcIj48L3NjcmlwdD4NCjxzZWN0aW9uIGlkPVwiaXNzby10aHJlYWRcIiBkYXRhLXRp dGxlPVwie3sgLlRpdGxlIH19XCI+PC9zZWN0aW9uPg0KPGRpdiBpZD1cImlzc29cIj48L2Rpdj4N CjwhIC0tIEVuZCBvZiBpc3NvIHNjcmlwdCAtLT4NCjwhLS0gQmVnaW4gb2YgY29kZSBXZWItU3Rh dCB2IDYuMyAtLT4NCjxzcGFuIGlkPVwid3RzMTkzMTk0M1wiPiZuYnNwOzwvc3Bhbj48c2NyaXB0 Pg0KdmFyIHd0cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTt3dHMudHlwZT0ndGV4 dC9qYXZhc2NyaXB0JzsNCnd0cy5hc3luYz10cnVlO3d0cy5zcmM9J2h0dHBzOi8vd3RzLm9uZS8x LzE5MzE5NDMvbG9nNl8yLmpzJzsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3dHMxOTMxOTQz JykuYXBwZW5kQ2hpbGQod3RzKTsNCjwvc2NyaXB0Pjxub3NjcmlwdD48YSBocmVmPVwiaHR0cHM6 Ly93d3cud2ViLXN0YXQuZnJcIj4NCjxpbWcgc3JjPVwiaHR0cHM6Ly93dHMub25lLzYvMS8xOTMx OTQzLmdpZlwiICBhbHQ9XCJzdGF0aXN0aXF1ZXMgd2ViIFdlYi1TdGF0XCI+PC9hPjwvbm9zY3Jp cHQ+DQo8IS0tIEVuZCBvZiAgY29kZSBXZWItU3RhdCB2IDYuMyAtLT4NCjxwIGNsYXNzPVwiY3Jl YXRvclwiPk1hZGUgd2l0aCAlYw0KYW5kIHdpdGggPGEgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNv bS9pdGYvb3JnLWV4cG9ydC1oZWFkXCI+DQpvcmctZXhwb3J0LWhlYWQsIGEgYmxvZyBleHBvcnRl cjwvYT4uPC9wPg0KPHAgY2xhc3M9XCJjcmVhdG9yXCI+DQo8YSBocmVmPVwiaHR0cHM6Ly93d3cu dmlkYWwtcm9zc2V0Lm5ldC9jc3Mvb3JnLmNzc1wiPg0KVGhlIGNzcyBmaWxlIG9mIHRoaXMgYmxv ZyA8L2E+IGlzIG1haW5seSB0aGUgcmVzdWx0IG9mDQo8YSBocmVmPVwiaHR0cHM6Ly9naXRodWIu Y29tL2dvbmd6aGl0YWFvL29yZ2Nzc1wiPlpoaXRhbyBHb25nJ3Mgd29yay48L2E+DQo8L3A+DQo8 cCBjbGFzcz1cImNyZWF0b3JcIj4NCjxhIGhyZWY9XCJodHRwczovL3d3dy5vcmdtb2RlLm9yZ1wi Pg0KPGltZyBib3JkZXI9XCIwXCIgYWx0PVwib3JnbW9kZVwiIHNyYz1cIm9yZ21vZGUtbG9nby5q cGdcIiAgd2lkdGg9XCI2OVwiIGhlaWdodD1cIjY5XCIgY2xhc3M9XCJjZW50ZXJcIj4NCjwvYT4N CjxhIGhyZWY9XCJodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VtYWNzL1wiPg0KPGltZyBi b3JkZXI9XCIwXCIgYWx0PVwiZW1hY3NcIiBzcmM9XCJlbWFjcy1sb2dvLmpwZ1wiICB3aWR0aD1c IjY5XCIgaGVpZ2h0PVwiNjlcIiBjbGFzcz1cImNlbnRlclwiPg0KPC9hPg0KPGEgaHJlZj1cImh0 dHBzOi8vcG9zYXRpdi5vcmcvaXNzby9cIj4NCjxpbWcgYm9yZGVyPVwiMFwiIGFsdD1cImlzc29c IiBzcmM9XCJpc3NvLWxvZ28uanBnXCIgIHdpZHRoPVwiNjlcIiBoZWlnaHQ9XCI2OVwiIGNsYXNz PVwiY2VudGVyXCI+DQo8L2E+DQo8L2E+DQo8YSBocmVmPVwiaHR0cHM6Ly93d3cuZGViaWFuLm9y Z1wiPg0KPGltZyBib3JkZXI9XCIwXCIgYWx0PVwiZGViaWFuXCIgc3JjPVwiZGViaWFuLWxvZ28u anBnXCIgIHdpZHRoPVwiNjlcIiBoZWlnaHQ9XCI2OVwiIGNsYXNzPVwiY2VudGVyXCI+DQo8L2E+ DQo8YSBocmVmPVwiaHR0cHM6Ly9teGxpbnV4Lm9yZy9cIj4NCjxpbWcgYm9yZGVyPVwiMFwiIGFs dD1cIm14bGludXhcIiBzcmM9XCJteC1sb2dvLmpwZ1wiICB3aWR0aD1cIjY5XCIgaGVpZ2h0PVwi NjlcIiBjbGFzcz1cImNlbnRlclwiPg0KPC9hPg0KPC9wPiINCikNCg0KKHNldHEgb3JnLWV4cG9y dC1oZWFkLXRhZ3MtcGFnZSAiVGFncyIpIDsgdXNlZCBmb3IgdGhlIHRhZ3MgdG8gbGluayB0byBh IHBhZ2UNCg0KKHNldHEgb3JnLWV4cG9ydC1oZWFkLWxpbmstZmlsZXMtdG8tZXhwb3J0IChsaXN0 ICJmaWxlIiAidmlkZW8iKSkgOztMaW5rIHR5cGVzIHdob3NlIHBhdGhzIGFyZSBnb25uYSBiZSBj b3BpZWQgd2l0aCBoYXJkIGxpbmtzDQo7dXNlZnVsIGlmIHVzaW5nIGN1c3RvbSBsaW5rcw0KDQoo c2V0cSBvcmctZXhwb3J0LWhlYWQtdXNpbmctdmlkZW8tbGlua3MgdCkNCg0KKHNldHEgb3JnLWV4 cG9ydC1oZWFkLWNsaWNrLXRvYy1oMiB0KSA7OyBNYWtlIHRoZSBoZWFkZXIgb2YgVE9DIGNsaWNr YWJsZSwgc28geW91IGNhbiB3cml0ZSBDU1MgZm9yIGNsaWNrIHRvIGRpc3BsYXkNCg0KOztFbmQg Y29uZmlnDQoNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQtLXJ1bi1vbi10ZW1wLWNvcHktYnVmZmVy IChmdW5jdGlvbi10by1ydW4gJnJlc3QgYXJncykNCiAgIlJ1bnMgZnVuY3Rpb24gb24gYSB0ZW1w IGJ1ZmZlciB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgb3JpZ2luYWwgYnVmZmVyIg0KICAoc2F2 ZS1leGN1cnNpb24NCiAgICAobGV0ICgodGVtcC1idWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIg InRtcCIpKSkNCiAgICAgIChjb3B5LXRvLWJ1ZmZlciB0ZW1wLWJ1ZmZlciAocG9pbnQtbWluKSAo cG9pbnQtbWF4KSkNCiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHRlbXAtYnVmZmVyDQogICAg ICAgIChvcmctbW9kZSkNCiAgICAgICAgKG91dGxpbmUtc2hvdy1hbGwpDQogICAgICAgIChhcHBs eSBmdW5jdGlvbi10by1ydW4gYXJncykpDQogICAgICAoa2lsbC1idWZmZXIgdGVtcC1idWZmZXIp KSkpDQoNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQgKCZvcHRpb25hbCBkaXJlY3RvcnktbmFtZSBi YWNrZW5kIHJlZXhwb3J0KQ0KICAiVXBkYXRlcyB0aGUgaGFzaGVzIGFuZCByZWV4cG9ydCBhbGwg Y2hhbmdlZCBoZWFkaW5ncyBpZiByZWV4cG9ydCBpcyBuaWwuDQpSZWV4cG9ydHMgYWxsIGhlYWRp bmdzIGlmIHJlZXhwb3J0IGlzIG5vbi1uaWwiDQogIChpbnRlcmFjdGl2ZSkNCiAgKGxldCAoKGRp cmVjdG9yeS1uYW1lIChvciBkaXJlY3RvcnktbmFtZSAocmVhZC1kaXJlY3RvcnktbmFtZSAiRGly ZWN0b3J5OiIpKSkNCiAgICAgICAgKGJhY2tlbmQgKG9yIGJhY2tlbmQgImh0bWwiKSkpDQogICAg KG1ha2UtZGlyZWN0b3J5IGRpcmVjdG9yeS1uYW1lIHQpDQogICAgKG9yZy1leHBvcnQtaGVhZC0t cnVuLW9uLXRlbXAtY29weS1idWZmZXIgIydvcmctZXhwb3J0LWhlYWQtLW1vZGlmeS1idWZmZXIt YXN0IGRpcmVjdG9yeS1uYW1lIGJhY2tlbmQgcmVleHBvcnQpDQogICAgKG9yZy1leHBvcnQtaGVh ZC0tdXBkYXRlLWhhc2hlcykpKQ0KDQoNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQtcmVleHBvcnQg KCZvcHRpb25hbCBkaXJlY3RvcnktbmFtZSBiYWNrZW5kKQ0KICAiUmVleHBvcnRzIGFsbCB0aGUg aGVhZGluZ3MiDQogIChpbnRlcmFjdGl2ZSkNCiAgKG9yZy1leHBvcnQtaGVhZCBkaXJlY3Rvcnkt bmFtZSBiYWNrZW5kIHQpKQ0KDQoNCjs7VE9ETyB0aGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4g YSBsaXN0IG9mIGhhc2hlcyB0byB1cGRhdGUgdGhlIG9yaWdpbmFsIGJ1ZmZlcg0KKGRlZnVuIG9y Zy1leHBvcnQtaGVhZC0tbW9kaWZ5LWJ1ZmZlci1hc3QgKGRpcmVjdG9yeS1wYXRoIGJhY2tlbmQg cmVleHBvcnQpDQogICJFeHBvcnQgYWxsIHN1YnRyZWVzIHRoYXQgYXJlICpub3QqIHRhZ2dlZCB3 aXRoIDpub2V4cG9ydDogdG8NCnNlcGFyYXRlIGZpbGVzLg0KDQpTdWJ0cmVlcyB0aGF0IGRvIG5v dCBoYXZlIHRoZSA6RVhQT1JUX0ZJTEVfTkFNRTogcHJvcGVydHkgc2V0DQphcmUgZXhwb3J0ZWQg dG8gYSBmaWxlbmFtZSBkZXJpdmVkIGZyb20gdGhlIGhlYWRsaW5lIHRleHQuIg0KICAob3JnLWV4 cG9ydC1oZWFkLS11cGRhdGUtaGFzaGVzKQ0KICAob3JnLWV4cG9ydC1leHBhbmQtaW5jbHVkZS1r ZXl3b3JkKQ0KDQogIDs7IENyZWF0ZSBzdW1tYXJpZXMgYmVmb3JlIGRlbGV0aW5nIHRoZSBwb3N0 cw0KICAob3JnLWV4cG9ydC1oZWFkLS1jcmVhdGUtc3VtbWFyaWVzKQ0KICAob3JnLWV4cG9ydC1o ZWFkLS1jcmVhdGUtZW50cnktdGFncykgOzsgY3JlYXRlcyB0YWcgbGlzdHMNCiAgOzsgRGVsZXRl IGNvbnRlbnQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGV4cG9ydGVkIGFuZCBzZXQgaXQgdG8gbm9y ZWV4cG9ydA0KICAoaWYgKG5vdCByZWV4cG9ydCkNCiAgICAgIChvcmctZXhwb3J0LWhlYWQtLWRl bGV0ZS1ub3JlZXhwb3J0KSkNCg0KDQoNCiAgOztHZXQgaGVhZGxpbmVzLCBhbmQgZ2VuZXJhdGUg bWFjcm9zIChwcmV2aW91cyBwb3N0LCBldGMpDQogIChsZXQqICgoaGVhZGxpbmVzLWhhc2gtbGlz dCAob3JnLWV4cG9ydC1oZWFkLS1nZXQtaGVhZGxpbmVzKSkNCiAgICAgICAgIChoZWFkbGluZXMt aGFzaCAoY2FyIGhlYWRsaW5lcy1oYXNoLWxpc3QpKQ0KICAgICAgICAgKGhlYWRsaW5lcy1saXN0 IChjZHIgaGVhZGxpbmVzLWhhc2gtbGlzdCkpDQogICAgICAgICA7O0luc2VydCBleHRyYSB0aGlu Z3MgaW4gdGhlIGhlYWRsaW5lcy1oYXNoIHRvIGJlIHVzZWQgZm9yIGZpeGluZyB0aGUgbWFjcm9z DQogICAgICAgICA7O1RvIGRlZmluZSBuZXcgaGVhZGxpbmUtbGV2ZWwgbWFjcm9zLCBhZGQgZXh0 cmEgZnVuY3Rpb25zIGhlcmUNCiAgICAgICAgIChoZWFkbGluZXMtaGFzaCAob3JnLWV4cG9ydC1o ZWFkLS1pbnNlcnQtbmV4dC1wcmV2aW91cy1oZWFkbGluZSBoZWFkbGluZXMtaGFzaCBoZWFkbGlu ZXMtbGlzdCkpDQogICAgICAgICAoaGVhZGxpbmVzLWhhc2ggKG9yZy1leHBvcnQtaGVhZC0tYWRk LXRpdGxlLW1hY3JvIGhlYWRsaW5lcy1oYXNoIGhlYWRsaW5lcy1saXN0KSkNCiAgICAgICAgIDs7 Tm93IHdlIGdldCBnbG9iYWwgbWFjcm9zIHN1Y2ggYXMgdGhlIGluZGV4IGFuZCB0aGUgcmV2ZXJz ZWQgaW5kZXgNCiAgICAgICAgIChnbG9iYWwtbWFjcm9zIChvcmctZXhwb3J0LWhlYWQtLWdlbmVy YXRlLWluZGV4LWFsaXN0IGhlYWRsaW5lcy1saXN0IGhlYWRsaW5lcy1oYXNoKSkNCg0KDQogICAg ICAgICA7O05vdyB3ZSBnZXQgdGhlIHRlbXBsYXRlcy4gQXQgdGhlIG1vbWVudCBpdCBpcyBvbmx5 IHRoZSBoZWFkZXINCiAgICAgICAgIChoZWFkZXIgKG9yZy1leHBvcnQtaGVhZC0tZ2V0LWNvbnRl bnQtc3VidHJlZS1tYXRjaCAiaGVhZGVyIikpDQogICAgICAgICA7O0FuZCBub3cgdGhlIGZvb3Rl ciwgZm9yIGV4YW1wbGUsIGZvciBjb21tZW50cw0KICAgICAgICAgKGZvb3RlciAob3JnLWV4cG9y dC1oZWFkLS1nZXQtY29udGVudC1zdWJ0cmVlLW1hdGNoICJmb290ZXIiKSkpDQoNCg0KICAgIDs7 Rm9yIGVhY2ggbm90IG5vZXhwb3J0L25vcmVleHBvcnQgaGVhZGxpbmUgYXBwbHkgdGhlIHRlbXBs YXRlLCBpLmUuIGNvcHkgY29udGVudHMNCiAgICAob3JnLWV4cG9ydC1oZWFkLS1ydW4tb24tZWFj aC1oZWFkaW5nDQogICAgICMnKGxhbWJkYSAoKQ0KICAgICAgICAgKG9yZy1leHBvcnQtaGVhZC0t aW5zZXJ0LW9uLWhlYWRlciBoZWFkZXIpDQogICAgICAgICAob3JnLWV4cG9ydC1oZWFkLS1pbnNl cnQtb24tZm9vdGVyIGZvb3RlcikpDQogICAgICItbm9leHBvcnQtbm9yZWV4cG9ydCIpDQoNCiAg ICA7O0FmdGVyIGFwcGx5aW5nIHRoZSB0ZW1wbGF0ZSB3ZSByZXBsYWNlIHRoZSBtYWNyb3Mgb24g YWxsIHBsYWNlcw0KICAgIChvcmctZXhwb3J0LWhlYWQtLXJ1bi1vbi1lYWNoLWhlYWRpbmcNCiAg ICAgIycobGFtYmRhICgpDQogICAgICAgICAobGV0KiAoKGhlYWRsaW5lLW5hbWUgKG9yZy1leHBv cnQtaGVhZC0taGVhZGxpbmUpKQ0KICAgICAgICAgICAgICAgIChoZWFkbGluZS1hbGlzdCAoZ2V0 aGFzaCBoZWFkbGluZS1uYW1lIGhlYWRsaW5lcy1oYXNoIG5pbCkpDQogICAgICAgICAgICAgICAg KG1hY3JvLWFsaXN0IChhcHBlbmQgaGVhZGxpbmUtYWxpc3QgZ2xvYmFsLW1hY3JvcykpKSA7O2lu IHJldmVyc2Ugb3JkZXIgc28gdGhhdCBoZWFkbGluZSBwcm9wZXJ0aWVzIGNhbiBvdmVyc2hhZG93 IHRoZXNlDQogICAgICAgICAgIChvcmctZXhwb3J0LWhlYWQtLXJlcGxhY2UtaGVhZGxpbmUtbWFj cm9zIG1hY3JvLWFsaXN0KSkpDQogICAgICItbm9leHBvcnQtbm9yZWV4cG9ydCIpDQoNCg0KICAg IDs7R2V0IHRoZSBwYXJzZXIgdHJlZSBhbmQgdGhlIGhlYWRsaW5lcyB0aGF0IHdpbGwgYmVjb21l IGZpbGVzDQogICAgKGxldCogICgoYXN0IChvcmctZWxlbWVudC1wYXJzZS1idWZmZXIpKSkNCg0K DQogICAgICAgIDs7Rml4IGxpbmtzIC0tIG9yZGVyIGlzIGltcG9ydGFudC4gRmlyc3QgZXh0ZXJu YWwgdGhhbiBmdXp6eSBsaW5rcw0KICAgICAgICAob3JnLWVsZW1lbnQtbWFwIGFzdCAnbGluaw0K ICAgICAgICAgIChsYW1iZGEgKGxpbmspDQogICAgICAgICAgICAobGV0KiAoKGxpbmsgKG9yIChv cmctZXhwb3J0LWhlYWQtLWZpeC1maWxlLWV4dGVybmFsLWxpbmstYXN0IGRpcmVjdG9yeS1wYXRo IGxpbmspIGxpbmspKQ0KICAgICAgICAgICAgICAgICAgIChsaW5rIChvciAob3JnLWV4cG9ydC1o ZWFkLS1maXgtbG9jYWwtbGluay1hc3QgaGVhZGxpbmVzLWhhc2ggbGluaykgbGluaykpKSkpKQ0K DQogICAgICA7O0NvbnZlcnQgdGhlIGJ1ZmZlciB0byBjb250YWluIHRoZSBuZXcgQVNULA0KICAg ICAgOzt0aGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBleHBvcnRlciBleHBlY3RzIHRoZSBjb250 ZW50IHRvIGJlIGluIGEgYnVmZmVyDQogICAgICAoZXJhc2UtYnVmZmVyKQ0KICAgICAgKGluc2Vy dCAob3JnLWVsZW1lbnQtaW50ZXJwcmV0LWRhdGEgYXN0KSkNCg0KDQogICAgICAob3V0bGluZS1z aG93LWFsbCkNCg0KICAgICAgOztGaW5hbGx5IGV4cG9ydCBhbGwgdGhlIGhlYWRlcnMNCg0KICAg ICAgKG9yZy1leHBvcnQtaGVhZC1leHBvcnQtaGVhZGVycyBkaXJlY3RvcnktcGF0aCBiYWNrZW5k KSkpKQ0KDQoNCg0KOztOb3QgZXZlcnl0aGluZyBjYW4gYmUgZG9uZSB1c2luZyB0aGUgQVNULCBz YWRseS4NCjs7T3JnIGVsZW1lbnQgaGFzIG5vIHN1cHBvcnQgZm9yIGFkZGluZyBjdXN0b20gcHJv cGVydGllcyB0byBoZWFkbGluZXMNCjs7Tm9yIGRvZXMgaXQgaGF2ZSBhIG5pY2UgaW50ZXJmYWNl IHRvIGdyYWIgdGhlIGNvbnRlbnRzIHdpdGhvdXQgdGhlIHByb3BlcnR5IGRyYXdlcg0KOztJZGVh bGx5IGV2ZXJ5dGhpbmcgd291bGQgYmUgZG9uZSB1c2luZyB0aGUgQVNUIGFuZCBvcmctZWxlbWVu dCwgc2luY2UgaXQgaXMNCjs7TGVzcyBwcm9uZSB0byB3cml0dGluZyBidWdzIHdoZW4gdXNpbmcg aXQuDQo7O1NvIHJpZ2h0IG5vdyBpdCBpcyBvbmx5IHVzZWQgZm9yIGZpeGluZyBsaW5rcw0KDQo7 O1NUQVJUIE9GIE5PTiBBU1QgKG5vbiBvcmctZWxlbWVudCkgU0VTU0lPTg0KKGRlZnVuIG9yZy1l eHBvcnQtaGVhZC0tcnVuLW9uLWVhY2gtaGVhZGluZyhmbiBtYXRjaCAgJnJlc3QgYXJncykNCiAg IlB1dHMgdGhlIHBvaW50IG9uIGVhY2ggaGVhZGluZyBhbmQgcnVucyB0aGUgZnVuY3Rpb24uIE5l ZWRlZCBmb3IgZXhwb3J0aW5nIGFsbCBoZWFkaW5ncw0KICAgZnJvbSAgaHR0cDovL3ByYWdtYXRp Y2VtYWNzLmNvbS9lbWFjcy9leHBvcnQtb3JnLW1vZGUtaGVhZGxpbmVzLXRvLXNlcGFyYXRlLWZp bGVzLyINCiAgKHNhdmUtZXhjdXJzaW9uDQogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkNCiAg ICAoZ290by1jaGFyIChyZS1zZWFyY2gtZm9yd2FyZCAiXioiKSkNCiAgICAoc2V0LW1hcmsgKGxp bmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkNCiAgICAoZ290by1jaGFyIChwb2ludC1tYXgpKQ0KICAg IChvcmctbWFwLWVudHJpZXMNCiAgICAgKGxhbWJkYSAoKQ0KICAgICAgIChhcHBseSBmbiBhcmdz KSkNCiAgICAgbWF0Y2ggJ3JlZ2lvbi1zdGFydC1sZXZlbCkNCiAgICAoZGVhY3RpdmF0ZS1tYXJr KSkpDQoNCjs7IGljaQ0KOzsgKGxldCAgKChvcmctZXhwb3J0LWJlZm9yZS1wYXJzaW5nLWhvb2sg JyhvcmctcmVmLWNzbC1wcmVwcm9jZXNzLWJ1ZmZlcikpKQ0KOzsgKG9yZy1vcGVuLWZpbGUgIChv cmctaHRtbC1leHBvcnQtdG8taHRtbCkpKQ0KKGRlZnVuIG9yZy1leHBvcnQtaGVhZC1leHBvcnQt aGVhZGVycyAoZGlyZWN0b3J5LW5hbWUgYmFja2VuZCkNCiAgIkV4cG9ydHMgZWFjaCBoZWFkaW5n IHRvIGRpcmVjdG9yeS1uYW1lIHVzaW5nIGJhY2tlbmQiDQogIChpZiAoZXF1YWwgYmFja2VuZCAi aHRtbCIpDQogICAgICAob3JnLWV4cG9ydC1oZWFkLS1ydW4tb24tZWFjaC1oZWFkaW5nDQogICAg ICAgIycobGFtYmRhICgpDQogICAgICAgICAgIChvcmctc2V0LXByb3BlcnR5DQogICAgICAgICAg ICAiRVhQT1JUX0ZJTEVfTkFNRSINCiAgICAgICAgICAgIChjb25jYXQgZGlyZWN0b3J5LW5hbWUg KG9yZy1leHBvcnQtaGVhZC0tZXNjYXBlZC1oZWFkbGluZSkpKQ0KICAgICAgICAgICAoZGVhY3Rp dmF0ZS1tYXJrKQ0KICAgICAgICAgICAobGV0ICgob3JnLWV4cG9ydC1iZWZvcmUtcGFyc2luZy1o b29rICcob3JnLXJlZi1jc2wtcHJlcHJvY2Vzcy1idWZmZXIpKSkNCiAgICAgICAgICAgICAgICAo Y2wtbGV0ZiAoKChzeW1ib2wtZnVuY3Rpb24gJ29yZy1leHBvcnQtZ2V0LXJlZmVyZW5jZSkgKHN5 bWJvbC1mdW5jdGlvbiAnb3JnLWV4cG9ydC1nZXQtcmVmZXJlbmNlLWN1c3RvbSkpKQ0KICAgICAg ICAgICAgICAgICAgKGlmIG9yZy1leHBvcnQtaGVhZC1jbGljay10b2MtaDINCiAgICAgICAgICAg ICAgICAgICAgICAoY2wtbGV0ZiAoKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OyhzeW1ib2wtZnVuY3Rpb24gJ29yZy1odG1sLXRvYykNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzeW1ib2wtZnVuY3Rpb24gJ29yZy1leHBvcnQtaGVhZC0tY3VzdG9tLXRvYykp KQ0KICAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1odG1sLWV4cG9ydC10by1odG1sIG5pbCB0 KSkpKSkNCiAgICAgICAgICAgKHNldC1idWZmZXItbW9kaWZpZWQtcCB0KSkgIi1ub2V4cG9ydC1u b3JlZXhwb3J0IikpDQogIChpZiAoZXF1YWwgYmFja2VuZCAicGRmIikNCiAgICAgIChvcmctZXhw b3J0LWhlYWQtLXJ1bi1vbi1lYWNoLWhlYWRpbmcNCiAgICAgICAjJyhsYW1iZGEgKCkNCiAgICAg ICAgICAgKG9yZy1zZXQtcHJvcGVydHkNCiAgICAgICAgICAgICJFWFBPUlRfRklMRV9OQU1FIg0K ICAgICAgICAgICAgKGNvbmNhdCBkaXJlY3RvcnktbmFtZSAob3JnLWV4cG9ydC1oZWFkLS1lc2Nh cGVkLWhlYWRsaW5lKSkpDQogICAgICAgICAgIChkZWFjdGl2YXRlLW1hcmspDQogICAgICAgICAg IChvcmctbGF0ZXgtZXhwb3J0LXRvLXBkZiBuaWwgdCkNCiAgICAgICAgICAgKHNldC1idWZmZXIt bW9kaWZpZWQtcCB0KSkgIi1ub2V4cG9ydC1ub3JlZXhwb3J0IikpKQ0KDQooZGVmdW4gb3JnLWV4 cG9ydC1oZWFkLS1nb3RvLWhlYWRlcigmb3B0aW9uYWwgbm8tbmV3LWxpbmUpDQogICJQdXRzIHBv aW50IGFmdGVyIHByb3BlcnR5LWJsb2NrIGlmIGl0IGV4aXN0cywgaW4gYW4gZW1wdHkgbGluZQ0K ICBieSBjcmVhdGluZyBhIG5ldyBsaW5lLCB1bmxlc3Mgbm8tbmV3LWxpbmUgaXMgbm9uIG5pbCBh bmQgcmV0dXJucyBwb2ludCINCiAgKGludGVyYWN0aXZlKQ0KICAob3JnLWJhY2stdG8taGVhZGlu ZyB0KQ0KICAobGV0KiAoKGJlZy1lbmQgKG9yZy1nZXQtcHJvcGVydHktYmxvY2spKQ0KICAgICAg ICAgKGVuZCAoY2RyIGJlZy1lbmQpKSkNCiAgICAoZ290by1jaGFyIChvciBlbmQgKHBvaW50KSkp KQ0KICAoZ290by1jaGFyIChwb2ludC1hdC1ib2wgMikpIDs7QWR2YW5jZSBvbmUgbGluZQ0KICAo aWYgKG5vdCBuby1uZXctbGluZSkNCiAgICAgIChwcm9nbg0KICAgICAgICAobmV3bGluZSkNCiAg ICAgICAgKGdvdG8tY2hhciAocG9pbnQtYXQtYm9sIDApKSkpIDs7R28gYmFjayBvbmUgbGluZQ0K ICAocG9pbnQpKQ0KDQooZGVmdW4gb3JnLWV4cG9ydC1oZWFkLS1nb3RvLWZvb3Rlcigmb3B0aW9u YWwgbm8tbmV3LWxpbmUpDQogICJQdXRzIHBvaW50IGF0IGVuZCBvZiB1YnRyZWUgYW5kIHJldHVy bnMgcG9pbnQiDQogIChpbnRlcmFjdGl2ZSkNCiAgKG9yZy1lbmQtb2Ytc3VidHJlZSkNCiAgKGlm IChub3Qgbm8tbmV3LWxpbmUpDQogICAgICAocHJvZ24NCiAgICAgICAgKG5ld2xpbmUpKSkNCiAg KHBvaW50KSkNCg0KDQooZGVmdW4gb3JnLWV4cG9ydC1oZWFkLS1nZXQtY29udGVudC1zdWJ0cmVl LWF0LXBvaW50KCkNCiAgKGludGVyYWN0aXZlKQ0KICAiR2V0cyB0aGUgY29udGVudCBvZiB0aGUg c3VidHJlZSBhdCBwb2ludCwgcGVyZm9ybWluZyB0aGUgbmVjZXNzYXJ5IGluY2x1ZGVzDQp0byBj aGVjayBpZiB0aGUgaGFzaCBoYXMgY2hhbmdlZCINCiAgKHNhdmUtZXhjdXJzaW9uDQogICAgKGRl YWN0aXZhdGUtbWFyayB0KQ0KICAgIChsZXQqICgoc3RhcnQgKG9yZy1leHBvcnQtaGVhZC0tZ290 by1oZWFkZXIgdCkpDQogICAgICAgICAgKGVuZCAob3JnLWVuZC1vZi1zdWJ0cmVlIHQpKQ0KICAg ICAgICAgIChidWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkNCiAgICAgICAgICAoY29udGVudCAoYnVm ZmVyLXN1YnN0cmluZyBzdGFydCBlbmQpKQ0KICAgICAgICAgIChpbmNsdWRlLXJlICJeWyBcdF0q I1xcK0lOQ0xVREU6IikpDQogICAgICAoaWYgKHN0cmluZy1tYXRjaCBpbmNsdWRlLXJlIGNvbnRl bnQpDQogICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXINCiAgICAgICAgICAgIChpbnNlcnQgY29u dGVudCkNCiAgICAgICAgICAgIChvcmctbW9kZSkNCiAgICAgICAgICAgIChvcmctZXhwb3J0LWV4 cGFuZC1pbmNsdWRlLWtleXdvcmQpDQogICAgICAgICAgICAoYnVmZmVyLXN0cmluZykpDQogICAg ICBjb250ZW50KSkpKQ0KDQoNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQtLWdldC1zdW1tYXJ5LWF0 LXBvaW50KCZvcHRpb25hbCBuLXBhcmFncmFwaHMgbi1jaGFycykNCiAgIkdldHMgdGhlIHN1bW1h cnkgb2YgdGhlIHN1YnRyZWUgYXQgcG9pbnQiDQogIChpbnRlcmFjdGl2ZSkNCiAgKHNhdmUtZXhj dXJzaW9uDQogICAgKGRlYWN0aXZhdGUtbWFyayB0KQ0KICAgIChsZXQqICgobi1wYXJhZ3JhcGhz IChvciBuLXBhcmFncmFwaHMgMSkpDQogICAgICAgICAgIChuLWNoYXJzIChvciBuLWNoYXJzIDIw MCkpDQogICAgICAgICAgKHN0YXJ0IChvcmctZXhwb3J0LWhlYWQtLWdvdG8taGVhZGVyIHQpKQ0K ICAgICAgICAgIChlbmRtYXggKHNhdmUtZXhjdXJzaW9uIChvcmctZW5kLW9mLXN1YnRyZWUgdCkp KQ0KICAgICAgICAgIChlbmRwYXJhZ3JhcGgNCiAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uDQog ICAgICAgICAgICAgKGRvdGltZXMgKGkgbi1wYXJhZ3JhcGhzKQ0KICAgICAgICAgICAgICAgKG9y Zy1mb3J3YXJkLXBhcmFncmFwaCkpDQogICAgICAgICAgICAgKC0gKHBvaW50KSAxKSkpDQogICAg ICAgICAgKGVuZCAobWluIGVuZG1heCBlbmRwYXJhZ3JhcGggKCsgc3RhcnQgbi1jaGFycykpKSkN CiAgICAgIChidWZmZXItc3Vic3RyaW5nIHN0YXJ0IGVuZCkpKSkNCg0KDQooZGVmdW4gb3JnLWV4 cG9ydC1oZWFkLS1jcmVhdGUtc3VtbWFyaWVzKCkNCiAgIkNyZWF0ZXMgc3VtbWFyeSBmb3IgYWxs IHRoZSBoZWFkaW5ncyINCiAgKG9yZy1leHBvcnQtaGVhZC0tcnVuLW9uLWVhY2gtaGVhZGluZw0K ICAgIycobGFtYmRhKCkNCiAgICAgICAobGV0KiAoKHN1bW1hcnkgKG9yZy1lbnRyeS1nZXQtd2l0 aC1pbmhlcml0YW5jZSAiU1VNTUFSWSIpKQ0KICAgICAgICAgICAgICAoc3VtbWFyeSAob3Igc3Vt bWFyeSAob3JnLWV4cG9ydC1oZWFkLS1nZXQtc3VtbWFyeS1hdC1wb2ludCkpKQ0KICAgICAgICAg ICAgICAoc3VtbWFyeSAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJcbiIgIiAiIHN1bW1hcnkp KSkNCiAgICAgICAgIChpZiBzdW1tYXJ5DQogICAgICAgICAgICAgKG9yZy1zZXQtcHJvcGVydHkg IlNVTU1BUlkiIHN1bW1hcnkpKSkpDQogICAiLW5vZXhwb3J0IikpDQoNCihkZWZ1biBvcmctZXhw b3J0LWhlYWQtLWNyZWF0ZS1lbnRyeS10YWdzKCkNCiAgIkNyZWF0ZXMgbGlzdCBvZiB0YWdzIHdp dGggbGluIg0KICAob3JnLWV4cG9ydC1oZWFkLS1ydW4tb24tZWFjaC1oZWFkaW5nDQogICAjJyhs YW1iZGEoKQ0KICAgICAgIChsZXQqICgoZW50cnktdGFncyAoYXNzb2MgIkFMTFRBR1MiIChvcmct ZW50cnktcHJvcGVydGllcykpKQ0KICAgICAgICAgICAgIChlbnRyeS10YWdzICh3aGVuIGVudHJ5 LXRhZ3MgKGRlbGV0ZSAiIiAoc3BsaXQtc3RyaW5nIChjZHIgZW50cnktdGFncykgIjoiKSkpKQ0K ICAgICAgICAgICAgICh1cmwgb3JnLWV4cG9ydC1oZWFkLXRhZ3MtcGFnZSkNCiAgICAgICAgICAg ICAodGFncy10ZXh0LXVybCAiIikNCiAgICAgICAgICAgICAodGFncy10ZXh0ICIiKSkNCiAgICAg ICAgIChkb2xpc3QgKHRhZyBlbnRyeS10YWdzKQ0KICAgICAgICAgICAodW5sZXNzIChvciAoc3Ry aW5nPSB0YWcgInJlZXhwb3J0IikgKHN0cmluZz0gdGFnICJub2V4cG9ydCIpIChzdHJpbmc9IHRh ZyAibm9yZWV4cG9ydCIpKQ0KICAgICAgICAgICAgIChzZXRxICB0YWdzLXRleHQtdXJsIChjb25j YXQgdGFncy10ZXh0LXVybCAiW1tmaWxlOiIgKG9yZy1leHBvcnQtaGVhZC0tZXNjYXBlIHVybCkg Ii5vcmc6OiMiIHRhZyAiXVsjInRhZyJdXSAiKSkNCiAgICAgICAgICAgICAoc2V0cSAgdGFncy10 ZXh0IChjb25jYXQgdGFncy10ZXh0IHRhZyAiICIpKSkpDQogICAgICAgICAob3JnLXNldC1wcm9w ZXJ0eSAiVEFHU1VSTCIgdGFncy10ZXh0LXVybCkNCiAgICAgICAgIChvcmctc2V0LXByb3BlcnR5 ICJUQUdTVEVYVCIgdGFncy10ZXh0KSkpDQogICAiLW5vZXhwb3J0IikpDQoNCg0KDQo7OzsgSEFT SCBjb2RlDQo7O0lkZWEgZnJvbSBodHRwczovL2VtYWNzLnN0YWNrZXhjaGFuZ2UuY29tL2EvMzkz NzYvMjAxNjUNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQtLXVwZGF0ZS1oYXNoZXMoKQ0KICAiVXBk YXRlcyB0aGUgaGFzaGVzIG9mIGFsbCB0aGUgaGVhZGluZ3MiDQogIChvcmctZXhwb3J0LWhlYWQt LXJ1bi1vbi1lYWNoLWhlYWRpbmcNCiAgICMnKGxhbWJkYSgpDQogICAgICAgKGxldCAoKG5ldy1o YXNoICAoZm9ybWF0ICIlcyIgKG9yZy1leHBvcnQtaGVhZC1nZXQtaGFzaC12YWx1ZS1jb250ZW50 KSkpDQogICAgICAgICAgICAgKG9sZC1oYXNoIChvcmctZW50cnktZ2V0LXdpdGgtaW5oZXJpdGFu Y2UgIkhBU0giKSkNCiAgICAgICAgICAgICAob2xkZXItaGFzaCAob3JnLWVudHJ5LWdldC13aXRo LWluaGVyaXRhbmNlICJQUkVWSU9VUy1IQVNIIikpKQ0KICAgICAgICAgKGlmIChub3Qgb2xkLWhh c2gpDQogICAgICAgICAgICAgKHByb2duDQogICAgICAgICAgICAgICAob3JnLXNldC1wcm9wZXJ0 eSAiQ1JFQVRJT04tREFURSIgKGZvcm1hdC10aW1lLXN0cmluZyAiJVktJW0tJWQiKSkpKQ0KICAg ICAgICAgOztJZiB0aGVyZSB3YXMgYSBjaGFuZ2UgbWFkZQ0KICAgICAgICAgKGlmIChub3QgKGVx dWFsIG5ldy1oYXNoIG9sZC1oYXNoKSkNCiAgICAgICAgICAgICAocHJvZ24NCiAgICAgICAgICAg ICAgIChvcmctc2V0LXByb3BlcnR5ICJNT0RJRklDQVRJT04tREFURSIgKGZvcm1hdC10aW1lLXN0 cmluZyAiJVktJW0tJWQiKSkNCiAgICAgICAgICAgICAgIChvcmctc2V0LXByb3BlcnR5ICJIQVNI IiBuZXctaGFzaCkpKQ0KICAgICAgICAgOztTZXR0aW5nIHByb3BlcnR5IGlzIGV4cGVuc2l2ZQ0K ICAgICAgICAgKGlmIChub3QgKGVxdWFsIG9sZC1oYXNoIG9sZGVyLWhhc2gpKQ0KICAgICAgICAg ICAgICAgKG9yZy1zZXQtcHJvcGVydHkgIlBSRVZJT1VTLUhBU0giIChvciBvbGQtaGFzaCAiIikp KSkpDQogICAiLW5vZXhwb3J0IikpDQoNCg0KKGRlZnVuIG9yZy1leHBvcnQtaGVhZC1nZXQtaGFz aC12YWx1ZS1jb250ZW50KCkNCiAgIkdldHMgdGhlIGhhc2ggb2YgdGhlIHN1YnRyZWUgYXQgcG9p bnQiDQogIChvcmctZXhwb3J0LWhlYWQtaGFzaC1mdW5jdGlvbiAob3JnLWV4cG9ydC1oZWFkLS1n ZXQtY29udGVudC1zdWJ0cmVlLWF0LXBvaW50KSkpDQoNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQt aGFzaC1mdW5jdGlvbih0ZXh0KQ0KICAiRnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSBoYXNoIG9m IHRleHQuDQpDYW4gYmUgY2hhbmdlZCB0byBzb21ldGhpbmcgc3VjaCBhcyAobGVuZ3RoIHRleHQp IHRvIHJ1biBldmVuIGZhc3Rlci4NClNob3VsZG4ndCByYWxseSBhZmZlY3QgdGhlIHRpbWUgdG8g ZXhwb3J0IHVubGVzcyB5b3VyIGZpbGUgY29udGFpbnMgb3ZlciAxMDAgdGhvdXNhbmQgbGluZXMg b2YgdGV4dCINCiAgKG1kNSB0ZXh0KSkNCg0KOzs7RU5EIEhBU0ggQ09ERQ0KDQooZGVmdW4gb3Jn LWV4cG9ydC1oZWFkLS1kZWxldGUtbm9yZWV4cG9ydCgpDQogICJGYXN0ZXIgZXhwb3J0IGJ5IGRl bGV0aW5nIHRoaW5ncyB0aGF0IHdvbid0IGJlIGV4cG9ydGVkIHNvIHdlIGRvbid0IHByb2Nlc3Mg dGhlbSBhbmQgdGhlaXIgbGlua3MiDQogIChvcmctZXhwb3J0LWhlYWQtLXJ1bi1vbi1lYWNoLWhl YWRpbmcNCiAgICMnKGxhbWJkYSgpDQogICAgICAgKGxldCAoKG9sZC1oYXNoIChvcmctZW50cnkt Z2V0LXdpdGgtaW5oZXJpdGFuY2UgIlBSRVZJT1VTLUhBU0giKSkNCiAgICAgICAgICAgICAobmV3 LWhhc2ggKG9yZy1lbnRyeS1nZXQtd2l0aC1pbmhlcml0YW5jZSAiSEFTSCIpKSkNCiAgICAgICAg IDs7SWYgdGhlcmUgd2FzIGEgY2hhbmdlIG1hZGUNCiAgICAgICAgIChpZiAoZXF1YWwgbmV3LWhh c2ggb2xkLWhhc2gpDQogICAgICAgICAgICAgKHByb2duDQogICAgICAgICAgICAgICAob3JnLXRv Z2dsZS10YWcgIm5vcmVleHBvcnQiICdvbikNCiAgICAgICAgICAgICAgIDs7ZmFzdGVyIGV4cG9y dCBieSBkZWxldGluZyBub2V4cG9ydCB0aGluZ3MgYmVmb3JlIHByb2Nlc3NpbmcNCiAgICAgICAg ICAgICAgIChvcmctZXhwb3J0LWhlYWQtLWVyYXNlLWNvbnRlbnQtc3VidHJlZSkpKSkpDQogICAi LW5vZXhwb3J0LXJlZXhwb3J0IikpDQoNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQtLWVyYXNlLWNv bnRlbnQtc3VidHJlZSgpDQogIChzYXZlLWV4Y3Vyc2lvbg0KICAgIChsZXQgKChzdGFydCAob3Jn LWV4cG9ydC1oZWFkLS1nb3RvLWhlYWRlciB0KSkNCiAgICAgICAgICAoZW5kIChvcmctZW5kLW9m LXN1YnRyZWUpKSkNCiAgICAgIChkZWxldGUtcmVnaW9uIHN0YXJ0IGVuZCkpKSkNCg0KDQoNCihk ZWZ1biBvcmctZXhwb3J0LWhlYWQtLWdldC1oZWFkbGluZXMgKCkNCiAgIlJldHVybnMgYSB0dXBs ZSB0aGF0IGNvbnRhaW5zIGEgaGFzaHRhYmxlIG9mIGhlYWRsaW5lIG5hbWUgdG8gQWxpc3Qgb2Yg aGVhZGxpbmUgcHJvcGVydGllcw0KQXMgd2VsbCBhcyBhIGxpc3Qgb2YgdGhlIGhlYWRsaW5lIG5h bWVzIg0KICAobWVzc2FnZSAiMSIpDQogIChjbC1mbGV0ICgobWFrZS1oYXNoICgpDQogICAgICAg ICAgICAgICAgICAgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwpKQ0KICAgICAgICAgKGFk ZC10by1oYXNoIChoYXNodGFibGUpDQogICAgICAgICAgICAgICAgICAgICAgKHB1dGhhc2ggKG9y Zy1leHBvcnQtaGVhZC0taGVhZGxpbmUpIChvcmctZW50cnktcHJvcGVydGllcykgaGFzaHRhYmxl KSkpDQogICAgKGxldCAoKGhlYWRsaW5lcy1oYXNoIChtYWtlLWhhc2gpKQ0KICAgICAgICAgICho ZWFkbGluZXMtbGlzdCAoKSkpDQogICAgICAob3JnLWV4cG9ydC1oZWFkLS1ydW4tb24tZWFjaC1o ZWFkaW5nDQogICAgICAgIycobGFtYmRhKCkNCg0KICAgICAgICAgICAoYWRkLXRvLWhhc2ggaGVh ZGxpbmVzLWhhc2gpDQogICAgICAgICAgIChzZXRxIGhlYWRsaW5lcy1saXN0IChjb25zIChvcmct ZXhwb3J0LWhlYWQtLWhlYWRsaW5lKSBoZWFkbGluZXMtbGlzdCkpKQ0KICAgICAgICItbm9leHBv cnQiKQ0KICAgICAgKGNvbnMgaGVhZGxpbmVzLWhhc2ggaGVhZGxpbmVzLWxpc3QpKSkpDQoNCg0K KGRlZnVuIG9yZy1leHBvcnQtaGVhZC0taGVhZGxpbmUgKCkNCiAgIkdldHMgdGhlIGhlYWRsaW5l IHRpdGxlIGlmIHBvaW50IGlzIGF0IHRoZSBoZWFkbGluZSINCiAgKG50aCA0IChvcmctaGVhZGlu Zy1jb21wb25lbnRzKSkpDQoNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQtLWVzY2FwZWQtaGVhZGxp bmUgKCkNCiAgKG9yZy1leHBvcnQtaGVhZC0tZXNjYXBlIChvcmctZXhwb3J0LWhlYWQtLWhlYWRs aW5lKSkpDQoNCg0KKGRlZnVuIG9yZy1leHBvcnQtaGVhZC0tcmVwbGFjZS1oZWFkbGluZS1tYWNy b3MobWFjcm8tYWxpc3QpDQogICJSZXBsYWNlIG1hY3JvcyBvZiB0aGUgdHlwZSAjIyNURVhUIyMj IFRoZXkgY2FuIGNvbnRhaW4gaW5mb3JtYXRpb24gc3VjaCBhcyBkYXRlDQpvciBwcmV2aW91cyBh bmQgbmV4dCBwb3N0Lg0KQW55IGhlYWRsaW5lIHByb3BlcnR5IGNhbiBiZSB1c2VkIGFzIGEgbWFj cm8gb2YgdGhpcyB0eXBlLiINCiAgKHNhdmUtZXhjdXJzaW9uDQogICAgOztMZXQncyBmaW5kIHRo ZSBlbmQgb2YgdGhlIGhlYWRsaW5lIGFzIGEgbWFya2VyLCBzaW5jZSBpdCBjYW4gbW92ZQ0KICAg IChsZXQgKChzdWJ0cmVlLWVuZC1tYXJrZXIgIChzYXZlLWV4Y3Vyc2lvbiAob3JnLWVuZC1vZi1z dWJ0cmVlKSAocG9pbnQtbWFya2VyKSkpKQ0KICAgICAgOzsgRW5kIG9mIHN1YnRyZWUgbWlnaHQg Y2hhbmdlIGJlY2F1c2Ugb2YgbWFjcm8gZXhwYW5zaW9uLCBzbyBpdCBpcyByZWNhbGN1bGF0ZWQu DQogICAgICA7OyBNYWNyb3MgbWlnaHQgYmUgc3Vic3RpdHV0ZWQgZm9yIHNvbWV0aGluZyBzbWFs bGVyLCBzbyB3ZSBtb3ZlIHRoZSBwb2ludCBvbiB0byB0aGUgbGVmdCBhdCB0aGUgZW5kLg0KICAg ICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAiXFwjXFwjXFwjXFwoWy1BLVphLXpfXStcXClc XCNcXCNcXCMiIChtYXJrZXItcG9zaXRpb24gc3VidHJlZS1lbmQtbWFya2VyKSB0KQ0KICAgICAg ICAodW5sZXNzIChvcmctaW4tc3JjLWJsb2NrLXApDQogICAgICAgICAgKGxldCogKChtYWNybyAo bWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMSkpDQogICAgICAgICAgICAgICAgIChtYWNyby1z dWJzIChjZHIgKGFzc29jIG1hY3JvIG1hY3JvLWFsaXN0KSkpKQ0KICAgICAgICAgICAgKGlmIG1h Y3JvLXN1YnMNCiAgICAgICAgICAgICAgICAocmVwbGFjZS1tYXRjaCAgbWFjcm8tc3VicyB0IHQp DQogICAgICAgICAgICAgIChyZXBsYWNlLW1hdGNoICIiKSkNCiAgICAgICAgICAgIChiYWNrd2Fy ZC1jaGFyKSkpKSkpKQ0KDQoNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQtLWdldC1jb250ZW50LXN1 YnRyZWUtbWF0Y2gobWF0Y2gpDQogICJHZXQgY29udGVudCBvZiB0aGUgc3VidHJlZSB0aGF0IG1h dGNoZXMgXCJtYXRjaFwiDQpXaGVyZSBtYXRjaCBpcyBhIHRhZyBvciAtdGFnIG9yIGNvbWJpbmF0 aW9uIG9mIHRoZW0uIg0KICAoc2F2ZS1leGN1cnNpb24NCiAgKGxldCAoKGNvbnRlbnQgIiIpKQ0K ICAgIChvcmctZXhwb3J0LWhlYWQtLXJ1bi1vbi1lYWNoLWhlYWRpbmcNCiAgICAgIycobGFtYmRh KCkNCiAgICAgICAgIChzZXRxIGNvbnRlbnQgKGNvbmNhdCBjb250ZW50IChvcmctZXhwb3J0LWhl YWQtLWdldC1jb250ZW50LXN1YnRyZWUtYXQtcG9pbnQpKSkpDQogICAgIG1hdGNoKQ0KICAgIGNv bnRlbnQpKSkNCg0KKGRlZnVuIG9yZy1leHBvcnQtaGVhZC0taW5zZXJ0LW9uLWhlYWRlciAodGV4 dCkNCiAgIkluc2VydCB0ZXh0IG9uIHRoZSBoZWFkZXIgb2YgdGhlIHN1YnRyZWUsIGJ1dCBhZnRl ciB0aGUgcHJvcGVydHkgYm94Ig0KICAoc2F2ZS1leGN1cnNpb24NCiAgICAob3JnLWV4cG9ydC1o ZWFkLS1nb3RvLWhlYWRlcikNCiAgICAoaW5zZXJ0IHRleHQpKSkNCg0KKGRlZnVuIG9yZy1leHBv cnQtaGVhZC0taW5zZXJ0LW9uLWZvb3RlciAodGV4dCkNCiAgIkluc2VydCB0ZXh0IG9uIHRoZSBm b290ZXIgKGVuZCkgb2YgdGhlIHN1YnRyZWUiDQogIChzYXZlLWV4Y3Vyc2lvbg0KICAgIChvcmct ZXhwb3J0LWhlYWQtLWdvdG8tZm9vdGVyKQ0KICAgIChpbnNlcnQgdGV4dCkpKQ0KDQooZGVmdW4g b3JnLWV4cG9ydC1oZWFkLS1nZW5lcmF0ZS1pbmRleC1hbGlzdCAoaGVhZGxpbmVzLWxpc3QgaGVh ZGxpbmVzLWhhc2gpDQogICJHZW5lYXRlcyBhbiBvcmcgbGlzdCB3aXRoIHRoZSBpbmRleCBvZiB0 aGUgd2Vic2l0ZSBhbmQgaW5zZXJ0cyBpdCBpbiBhbiBhbGlzdCINCiAgKGxldCAoKGluZGV4ICIi KQ0KICAgICAgICAocmV2ZXJzZS1pbmRleCAiIikNCiAgICAgICAgKGluZGV4LXdpdGgtZGF0ZXMg IiIpDQogICAgICAgIChpbmRleC13aXRoLXN1bW1hcmllcyAiIikNCiAgICAgICAgKGFsbC10YWdz ICJcbiIpDQogICAgICAgIChhbGwtdGFncy1yZXZlcnNlICJcbiIpDQogICAgICAgIChhbGwtdGFn cy13aXRoLWRhdGVzICJcbiIpDQogICAgICAgIChhbGwtdGFncy13aXRoLXN1bW1hcmllcyAiXG4i KQ0KICAgICAgICAodGFncyAoKSkNCiAgICAgICAgKHRhZ3MtaW5kZXhlcyAoKSkpDQogICAgKGRv bGlzdCAoaGVhZGxpbmUtbmFtZSBoZWFkbGluZXMtbGlzdCkNCiAgICAgIChsZXQqICgoaGVhZGxp bmUtYWxpc3QgKGdldGhhc2ggaGVhZGxpbmUtbmFtZSBoZWFkbGluZXMtaGFzaCBuaWwpKQ0KICAg ICAgICAgICAgIChlbnRyeS10YWdzIChhc3NvYyAiQUxMVEFHUyIgaGVhZGxpbmUtYWxpc3QpKQ0K ICAgICAgICAgICAgIChlbnRyeS10YWdzICh3aGVuIGVudHJ5LXRhZ3MgKGRlbGV0ZSAiIiAoc3Bs aXQtc3RyaW5nIChjZHIgZW50cnktdGFncykgIjoiKSkpKQ0KICAgICAgICAgICAgIChjcmVhdGlv bi1kYXRlIChjZHIgKGFzc29jICJDUkVBVElPTi1EQVRFIiBoZWFkbGluZS1hbGlzdCkpKQ0KICAg ICAgICAgICAgIChtb2RpZmljYXRpb24tZGF0ZSAoY2RyIChhc3NvYyAiTU9ESUZJQ0FUSU9OLURB VEUiIGhlYWRsaW5lLWFsaXN0KSkpDQogICAgICAgICAgICAgKHN1bW1hcnkgKHN0cmluZy10cmlt IChjZHIgKGFzc29jICJTVU1NQVJZIiBoZWFkbGluZS1hbGlzdCkpKSkNCiAgICAgICAgICAgICAo aW5kZXgtZW50cnkgKGNvbmNhdCAiLSBbWyJoZWFkbGluZS1uYW1lIl1bImhlYWRsaW5lLW5hbWUi XV1cbiIpKQ0KICAgICAgICAgICAgIChpbmRleC1lbnRyeS13aXRoLWRhdGUgKGNvbmNhdCAiLSBA QGh0bWw6PGI+QEBbWyJoZWFkbGluZS1uYW1lIl1bImhlYWRsaW5lLW5hbWUiXV1AQGh0bWw6PC9i PkBAIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkBAaHRtbDo8c3Bh biBjbGFzcz1cInBhZ2UtZGF0ZVwiPkBAIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiAoIiBjcmVhdGlvbi1kYXRlIiwgdXBkYXRlZCAiIG1vZGlmaWNhdGlvbi1kYXRl ICIpIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkBAaHRtbDo8L3Nw YW4+QEAiICJcbiIgKSkNCiAgICAgICAgICAgICAoaW5kZXgtZW50cnktd2l0aC1zdW1tYXJ5DQog ICAgICAgICAgICAgIChjb25jYXQgIGluZGV4LWVudHJ5LXdpdGgtZGF0ZQ0KICAgICAgICAgICAg ICAgICAgICAgICAodW5sZXNzICg9IChsZW5ndGggc3VtbWFyeSkgMCkNCiAgICAgICAgICAgICAg ICAgICAgICAgICAoY29uY2F0ICIgICBAQGh0bWw6PGJyPkBAIiBzdW1tYXJ5ICJcbiIpKSkpKQ0K DQogICAgICAgIChzZXRxIGluZGV4IChjb25jYXQgaW5kZXggaW5kZXgtZW50cnkpKQ0KICAgICAg ICAoc2V0cSByZXZlcnNlLWluZGV4IChjb25jYXQgaW5kZXgtZW50cnkgcmV2ZXJzZS1pbmRleCkp DQogICAgICAgIChzZXRxIGluZGV4LXdpdGgtZGF0ZXMgKGNvbmNhdCAgaW5kZXgtd2l0aC1kYXRl cyBpbmRleC1lbnRyeS13aXRoLWRhdGUpKQ0KICAgICAgICAoc2V0cSBpbmRleC13aXRoLXN1bW1h cmllcyAoY29uY2F0ICBpbmRleC13aXRoLXN1bW1hcmllcyBpbmRleC1lbnRyeS13aXRoLXN1bW1h cnkpKQ0KDQogICAgICAgIChkb2xpc3QgKHRhZyBlbnRyeS10YWdzKQ0KICAgICAgICAgIChpZiAo bm90IChtZW1iZXIgdGFnIHRhZ3MpKQ0KICAgICAgICAgICAgICAoc2V0cSB0YWdzIChjb25zIHRh ZyB0YWdzKSkpDQogICAgICAgICAgKGRvbGlzdCAoc3VmZml4ICcoIiIgIi1yZXZlcnNlIiAiLXdp dGgtZGF0ZXMiICItd2l0aC1zdW1tYXJpZXMiKSkNCiAgICAgICAgICAgIDs7IEluaXRpYWxpemUg dGFncyBsaXN0cw0KICAgICAgICAgICAgKGxldCAoKHRhZy1pbmRleC1uYW1lICh1cGNhc2UgKGNv bmNhdCB0YWcgc3VmZml4KSkpKQ0KICAgICAgICAgICAgICAodW5sZXNzIChhc3NvYyB0YWctaW5k ZXgtbmFtZSB0YWdzLWluZGV4ZXMpDQogICAgICAgICAgICAgICAgKHNldHEgdGFncy1pbmRleGVz IChjb25zIGAoLHRhZy1pbmRleC1uYW1lIC4gIiIpICB0YWdzLWluZGV4ZXMpKSkpKQ0KDQogICAg ICAgICAgOztBZGQgdGFnIGluZGV4ZXMgdG8gbGlzdA0KICAgICAgICAgIChsZXQqICgodGFnICh1 cGNhc2UgdGFnKSkNCiAgICAgICAgICAgICAgICAodGFnLXJldmVyc2UgKHVwY2FzZSAoY29uY2F0 IHRhZyAiLXJldmVyc2UiKSkpDQogICAgICAgICAgICAgICAgKHRhZy13aXRoLWRhdGVzICh1cGNh c2UgKGNvbmNhdCB0YWcgIi13aXRoLWRhdGVzIikpKQ0KICAgICAgICAgICAgICAgICh0YWctd2l0 aC1zdW1tYXJpZXMgKHVwY2FzZSAoY29uY2F0IHRhZyAiLXdpdGgtc3VtbWFyaWVzIikpKQ0KICAg ICAgICAgICAgICAgICh0YWctYXNzb2MgKGFzc29jIHRhZyB0YWdzLWluZGV4ZXMpKQ0KICAgICAg ICAgICAgICAgICh0YWctYXNzb2MtcmV2ZXJzZSAoYXNzb2MgdGFnLXJldmVyc2UgdGFncy1pbmRl eGVzKSkNCiAgICAgICAgICAgICAgICAodGFnLWFzc29jLXdpdGgtZGF0ZXMgKGFzc29jIHRhZy13 aXRoLWRhdGVzIHRhZ3MtaW5kZXhlcykpDQogICAgICAgICAgICAgICAgKHRhZy1hc3NvYy13aXRo LXN1bW1hcmllcyAoYXNzb2MgdGFnLXdpdGgtc3VtbWFyaWVzIHRhZ3MtaW5kZXhlcykpDQogICAg ICAgICAgICAgICAgKHRhZy1pbmRleCAoY2RyIHRhZy1hc3NvYykpDQogICAgICAgICAgICAgICAg KHRhZy1pbmRleC1yZXZlcnNlIChjZHIgdGFnLWFzc29jLXJldmVyc2UpKQ0KICAgICAgICAgICAg ICAgICh0YWctaW5kZXgtd2l0aC1kYXRlcyAoY2RyIHRhZy1hc3NvYy13aXRoLWRhdGVzKSkNCiAg ICAgICAgICAgICAgICAodGFnLWluZGV4LXdpdGgtc3VtbWFyaWVzIChjZHIgdGFnLWFzc29jLXdp dGgtc3VtbWFyaWVzKSkpDQoNCiAgICAgICAgICAgIChzZXRmIChjZHIgdGFnLWFzc29jKSAoY29u Y2F0IHRhZy1pbmRleCBpbmRleC1lbnRyeSkpDQogICAgICAgICAgICAoc2V0ZiAoY2RyIHRhZy1h c3NvYy1yZXZlcnNlKSAoY29uY2F0IGluZGV4LWVudHJ5IHRhZy1pbmRleC1yZXZlcnNlICkpDQog ICAgICAgICAgICAoc2V0ZiAoY2RyIHRhZy1hc3NvYy13aXRoLWRhdGVzKSAoY29uY2F0IHRhZy1p bmRleC13aXRoLWRhdGVzIGluZGV4LWVudHJ5LXdpdGgtZGF0ZSkpDQogICAgICAgICAgICAoc2V0 ZiAoY2RyIHRhZy1hc3NvYy13aXRoLXN1bW1hcmllcykgKGNvbmNhdCB0YWctaW5kZXgtd2l0aC1z dW1tYXJpZXMgaW5kZXgtZW50cnktd2l0aC1zdW1tYXJ5KSkpKSkpDQoNCiAgICA7OyBOb3cgd2Ug Y3JlYXRlIGFuIGluZGV4IGZvciBhbGwgdGFncywgdG8gYmUgYWJsZSB0byBoYXZlIHRhZyBwYWdl cw0KICAgIChzb3J0IHRhZ3MgKGxhbWJkYSAoYSBiKSAoc3RyaW5nPCAgYSAgYikpKSA7IFNvcnQg dGhlIHRhZ3MgZm9yIHRoZSBpbmRleCBvZiBhbGwgdGFncw0KICAgIChkb2xpc3QgKHRhZyB0YWdz KQ0KICAgICAgKHVubGVzcyAob3IgKHN0cmluZz0gdGFnICJyZWV4cG9ydCIpIChzdHJpbmc9IHRh ZyAibm9leHBvcnQiKSAoc3RyaW5nPSB0YWcgIm5vcmVleHBvcnQiKSkNCiAgICAgIChsZXQqICgo dGFnLXJldmVyc2UgKHVwY2FzZSAoY29uY2F0IHRhZyAiLXJldmVyc2UiKSkpDQogICAgICAgICAg ICAodGFnLXdpdGgtZGF0ZXMgKHVwY2FzZSAoY29uY2F0IHRhZyAiLXdpdGgtZGF0ZXMiKSkpDQog ICAgICAgICAgICAodGFnLXdpdGgtc3VtbWFyaWVzICh1cGNhc2UgKGNvbmNhdCB0YWcgIi13aXRo LXN1bW1hcmllcyIpKSkNCiAgICAgICAgICAgICh0YWctd2l0aC1zdW1tYXJpZXMtbGlzdCAoY2Ry IChhc3NvYyB0YWctd2l0aC1zdW1tYXJpZXMgdGFncy1pbmRleGVzKSkpDQogICAgICAgICAgICAo dGFnLWxpc3QgKGNkciAoYXNzb2MgdGFnIHRhZ3MtaW5kZXhlcykpKQ0KICAgICAgICAgICAgKHRh Zy1yZXZlcnNlLWxpc3QgKGNkciAoYXNzb2MgdGFnLXJldmVyc2UgdGFncy1pbmRleGVzKSkpDQog ICAgICAgICAgICAodGFnLXdpdGgtZGF0ZXMtbGlzdCAoY2RyIChhc3NvYyB0YWctd2l0aC1kYXRl cyB0YWdzLWluZGV4ZXMpKSkpDQogICAgICAgIChzZXRxIGFsbC10YWdzIChjb25jYXQgYWxsLXRh Z3MgIioqICIgdGFnICJcbiIgdGFnLWxpc3QpKQ0KICAgICAgICAoc2V0cSBhbGwtdGFncy1yZXZl cnNlIChjb25jYXQgYWxsLXRhZ3MtcmV2ZXJzZSAiKiogIiB0YWcgIlxuIiB0YWctcmV2ZXJzZS1s aXN0KSkNCiAgICAgICAgKHNldHEgYWxsLXRhZ3Mtd2l0aC1kYXRlcyAoY29uY2F0IGFsbC10YWdz LXdpdGgtZGF0ZXMgIioqICIgdGFnICJcbiIgdGFnLXdpdGgtZGF0ZXMtbGlzdCkpDQogICAgICAg IChzZXRxIGFsbC10YWdzLXdpdGgtc3VtbWFyaWVzIChjb25jYXQgYWxsLXRhZ3Mtd2l0aC1zdW1t YXJpZXMgIioqICIgdGFnICJcbiIgdGFnLXdpdGgtc3VtbWFyaWVzLWxpc3QpKSkpKQ0KDQoNCiAg ICAoYXBwZW5kDQogICAgIChsaXN0IChjb25zICJJTkRFWCIgaW5kZXgpIChjb25zICJJTkRFWC1S RVZFUlNFIiByZXZlcnNlLWluZGV4KSAgKGNvbnMgIklOREVYLVdJVEgtREFURVMiIGluZGV4LXdp dGgtZGF0ZXMpIChjb25zICJJTkRFWC1XSVRILVNVTU1BUklFUyIgaW5kZXgtd2l0aC1zdW1tYXJp ZXMpDQogICAgICAgICAgIChjb25zICJBTEwtVEFHUyIgYWxsLXRhZ3MpIChjb25zICJBTEwtVEFH Uy1SRVZFUlNFIiBhbGwtdGFncy1yZXZlcnNlKSAgKGNvbnMgIkFMTC1UQUdTLVdJVEgtREFURVMi IGFsbC10YWdzLXdpdGgtZGF0ZXMpIChjb25zICJBTEwtVEFHUy1XSVRILVNVTU1BUklFUyIgYWxs LXRhZ3Mtd2l0aC1zdW1tYXJpZXMpKQ0KICAgICB0YWdzLWluZGV4ZXMpKSkNCg0KOztFTkQgT0Yg Tk9OIEFTVCAobm9uIG9yZy1lbGVtZW50KSBTRVNTSU9ODQoNCg0KKGRlZnVuIG9yZy1leHBvcnQt aGVhZC0tZml4LWxvY2FsLWxpbmstYXN0IChoZWFkbGluZXMgbGluaykNCiAgIkZpeGVzIGZ1enp5 IGxpbmtzIHRvIGhlYWRsaW5lcywgc28gdGhlIHRoZXkgcG9pbnQgdG8gbmV3IGZpbGVzIg0KICAo Y2wtZmxldCAoKGdldC1oYXNoIChlbGVtZW50IHNldCkNCiAgICAgICAgICAgICAgICAgICAoZ2V0 aGFzaCBlbGVtZW50IHNldCBuaWwpKSkNCiAgICAod2hlbiAoc3RyaW5nPSAob3JnLWVsZW1lbnQt cHJvcGVydHkgOnR5cGUgbGluaykgImZ1enp5IikNCiAgICAgIChsZXQqICgocGF0aCAgKG9yZy1l bGVtZW50LXByb3BlcnR5IDpwYXRoIGxpbmspKQ0KICAgICAgICAgICAgIChuZXctcGF0aCAoZ2V0 LWhhc2ggcGF0aCBoZWFkbGluZXMpKSkNCiAgICAgICAgKGlmIG5ldy1wYXRoDQogICAgICAgICAg KGxldCAoKGxpbmstY29weSAob3JnLWVsZW1lbnQtY29weSBsaW5rKSkpDQogICAgICAgICAgICAo YXBwbHkgIydvcmctZWxlbWVudC1hZG9wdC1lbGVtZW50cyBsaW5rLWNvcHkgKG9yZy1lbGVtZW50 LWNvbnRlbnRzIGxpbmspKQ0KICAgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1wcm9wZXJ0eSBs aW5rLWNvcHkgOnR5cGUgImZpbGUiKQ0KICAgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1wcm9w ZXJ0eSBsaW5rLWNvcHkgOnBhdGggKGNvbmNhdCAob3JnLWV4cG9ydC1oZWFkLS1lc2NhcGUgcGF0 aCkgIi5vcmciKSkNCiAgICAgICAgICAgIChvcmctZWxlbWVudC1zZXQtZWxlbWVudCBsaW5rIGxp bmstY29weSkpDQogICAgICAgICAgOzsgZWxzZTogbmVlZCB0byBjaGVjayBpZiB0aGUgbGluayBp cyBsaW5raW5nIHRvIGEgc3ViaGVhZGxpbmUNCiAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbg0KICAg ICAgICAgICAob3JnLWxpbmstc2VhcmNoIHBhdGgpDQogICAgICAgICAgIDs7IElmIHRoZSBzYW1l IGhlYWRpbmcgY29udGFpbnMgbXVsdGlwbGUgc3ViaGVhZGluZ3MsIGVhY2ggd2l0aCB0aGUgc2Ft ZSBuYW1lOyBpdCB3aWxsIHNpbXBseSBsaW5rIHRvIHRoZSBmaXJzdCBvbmUNCiAgICAgICAgICAg KGxldCAoKGxpbmstY29weSAob3JnLWVsZW1lbnQtY29weSBsaW5rKSkpDQogICAgICAgICAgICAo YXBwbHkgIydvcmctZWxlbWVudC1hZG9wdC1lbGVtZW50cyBsaW5rLWNvcHkgKG9yZy1lbGVtZW50 LWNvbnRlbnRzIGxpbmspKQ0KICAgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1wcm9wZXJ0eSBs aW5rLWNvcHkgOnR5cGUgImZpbGUiKQ0KICAgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1wcm9w ZXJ0eSBsaW5rLWNvcHkgOnBhdGggKGNvbmNhdCAob3JnLWV4cG9ydC1oZWFkLS1lc2NhcGUgKG9y Zy1maW5kLXRvcC1oZWFkbGluZSkpICIub3JnIikpDQogICAgICAgICAgICAob3JnLWVsZW1lbnQt cHV0LXByb3BlcnR5IGxpbmstY29weSA6c2VhcmNoLW9wdGlvbiAoY29uY2F0ICIjIiAob3JnLWV4 cG9ydC1oZWFkLS1lc2NhcGUgcGF0aCkpKQ0KICAgICAgICAgICAgKG9yZy1lbGVtZW50LXNldC1l bGVtZW50IGxpbmsgbGluay1jb3B5KSkNCiAgICAgICAgICAgKSkpKSkpDQoNCg0KKGRlZnVuIG9y Zy1leHBvcnQtaGVhZC0tZml4LWZpbGUtZXh0ZXJuYWwtbGluay1hc3QgKGRpcmVjdG9yeS1wYXRo IGxpbmspDQogICJDcmVhdGVzIGhhcmQgbGlua3MgdG8gdGhlIGV4dGVybmFsIGZpbGVzIGluIHRo ZSBvdXRwdXQgZGlyZWN0b3J5DQpPbmx5IG1vZGlmaWVzIGxpbmtzIGlmIGZpbGUgZXhpc3RzIg0K ICAod2hlbiAoYW5kIChtZW1iZXIgKG9yZy1lbGVtZW50LXByb3BlcnR5IDp0eXBlIGxpbmspIG9y Zy1leHBvcnQtaGVhZC1saW5rLWZpbGVzLXRvLWV4cG9ydCkgIChmaWxlLWV4aXN0cy1wIChvcmct ZWxlbWVudC1wcm9wZXJ0eSA6cGF0aCBsaW5rKSkpDQogICAgKGxldCogKChwYXRoIChvcmctZWxl bWVudC1wcm9wZXJ0eSA6cGF0aCBsaW5rKSkNCiAgICAgICAgICAgKGxpbmstY29weSAob3JnLWVs ZW1lbnQtY29weSBsaW5rKSkNCiAgICAgICAgICAgKGV4dGVuc2lvbiAoZmlsZS1uYW1lLWV4dGVu c2lvbiBwYXRoKSkNCiAgICAgICAgICAgKGltZy1leHRlbnNpb25zICcoImpwZyIgInRpZmYiICJw bmciICJibXAiKSkNCiAgICAgICAgICAgKGxpbmstZGVzY3JpcHRpb24gKG9yZy1lbGVtZW50LWNv bnRlbnRzIGxpbmspKQ0KICAgICAgICAgICA7O1JlbW92ZXMgLi4vIGZyb20gdGhlIHJlbGVhdGl2 ZSBwYXRoIG9mIHRoZSBmaWxlIHRvIGZvcmNlIGl0IHRvIGJlIG1vdmVkIHRvIGEgc3ViZm9sZGVy DQogICAgICAgICAgIDs7b2YgdGhlIGN1cnJlbnQgZGlyLiBUaGlzIGNhdXNlcyBzb21lIGZpbGUg Y29uZmxpdHMgaW4gZWRnZSBjYXNlcw0KICAgICAgICAgICA7O2UuZzogLi4vaW1hZ2VzIGFuZCAu Li8uLi9pbWFnZXMgd2lsbCBtYXAgdG8gdGhlIHNhbWUgcGxhY2UuIFRoaXMgc2hvdWxkIGJlIHJh cmUgaW4gbm9ybWFsIHVzYWdlDQogICAgICAgICAgIChuZXctcmVsYXRpdmUtcGF0aA0KICAgICAg ICAgICAgKGNvbmNhdCAiLi8iIChmaWxlLW5hbWUtZXh0ZW5zaW9uIHBhdGgpICIvIiAoZmlsZS1u YW1lLW5vbmRpcmVjdG9yeSBwYXRoKSkpDQogICAgICAgICAgIChuZXctaGFyZC1saW5rLXBhdGgg KGNvbmNhdCBkaXJlY3RvcnktcGF0aCBuZXctcmVsYXRpdmUtcGF0aCkpDQogICAgICAgICAgIChu ZXctaGFyZC1saW5rLWRpcmVjdG9yeSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBuZXctaGFyZC1saW5r LXBhdGgpKSkNCg0KICAgICAgOztGaXggdGhlIEFTVA0KICAgICAgOztJZiBpbWFnZSwgcmVtb3Zl IGRlc2NyaXB0aW9uIHNvIGl0IHdpbGwgYmVjb21lIGEgcmVhbCBpbWFnZSBpbnN0ZWFkIG9mIGEg bGluaw0KICAgICAgKHVubGVzcyAob3IgKG1lbWJlciBleHRlbnNpb24gaW1nLWV4dGVuc2lvbnMp KQ0KICAgICAgICAoYXBwbHkgIydvcmctZWxlbWVudC1hZG9wdC1lbGVtZW50cyBsaW5rLWNvcHkg bGluay1kZXNjcmlwdGlvbikpDQogICAgICAob3JnLWVsZW1lbnQtcHV0LXByb3BlcnR5IGxpbmst Y29weSA6cGF0aCBuZXctcmVsYXRpdmUtcGF0aCkNCiAgICAgIChvcmctZWxlbWVudC1zZXQtZWxl bWVudCBsaW5rICBsaW5rLWNvcHkpDQoNCiAgICAgIDs7Q3JlYXRlIGhhcmQgbGluayBmb2xkZXIN CiAgICAgIChtYWtlLWRpcmVjdG9yeSBuZXctaGFyZC1saW5rLWRpcmVjdG9yeSB0KQ0KICAgICAg OztDcmVhdGUgaGFyZCBsaW5rLCBub3QgcmVwbGFjaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzLCBj YXRjaGluZyBlcnJvciBpZiBmaWxlIGRvZXMgbm90IGV4aXN0DQogICAgICAoY29uZGl0aW9uLWNh c2UgbmlsDQogICAgICAgICAgKGFkZC1uYW1lLXRvLWZpbGUgcGF0aCBuZXctaGFyZC1saW5rLXBh dGggbmlsKQ0KICAgICAgICAoZXJyb3IgbmlsKSkpKSkNCg0KDQooZGVmdW4gb3JnLWV4cG9ydC1o ZWFkLS1pbnNlcnQtbmV4dC1wcmV2aW91cy1oZWFkbGluZShoZWFkbGluZXMtaGFzaCBoZWFkbGlu ZXMtbGlzdCkNCiAgIkRlY2lkZXMgd2hhdCBpcyB0aGUgbmV4dCBhbmQgdGhlIHByZXZpb3VzIHBv c3QgYW5kIGNyZWF0ZSBtYWNybyINCiAgKGxldCogKCh0ZW1wLWxpc3QgKGNvbnMgbmlsIGhlYWRs aW5lcy1saXN0KSkNCiAgICAgICAgIChsZW4gKGxlbmd0aCBoZWFkbGluZXMtbGlzdCkpKQ0KICAg IChkb3RpbWVzIChpIGxlbikNCiAgICAgIChsZXQqICgocHJldmlvdXMgKG50aCAwIHRlbXAtbGlz dCkpDQogICAgICAgICAgICAgKGhlYWRsaW5lLW5hbWUgKG50aCAxIHRlbXAtbGlzdCkpDQogICAg ICAgICAgICAobmV4dCAobnRoIDIgdGVtcC1saXN0KSkNCiAgICAgICAgICAgIChoZWFkbGluZSAo Z2V0aGFzaCBoZWFkbGluZS1uYW1lIGhlYWRsaW5lcy1oYXNoIG5pbCkpDQogICAgICAgICAgICAo bmV3LXByb3BlcnRpZXMNCiAgICAgICAgICAgICAobGlzdCAoY29ucyAiUFJFVklPVVMiIChvciBu ZXh0ICJpbmRleCIpKQ0KICAgICAgICAgICAgICAgICAgIChjb25zICJORVhUIiAob3IgcHJldmlv dXMgImluZGV4IikpKSkNCiAgICAgICAgICAgIChoZWFkbGluZSAoYXBwZW5kIGhlYWRsaW5lIG5l dy1wcm9wZXJ0aWVzKSkpIDs7IEluIHJldmVyc2Ugb3JkZXIsIHRvIGFsbG93IGhlYWRsaW5lIHBy b3BlcnRpZXMgdG8gc2hhZG93IHRoaXMuDQogICAgICAgIChwdXRoYXNoIGhlYWRsaW5lLW5hbWUg aGVhZGxpbmUgaGVhZGxpbmVzLWhhc2gpKQ0KICAgICAgICAoc2V0cSB0ZW1wLWxpc3QgKGNkciB0 ZW1wLWxpc3QpKSkpDQogIGhlYWRsaW5lcy1oYXNoKQ0KDQooZGVmdW4gb3JnLWV4cG9ydC1oZWFk LS1hZGQtdGl0bGUtbWFjcm8oaGVhZGxpbmVzLWhhc2ggaGVhZGxpbmVzLWxpc3QpDQogICJDcmVh dGVzIHRpdGxlIG1hY3JvIg0KICAobGV0KiAoKHRlbXAtbGlzdCAoY29ucyBuaWwgaGVhZGxpbmVz LWxpc3QpKQ0KICAgICAgICAobGVuIChsZW5ndGggaGVhZGxpbmVzLWxpc3QpKSkNCiAgICAoZG90 aW1lcyAoaSBsZW4pDQogICAgICAobGV0KiAoKGhlYWRsaW5lLW5hbWUgKG50aCAxIHRlbXAtbGlz dCkpDQogICAgICAgICAgICAoaGVhZGxpbmUgKGdldGhhc2ggaGVhZGxpbmUtbmFtZSBoZWFkbGlu ZXMtaGFzaCBuaWwpKQ0KICAgICAgICAgICAgKG5ldy1wcm9wZXJ0aWVzDQogICAgICAgICAgICAg KGxpc3QgKGNvbnMgIlRJVExFIiBoZWFkbGluZS1uYW1lKSkpDQogICAgICAgICAgICAoaGVhZGxp bmUgKGFwcGVuZCBoZWFkbGluZSBuZXctcHJvcGVydGllcykpKSA7OyBJbiByZXZlcnNlIG9yZGVy LCB0byBhbGxvdyBoZWFkbGluZSBwcm9wZXJ0aWVzIHRvIHNoYWRvdyB0aGlzLg0KICAgICAgICAo cHV0aGFzaCBoZWFkbGluZS1uYW1lIGhlYWRsaW5lIGhlYWRsaW5lcy1oYXNoKSkNCiAgICAgICAg KHNldHEgdGVtcC1saXN0IChjZHIgdGVtcC1saXN0KSkpKQ0KICBoZWFkbGluZXMtaGFzaCkNCg0K DQooZGVmdW4gb3JnLWV4cG9ydC1oZWFkLS1oZWFkbGluZS10by1maWxlKGhlYWRsaW5lLW5hbWUp DQogICJHZW5lcmF0ZSB0aGUgZmlsZSBuYW1lIG9mIHRoZSBoZWFkbGluZSINCiAgKGNvbmNhdCAo b3JnLWV4cG9ydC1oZWFkLS1lc2NhcGUgaGVhZGxpbmUtbmFtZSkgIi5vcmciKSkNCg0KDQooZGVm dW4gb3JnLWV4cG9ydC1oZWFkLS1lc2NhcGUodGV4dCkNCiAgKHdoZW4gdGV4dA0KICAgIChsZXQq ICgodGV4dCAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICIgIiAiXyIgdGV4dCkpDQogICAgICAg ICAgICh0ZXh0IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIi8iICItIiB0ZXh0KSkNCiAgICAg ICAgICAgKHRleHQgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlteWzphbG51bTpdLV9dIiAi IiAoZG93bmNhc2UgdGV4dCkpKSkNCiAgICAgIHRleHQpKSkNCg0KDQo7O05pY2UgZXhwb3J0IGhl YWRpbmdzIGh0dHA6Ly9pdmFubWFsaXNvbi5naXRodWIuaW8vZG90ZmlsZXMvI3VzZW15b3duZGVm YXVsdG5hbWluZ3NjaGVtZWZvcm9yZ2hlYWRpbmdzDQooZGVmdW4gaW1hbGlzb246b3JnLWdldC1y YXctdmFsdWUgKGl0ZW0pDQogICh3aGVuIChsaXN0cCBpdGVtKQ0KICAgIChsZXQqICgocHJvcGVy dHktbGlzdCAoY2FkciBpdGVtKSkpDQogICAgICAod2hlbiBwcm9wZXJ0eS1saXN0IChwbGlzdC1n ZXQgcHJvcGVydHktbGlzdCA6cmF3LXZhbHVlKSkpKSkNCg0KKGRlZnVuIGltYWxpc29uOmdlbmVy YXRlLW5hbWUgKGRhdHVtIGNhY2hlKQ0KICAobGV0ICgocmF3LXZhbHVlIChpbWFsaXNvbjpvcmct Z2V0LXJhdy12YWx1ZSBkYXR1bSkpKQ0KICAgIChpZiByYXctdmFsdWUNCiAgICAgICAgKG9yZy1l eHBvcnQtaGVhZC0tZXNjYXBlIHJhdy12YWx1ZSkNCiAgICAgIDs7IFRoaXMgaXMgdGhlIGRlZmF1 bHQgaW1wbGVtZW50YXRpb24gZnJvbSBvcmcNCiAgICAgIChsZXQgKCh0eXBlIChvcmctZWxlbWVu dC10eXBlIGRhdHVtKSkpDQogICAgICAgIChmb3JtYXQgIm9yZyVzJWQiDQogICAgICAgICAgICAg ICAgKGlmIHR5cGUNCiAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmlu ZyAiLSIgIiIgKHN5bWJvbC1uYW1lIHR5cGUpKQ0KICAgICAgICAgICAgICAgICAgICAic2Vjb25k YXJ5c3RyaW5nIikNCiAgICAgICAgICAgICAgICAoY2wtaW5jZiAoZ2V0aGFzaCB0eXBlIGNhY2hl IDApKSkpKSkpDQoNCg0KOyh1c2UtcGFja2FnZSBveCkNCjsgIDpkZWZlciB0DQo7ICA6Y29uZmln DQogIChkZWZ1biBvcmctZXhwb3J0LWdldC1yZWZlcmVuY2UtY3VzdG9tIChkYXR1bSBpbmZvKQ0K ICAgICJSZXR1cm4gYSB1bmlxdWUgcmVmZXJlbmNlIGZvciBEQVRVTSwgYXMgYSBzdHJpbmcuDQpE QVRVTSBpcyBlaXRoZXIgYW4gZWxlbWVudCBvciBhbiBvYmplY3QuICBJTkZPIGlzIHRoZSBjdXJy ZW50DQpleHBvcnQgc3RhdGUsIGFzIGEgcGxpc3QuICBSZXR1cm5lZCByZWZlcmVuY2UgY29uc2lz dHMgb2YNCmFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9ubHkuIg0KICAgIChsZXQgKCh0eXBlIChv cmctZWxlbWVudC10eXBlIGRhdHVtKSkNCiAgICAgICAgICAoY2FjaGUgKG9yIChwbGlzdC1nZXQg aW5mbyA6aW50ZXJuYWwtcmVmZXJlbmNlcykNCiAgICAgICAgICAgICAgICAgICAgIChsZXQgKCho IChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcSkpKQ0KICAgICAgICAgICAgICAgICAgICAgICAo cGxpc3QtcHV0IGluZm8gOmludGVybmFsLXJlZmVyZW5jZXMgaCkNCiAgICAgICAgICAgICAgICAg ICAgICAgaCkpKQ0KICAgICAgICAgIChyZXZlcnNlLWNhY2hlIChvciAocGxpc3QtZ2V0IGluZm8g OnRha2VuLWludGVybmFsLXJlZmVyZW5jZXMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsZXQgKChoIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFsKSkpDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBsaXN0LXB1dCBpbmZvIDp0YWtlbi1pbnRlcm5hbC1yZWZlcmVu Y2VzIGgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCkpKSkNCiAgICAgIChvciAo Z2V0aGFzaCBkYXR1bSBjYWNoZSkNCiAgICAgICAgICAobGV0KiAoKG5hbWUgKGltYWxpc29uOmdl bmVyYXRlLW5hbWUgZGF0dW0gY2FjaGUpKQ0KICAgICAgICAgICAgICAgICAobnVtYmVyICgrIDEg KGdldGhhc2ggbmFtZSByZXZlcnNlLWNhY2hlIC0xKSkpDQogICAgICAgICAgICAgICAgIChuZXct bmFtZSAoZm9ybWF0ICIlcyVzIiBuYW1lIChpZiAoPCAwIG51bWJlcikgKGZvcm1hdCAiJXMlcyIg Ii4iIG51bWJlcikgIiIpKSkpDQogICAgICAgICAgICAocHV0aGFzaCBuYW1lIG51bWJlciByZXZl cnNlLWNhY2hlKQ0KICAgICAgICAgICAgKHB1dGhhc2ggZGF0dW0gbmV3LW5hbWUgY2FjaGUpDQog ICAgICAgICAgICBuZXctbmFtZSkpKSkNCg0KDQoNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQtb3Ro ZXItZmlsZSAoZmlsZSBkaXJlY3RvcnktbmFtZSAmb3B0aW9uYWwgcmVleHBvcnQpDQogICJNYWlu IGZ1bmN0aW9uIG9mIHRoaXMgc2NyaXB0Ig0KICAoZmluZC1maWxlIGZpbGUpDQogIChtYWtlLWRp cmVjdG9yeSAiLi4vLmVtYWNzLXNhdmVzIiB0KQ0KICAobGV0ICgoYmFja3VwLWRpcmVjdG9yeS1h bGlzdCBgKCgiLiIgLiAgIi4uLy5lbWFjcy1zYXZlcy8iKSkpDQogICAgICAgIChhdXRvLXNhdmUt ZmlsZS1uYW1lLXRyYW5zZm9ybXMgYCgoIi4qIiAiLi4vLmVtYWNzLXNhdmVzLyIgdCkpKSkNCg0K DQoNCiAgKHJlcXVpcmUgJ294KQ0KICAocmVxdWlyZSAnY2wpDQogIChyZXF1aXJlICdzdWJyLXgp DQogIChyZXF1aXJlICdvcmctcmVmKQ0KICAob3JnLW1vZGUpDQogICh0cmFuc2llbnQtbWFyay1t b2RlKSA7bmVjZXNzYXJ5IGZvciB1c2luZyBvcmctbWFwLWVudHJpZXMNCiAgKG91dGxpbmUtc2hv dy1hbGwpDQogIChvcmctZXhwb3J0LWhlYWQgKGNvbmNhdCBkaXJlY3RvcnktbmFtZSAiLyIpIG5p bCByZWV4cG9ydCkNCiAgKHNhdmUtYnVmZmVyKSkpDQoNCg0KDQo7OzsgU1RBUlQgdXRpbHMNCjs7 QWRkIHZpZGVvIGxpbmtzDQooaWYgb3JnLWV4cG9ydC1oZWFkLXVzaW5nLXZpZGVvLWxpbmtzDQog ICAgKHByb2duDQogICAgICAoZGVmdW4gb3JnLWV4cG9ydC1oZWFkLWV4cG9ydC12aWRlbyAocGF0 aCBkZXNjIGZvcm1hdCkNCiAgICAgICAgIkZvcm1hdCB2aWRlbyBsaW5rcyBmb3IgZXhwb3J0LiIN CiAgICAgICAgKGNsLWNhc2UgZm9ybWF0DQogICAgICAgICAgKGh0bWwgKGNvbmNhdCAiPHZpZGVv IGNvbnRyb2xzPg0KICAgIDxzb3VyY2Ugc3JjPVwiInBhdGgiXCI+DQogICAgU29ycnksIHlvdXIg YnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgZW1iZWRkZWQgdmlkZW9zLg0KPC92aWRlbz4iICkpDQog ICAgICAgICAgKGxhdGV4IChmb3JtYXQgIlxcaHJlZnslc317JXN9IiBwYXRoIChvciBkZXNjIHBh dGgpKSkNCiAgICAgICAgICAob3RoZXJ3aXNlIHBhdGgpKSkNCiAgICAgIDsob3JnLWxpbmstc2V0 LXBhcmFtZXRlcnMgInZpZGVvIiA6ZXhwb3J0ICdvcmctZXhwb3J0LWhlYWQtZXhwb3J0LXZpZGVv KQ0KICAgICAgKSkNCg0KKGxldCAoKGZpbGUgIChlbHQgYXJndiAwKSkNCiAgICAgIChkaXIgIChl bHQgYXJndiAxKSkNCiAgICAgIChyZWV4cG9ydCAgKGVsdCBhcmd2IDIpKSkNCiAgKGlmIChvciAo bm90IGZpbGUpIChub3QgZGlyKSkNCiAgICAgIChtZXNzYWdlICJ1c2FnZSAgRklMRSBESVIgW2V4 cG9ydF0iKQ0KICAgIChtZXNzYWdlICJFeHBvcnRpbmYgJXMgdG8gJXMiIGZpbGUgZGlyKQ0KICAg IChvcmctZXhwb3J0LWhlYWQtb3RoZXItZmlsZSBmaWxlIGRpciByZWV4cG9ydCkpKQ0KDQo7O0lu cGlyZWQgYnkgaHR0cHM6Ly9lbWFjcy5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvNTEyNTEv b3JnLW1vZGUtaHRtbC1leHBvcnQtdGFibGUtb2YtY29udGVudHMtd2l0aG91dC1oMg0KOztmcm9t IG94LWh0bWwuZWwNCihkZWZ1biBvcmctZXhwb3J0LWhlYWQtLWN1c3RvbS10b2MoZGVwdGggaW5m byAmb3B0aW9uYWwgc2NvcGUpDQogIChsZXQgKCh0b2MtZW50cmllcw0KCSAobWFwY2FyIChsYW1i ZGEgKGhlYWRsaW5lKQ0KCQkgICAoY29ucyAob3JnLWh0bWwtLWZvcm1hdC10b2MtaGVhZGxpbmUg aGVhZGxpbmUgaW5mbykNCgkJCSAob3JnLWV4cG9ydC1nZXQtcmVsYXRpdmUtbGV2ZWwgaGVhZGxp bmUgaW5mbykpKQ0KCQkgKG9yZy1leHBvcnQtY29sbGVjdC1oZWFkbGluZXMgaW5mbyBkZXB0aCBz Y29wZSkpKSkNCiAgICAod2hlbiB0b2MtZW50cmllcw0KICAgICAgKGxldCAoKHRvYyAoY29uY2F0 ICI8bmF2IGlkPVwidGFibGUtb2YtY29udGVudHNcIj5cbiINCiAgICAgICAgICAgICAgICAgICI8 aW5wdXQgaWQ9XCJ0b2dnbGUtdG9jXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lOyB2aXNpYmlsaXR5 OiBoaWRkZW47XCIgdHlwZT1cImNoZWNrYm94XCI+XG4iDQogICAgICAgICAgICAgICAgICAiPGxh YmVsIGZvcj1cInRvZ2dsZS10b2NcIj5cbiA8aDI+IDxiPiBUYWJsZSBvZiBDb250ZW50cyA8L2I+ IDwvaDI+XG4gPC9sYWJlbD5cbiINCiAgICAgICAgICAgICAgICAgICI8ZGl2IGlkPVwidGV4dC10 YWJsZS1vZi1jb250ZW50c1wiPiINCgkJCSAob3JnLWh0bWwtLXRvYy10ZXh0IHRvYy1lbnRyaWVz KQ0KCQkJICI8L2Rpdj5cbiINCiAgICAgICAgICAgICAgICAgICAgICAgICAiPC9uYXY+IFxuIikp KQ0KICAgICAgICB0b2MpKSkpDQoNCihzZXRmIG9yZy1odG1sLW1hdGhqYXgtdGVtcGxhdGUNCiAg ICAgICI8c2NyaXB0Pg0KIE1hdGhKYXggPSB7DQogIGxvYWRlcjogew0KICAgIGxvYWQ6IFsnW3Rl eF0vYnVzc3Byb29mcyddDQogIH0sDQogIHRleDogew0KICAgIHBhY2thZ2VzOiB7J1srXSc6IFsn YnVzc3Byb29mcyddfSwNCiAgICB0YWdzOiAnYW1zJw0KICB9DQp9Ow0KPC9zY3JpcHQ+DQo8c2Ny aXB0IGlkPVwiTWF0aEpheC1zY3JpcHQgXCIgYXN5bmMNCiAgc3JjPVwiaHR0cHM6Ly9jZG4uanNk ZWxpdnIubmV0L25wbS9tYXRoamF4QDMvZXM1L3RleC1tbWwtY2h0bWwuanNcIj4NCjwvc2NyaXB0 PiIgKQ0K --b1_BoUR6aYcmeklYrghlWD7Q6rdu5VhUWy3JUmktcTbUw--