From stefan@daschek.net Sat Mar 1 02:20:59 2014 From: Stefan Daschek To: textmate@lists.macromates.com Subject: [TxMt] HTML output: Open link in default browser? Date: Sat, 01 Mar 2014 03:20:55 +0100 Message-ID: <53114407.8090405@daschek.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1186249563122538328==" --===============1186249563122538328== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Is it possible to force specific links in the HTML output window to open in the default browser (instead of the HTML output window itself)? Background info: I have a Rails project where the testsuite already creates a dump of the HTML page for each failed feature spec. Now I’m trying to extend RSpec’s TextMateFormatter to include links to these files. Works so far, but I need to open the saved HTML pages in my default browser so that I have my usual developer tools around for debugging. (A possible workaround is of course to drag the link to the browser’s dock icon. Just being able to click the link would be easier, though.) Stefan --===============1186249563122538328==-- From mailinglist@textmate.org Sat Mar 1 06:15:15 2014 From: Allan Odgaard To: textmate@lists.macromates.com Subject: [TxMt] Re: HTML output: Open link in default browser? Date: Sat, 01 Mar 2014 13:15:08 +0700 Message-ID: In-Reply-To: <53114407.8090405@daschek.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8775394759522046644==" --===============8775394759522046644== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit On 1 Mar 2014, at 9:20, Stefan Daschek wrote: > Is it possible to force specific links in the HTML output window to > open in the default browser […] I have a Rails project where the > testsuite already creates a dump of the HTML page for each failed > feature spec. Now I’m trying to extend RSpec’s TextMateFormatter > to include links to these files. Works so far, but I need to open the > saved HTML pages in my default browser so that I have my usual > developer tools around for debugging. Given that you are modifying the generated output, you can change the link to use JavaScript and TextMate.system(), example: Open Website --===============8775394759522046644== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" MIME-Version: 1.0 PGRpdiBjbGFzcz0ibWFya2Rvd24iPgo8cCBkaXI9ImF1dG8iPk9uIDEgTWFyIDIwMTQsIGF0IDk6 MjAsIFN0ZWZhbiBEYXNjaGVrIHdyb3RlOjwvcD4KCjxibG9ja3F1b3RlPgo8cCBkaXI9ImF1dG8i PklzIGl0IHBvc3NpYmxlIHRvIGZvcmNlIHNwZWNpZmljIGxpbmtzIGluIHRoZSBIVE1MIG91dHB1 dCB3aW5kb3cgdG8gb3BlbiBpbiB0aGUgZGVmYXVsdCBicm93c2VyIFvigKZdIEkgaGF2ZSBhIFJh aWxzIHByb2plY3Qgd2hlcmUgdGhlIHRlc3RzdWl0ZSBhbHJlYWR5IGNyZWF0ZXMgYSBkdW1wIG9m IHRoZSBIVE1MIHBhZ2UgZm9yIGVhY2ggZmFpbGVkIGZlYXR1cmUgc3BlYy4gTm93IEnigJltIHRy eWluZyB0byBleHRlbmQgUlNwZWPigJlzIFRleHRNYXRlRm9ybWF0dGVyIHRvIGluY2x1ZGUgbGlu a3MgdG8gdGhlc2UgZmlsZXMuIFdvcmtzIHNvIGZhciwgYnV0IEkgbmVlZCB0byBvcGVuIHRoZSBz YXZlZCBIVE1MIHBhZ2VzIGluIG15IGRlZmF1bHQgYnJvd3NlciBzbyB0aGF0IEkgaGF2ZSBteSB1 c3VhbCBkZXZlbG9wZXIgdG9vbHMgYXJvdW5kIGZvciBkZWJ1Z2dpbmcuPC9wPgo8L2Jsb2NrcXVv dGU+Cgo8cCBkaXI9ImF1dG8iPkdpdmVuIHRoYXQgeW91IGFyZSBtb2RpZnlpbmcgdGhlIGdlbmVy YXRlZCBvdXRwdXQsIHlvdSBjYW4gY2hhbmdlIHRoZSBsaW5rIHRvIHVzZSBKYXZhU2NyaXB0IGFu ZCBUZXh0TWF0ZS5zeXN0ZW0oKSwgZXhhbXBsZTo8L3A+Cgo8cHJlPjxjb2RlPiZsdDtzY3JpcHQm Z3Q7CmZ1bmN0aW9uIG9wZW5fdXJsKHVybCkgewogIFRleHRNYXRlLnN5c3RlbSgib3BlbiAnIiAr IHVybCArICInIik7Cn0KJmx0Oy9zY3JpcHQmZ3Q7CgombHQ7YSBocmVmPSIjIiBvbkNsaWNrPSJv cGVuX3VybCgnaHR0cDovL21hY3JvbWF0ZXMuY29tLycpOyByZXR1cm4gdHJ1ZTsiJmd0O09wZW4g V2Vic2l0ZSZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKPC9kaXY+ --===============8775394759522046644==-- From stefan@daschek.net Sat Mar 1 12:50:24 2014 From: Stefan Daschek To: textmate@lists.macromates.com Subject: [TxMt] Re: HTML output: Open link in default browser? Date: Sat, 01 Mar 2014 13:50:17 +0100 Message-ID: <5311D789.1080600@daschek.net> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3607812147289289483==" --===============3607812147289289483== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Thanks, I didn't know about |TextMate.system(...)| -- that's exactly=20 what I was looking for. ? It took a while until I got the escaping right, here's what I ended up with: |def link_to(title, local_path) url =3DURI.escape("file://#{local_path}") title =3DCGI.escape_html(title) %{#{title}} end | Gist with the complete setup: https://gist.github.com/noniq/9289157 Stefan Am 01.03.14 07:15, schrieb Allan Odgaard: > On 1 Mar 2014, at 9:20, Stefan Daschek wrote: > > Is it possible to force specific links in the HTML output window > to open in the default browser [...] I have a Rails project where > the testsuite already creates a dump of the HTML page for each > failed feature spec. Now I'm trying to extend RSpec's > TextMateFormatter to include links to these files. Works so far, > but I need to open the saved HTML pages in my default browser so > that I have my usual developer tools around for debugging. > > Given that you are modifying the generated output, you can change the=20 > link to use JavaScript and TextMate.system(), example: > > | > > = Open Website > | > > > _______________________________________________ > textmate mailing list > textmate(a)lists.macromates.com > http://lists.macromates.com/listinfo/textmate --===============3607812147289289483== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" MIME-Version: 1.0 PGh0bWw+CiAgPGhlYWQ+CiAgICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNP LTg4NTktMSIKICAgICAgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIj4KICA8L2hlYWQ+CiAgPGJv ZHkgYmdjb2xvcj0iI0ZGRkZGRiIgdGV4dD0iIzAwMDAwMCI+CiAgICA8ZGl2IG1hcmtkb3duLWhl cmUtd3JhcHBlci1jb250ZW50LW1vZGlmaWVkPSJ0cnVlIiBzdHlsZT0iIgpkYXRhLW1kLW9yaWdp bmFsPSJUaGFua3MlMkMlMjBJJTIwZGlkbiVFMiU4MCU5OXQlMjBrbm93JTIwYWJvdXQlMjAlNjBU ZXh0TWF0ZS5zeXN0ZW0oJUUyJTgwJUE2KSU2MCUyMCVFMiU4MCU5MyUyMHRoYXQlRTIlODAlOTlz JTIwZXhhY3RseSUyMHdoYXQlMjBJJTIwd2FzJTIwbG9va2luZyUyMGZvci4lMjAlRjAlOUYlOTEl OEQlM0NiciUzRSUzQ2JyJTNFSXQlMjB0b29rJTIwYSUyMHdoaWxlJTIwdW50aWwlMjBJJTIwZ290 JTIwdGhlJTIwZXNjYXBpbmclMjByaWdodCUyQyUyMGhlcmUlRTIlODAlOTlzJTIwd2hhdCUyMEkl MjBlbmRlZCUyMHVwJTIwd2l0aCUzQSUzQ2JyJTNFJTNDYnIlM0UlNjAlNjAlNjBydWJ5JTNDYnIl M0VkZWYlMjBsaW5rX3RvKHRpdGxlJTJDJTIwbG9jYWxfcGF0aCklM0NiciUzRSVDMiVBMCUyMHVy bCUyMCUzRCUyMFVSSS5lc2NhcGUoJTIyZmlsZSUzQSUyRiUyRiUyMyU3QmxvY2FsX3BhdGglN0Ql MjIpJTNDYnIlM0UlQzIlQTAlMjB0aXRsZSUyMCUzRCUyMENHSS5lc2NhcGVfaHRtbCh0aXRsZSkl M0NiciUzRSVDMiVBMCUyMCUyNSU3QiUyNmx0JTNCYSUyMG9uY2xpY2slM0QnVGV4dE1hdGUuc3lz dGVtKCUyMm9wZW4lMjAlMjMlN0JTaGVsbHdvcmRzLmVzY2FwZSh1cmwpJTdEJTIyKSUzQiUyMHJl dHVybiUyMGZhbHNlJTNCJyUyMGhyZWYlM0QnJTIzJTdCdXJsJTdEJyUyNmd0JTNCJTIzJTdCdGl0 bGUlN0QlMjZsdCUzQiUyRmElMjZndCUzQiU3RCUzQ2JyJTNFZW5kJTNDYnIlM0UlNjAlNjAlNjAl M0NiciUzRSUzQ2JyJTNFR2lzdCUyMHdpdGglMjB0aGUlMjBjb21wbGV0ZSUyMHNldHVwJTNBJTIw aHR0cHMlM0ElMkYlMkZnaXN0LmdpdGh1Yi5jb20lMkZub25pcSUyRjkyODkxNTclM0NiciUzRSUz Q2JyJTNFU3RlZmFuJTNDYnIlM0UlM0NiciUzRSUzQ2RpdiUyMGNsYXNzJTNEJTIybW96LWNpdGUt cHJlZml4JTIyJTNFQW0lMjAwMS4wMy4xNCUyMDA3JTNBMTUlMkMlMjBzY2hyaWViJTIwQWxsYW4l MjBPZGdhYXJkJTNBJTNDYgogcgolM0UlM0MlMkZkaXYlM0UlM0NibG9ja3F1b3RlJTIwY2l0ZSUz RCUyMm1pZCUzQUZBMzk0MTI3LTE0RjEtNEYxNi1CM0ZBLTVBOUY3QTgxQ0RFQiU0MHRleHRtYXRl Lm9yZyUyMiUyMHR5cGUlM0QlMjJjaXRlJTIyJTNFJTNDZGl2JTIwY2xhc3MlM0QlMjJtYXJrZG93 biUyMiUzRSUwQSUzQ3AlMjBkaXIlM0QlMjJhdXRvJTIyJTNFT24lMjAxJTIwTWFyJTIwMjAxNCUy QyUyMGF0JTIwOSUzQTIwJTJDJTIwU3RlZmFuJTIwRGFzY2hlayUyMHdyb3RlJTNBJTNDJTJGcCUz RSUwQSUwQSUzQ2Jsb2NrcXVvdGUlM0UlMEElM0NwJTIwZGlyJTNEJTIyYXV0byUyMiUzRUlzJTIw aXQlMjBwb3NzaWJsZSUyMHRvJTIwZm9yY2UlMjBzcGVjaWZpYyUyMGxpbmtzJTIwaW4lMjB0aGUl MjBIVE1MJTIwb3V0cHV0JTIwd2luZG93JTIwdG8lMjBvcGVuJTIwaW4lMjB0aGUlMjBkZWZhdWx0 JTIwYnJvd3NlciUyMCU1QiVFMiU4MCVBNiU1RCUyMEklMjBoYXZlJTIwYSUyMFJhaWxzJTIwcHJv amVjdCUyMHdoZXJlJTIwdGhlJTIwdGVzdHN1aXRlJTIwYWxyZWFkeSUyMGNyZWF0ZXMlMjBhJTIw ZHVtcCUyMG9mJTIwdGhlJTIwSFRNTCUyMHBhZ2UlMjBmb3IlMjBlYWNoJTIwZmFpbGVkJTIwZmVh dHVyZSUyMHNwZWMuJTIwTm93JTIwSSVFMiU4MCU5OW0lMjB0cnlpbmclMjB0byUyMGV4dGVuZCUy MFJTcGVjJUUyJTgwJTk5cyUyMFRleHRNYXRlRm9ybWF0dGVyJTIwdG8lMjBpbmNsdWRlJTIwbGlu a3MlMjB0byUyMHRoZXNlJTIwZmlsZXMuJTIwV29ya3MlMjBzbyUyMGZhciUyQyUyMGJ1dCUyMEkl MjBuZWVkJTIwdG8lMjBvcGVuJTIwdGhlJTIwc2F2ZWQlMjBIVE1MJTIwcGFnZXMlMjBpbiUyMG15 JTIwZGVmYXVsdCUyMGJyb3dzZXIlMjBzbyUyMHRoYXQlMjBJJTIwaGF2ZSUyMG15JTIwdXN1YWwl MjBkZXZlbG9wZXIlMjB0b29scyUyMGFyb3VuZCUyMGZvciUyMGRlYnVnZ2luZy4lM0MlMkZwJTNF JTBBJTNDJTJGYmxvY2txdW90ZSUzRSUwQSUwQSUzQ3AlMjBkaXIlM0QlMjJhdXRvJQogMgoyJTNF R2l2ZW4lMjB0aGF0JTIweW91JTIwYXJlJTIwbW9kaWZ5aW5nJTIwdGhlJTIwZ2VuZXJhdGVkJTIw b3V0cHV0JTJDJTIweW91JTIwY2FuJTIwY2hhbmdlJTIwdGhlJTIwbGluayUyMHRvJTIwdXNlJTIw SmF2YVNjcmlwdCUyMGFuZCUyMFRleHRNYXRlLnN5c3RlbSgpJTJDJTIwZXhhbXBsZSUzQSUzQyUy RnAlM0UlMEElMEElM0NwcmUlM0UlM0Njb2RlJTNFJTI2bHQlM0JzY3JpcHQlMjZndCUzQiUwQWZ1 bmN0aW9uJTIwb3Blbl91cmwodXJsKSUyMCU3QiUwQSUyMCUyMFRleHRNYXRlLnN5c3RlbSglMjJv cGVuJTIwJyUyMiUyMCUyQiUyMHVybCUyMCUyQiUyMCUyMiclMjIpJTNCJTBBJTdEJTBBJTI2bHQl M0IlMkZzY3JpcHQlMjZndCUzQiUwQSUwQSUyNmx0JTNCYSUyMGhyZWYlM0QlMjIlMjMlMjIlMjBv bkNsaWNrJTNEJTIyb3Blbl91cmwoJ2h0dHAlM0ElMkYlMkZtYWNyb21hdGVzLmNvbSUyRicpJTNC JTIwcmV0dXJuJTIwdHJ1ZSUzQiUyMiUyNmd0JTNCT3BlbiUyMFdlYnNpdGUlMjZsdCUzQiUyRmEl MjZndCUzQiUwQSUzQyUyRmNvZGUlM0UlM0MlMkZwcmUlM0UlMEElMEElM0MlMkZkaXYlM0UlMEEl M0NiciUzRSUzQ2ZpZWxkc2V0JTIwY2xhc3MlM0QlMjJtaW1lQXR0YWNobWVudEhlYWRlciUyMiUz RSUzQyUyRmZpZWxkc2V0JTNFJTNDYnIlM0UlM0NwcmUlMjB3cmFwJTNEJTIyJTIyJTNFX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18lMEF0ZXh0bWF0ZSUyMG1h aWxpbmclMjBsaXN0JTBBdGV4dG1hdGUlNDBsaXN0cy5tYWNyb21hdGVzLmNvbSUwQWh0dHAlM0El MkYlMkZsaXN0cy5tYWNyb21hdGVzLmNvbSUyRmxpc3RpbmZvJTJGdGV4dG1hdGUlM0MlMkZwcmUl M0UlMEElMEElM0MlMkZibG9ja3F1b3RlJTNFJTNDYnIlM0UiCiAgICAgIGNsYXNzPSJtYXJrZG93 bi1oZXJlLXdyYXBwZXIiIGRhdGEtbWQtdXJsPSJUaHVuZGVyYmlyZCIKICAgICAgaWQ9Im1hcmtk b3duLWhlcmUtd3JhcHBlci04NjYwNDUiPgogICAgICA8cCBzdHlsZT0ibWFyZ2luOiAxLjJlbSAw cHggISBpbXBvcnRhbnQ7Ij5UaGFua3MsIEkgZGlkbiYjODIxNzt0IGtub3cKICAgICAgICBhYm91 dCA8Y29kZSBzdHlsZT0iZm9udC1zaXplOiAwLjg1ZW07IGZvbnQtZmFtaWx5OgogICAgICAgICAg Q29uc29sYXMsSW5jb25zb2xhdGEsQ291cmllcixtb25vc3BhY2U7bWFyZ2luOiAwcHggMC4xNWVt OwogICAgICAgICAgcGFkZGluZzogMHB4IDAuM2VtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGJv cmRlcjogMXB4IHNvbGlkCiAgICAgICAgICByZ2IoMjM0LCAyMzQsIDIzNCk7IGJhY2tncm91bmQt Y29sb3I6IHJnYigyNDgsIDI0OCwgMjQ4KTsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAz cHggM3B4IDNweDsgZGlzcGxheTogaW5saW5lOyI+VGV4dE1hdGUuc3lzdGVtKCYjODIzMDspPC9j b2RlPgogICAgICAgICYjODIxMTsgdGhhdCYjODIxNztzIGV4YWN0bHkgd2hhdCBJIHdhcyBsb29r aW5nIGZvci4gJiM1NjM5Nzs8L3A+CiAgICAgIDxwIHN0eWxlPSJtYXJnaW46IDEuMmVtIDBweCAh IGltcG9ydGFudDsiPkl0IHRvb2sgYSB3aGlsZSB1bnRpbCBJCiAgICAgICAgZ290IHRoZSBlc2Nh cGluZyByaWdodCwgaGVyZSYjODIxNztzIHdoYXQgSSBlbmRlZCB1cCB3aXRoOjwvcD4KICAgICAg PHByZSBzdHlsZT0iZm9udC1zaXplOiAwLjg1ZW07IGZvbnQtZmFtaWx5OiBDb25zb2xhcyxJbmNv bnNvbGF0YSxDb3VyaWVyLG1vbm9zcGFjZTtmb250LXNpemU6IDFlbTsgbGluZS1oZWlnaHQ6IDEu MmVtO21hcmdpbjogMS4yZW0gMHB4OyI+PGNvZGUgc3R5bGU9ImZvbnQtc2l6ZTogMC44NWVtOyBm b250LWZhbWlseTogQ29uc29sYXMsSW5jb25zb2xhdGEsQ291cmllcixtb25vc3BhY2U7bWFyZ2lu OiAwcHggMC4xNWVtOyBwYWRkaW5nOiAwcHggMC4zZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsg Ym9yZGVyOiAxcHggc29saWQgcmdiKDIzNCwgMjM0LCAyMzQpOyBiYWNrZ3JvdW5kLWNvbG9yOiBy Z2IoMjQ4LCAyNDgsIDI0OCk7IGJvcmRlci1yYWRpdXM6IDNweCAzcHggM3B4IDNweDsgZGlzcGxh eTogaW5saW5lO3doaXRlLXNwYWNlOiBwcmU7IG92ZXJmbG93OiBhdXRvOyBib3JkZXItcmFkaXVz OiAzcHggM3B4IDNweCAzcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsg cGFkZGluZzogMC41ZW0gMC43ZW07IGRpc3BsYXk6IGJsb2NrICEgaW1wb3J0YW50O2Rpc3BsYXk6 IGJsb2NrOyBwYWRkaW5nOiAwLjVlbTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgYmFja2dyb3Vu ZDogbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDAlIHJnYigyNDgsIDI0OCwgMjU1KTsiIGNsYXNzPSJs YW5ndWFnZS1ydWJ5Ij48c3BhbiBjbGFzcz0iZnVuY3Rpb24iPjxzcGFuIHN0eWxlPSJjb2xvcjog cmdiKDUxLCA1MSwgNTEpOyBmb250LXdlaWdodDogYm9sZDsiIGNsYXNzPSJrZXl3b3JkIj5kZWY8 L3NwYW4+IDxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE1MywgMCwgMCk7IGZvbnQtd2VpZ2h0OiBi b2xkOyIgY2xhc3M9InRpdGxlIj5saW5rX3RvPC9zcGFuPjxzcGFuIGNsYXNzPSJwYXJhbXMiPih0 aXRsZSwgbG9jYWxfcGF0aCk8L3NwYW4+PC9zcGFuPgogIHVybCA9IDxzcGFuIGNsYXNzPSJjb25z dGFudCI+VVJJPC9zcGFuPi5lc2NhcGUoPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMjIxLCAxNywg NjgpOyIgY2xhc3M9InN0cmluZyI+IjxhIGNsYXNzPSJtb3otdHh0LWxpbmstZnJlZXRleHQiIGhy ZWY9ImZpbGU6Ly8iPmZpbGU6Ly88L2E+PHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1 MSk7IGZvbnQtd2VpZ2h0OiBib2xkO2ZvbnQtd2VpZ2h0OiBub3JtYWw7IiBjbGFzcz0ic3Vic3Qi PiN7bG9jYWxfcGF0aH08L3NwYW4+Ijwvc3Bhbj4pCiAgdGl0bGUgPSA8c3BhbiBjbGFzcz0iY29u c3RhbnQiPkNHSTwvc3Bhbj4uZXNjYXBlX2h0bWwodGl0bGUpCiAgPHNwYW4gc3R5bGU9ImNvbG9y OiByZ2IoMjIxLCAxNywgNjgpOyIgY2xhc3M9InN0cmluZyI+JXsmbHQ7YSBvbmNsaWNrPSdUZXh0 TWF0ZS5zeXN0ZW0oIm9wZW4gPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv bnQtd2VpZ2h0OiBib2xkO2ZvbnQtd2VpZ2h0OiBub3JtYWw7IiBjbGFzcz0ic3Vic3QiPiN7PHNw YW4gY2xhc3M9ImNvbnN0YW50Ij5TaGVsbHdvcmRzPC9zcGFuPi5lc2NhcGUodXJsKX08L3NwYW4+ Iik7IHJldHVybiBmYWxzZTsnIGhyZWY9JzxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwg NTEpOyBmb250LXdlaWdodDogYm9sZDtmb250LXdlaWdodDogbm9ybWFsOyIgY2xhc3M9InN1YnN0 Ij4je3VybH08L3NwYW4+JyZndDs8c3BhbiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg Zm9udC13ZWlnaHQ6IGJvbGQ7Zm9udC13ZWlnaHQ6IG5vcm1hbDsiIGNsYXNzPSJzdWJzdCI+I3t0 aXRsZX08L3NwYW4+Jmx0Oy9hJmd0O308L3NwYW4+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDUx LCA1MSwgNTEpOyBmb250LXdlaWdodDogYm9sZDsiIGNsYXNzPSJrZXl3b3JkIj5lbmQ8L3NwYW4+ CjwvY29kZT48L3ByZT4KICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMS4yZW0gMHB4ICEgaW1wb3J0 YW50OyI+R2lzdCB3aXRoIHRoZSBjb21wbGV0ZQogICAgICAgIHNldHVwOiA8YSBocmVmPSJodHRw czovL2dpc3QuZ2l0aHViLmNvbS9ub25pcS85Mjg5MTU3Ij5odHRwczovL2dpc3QuZ2l0aHViLmNv bS9ub25pcS85Mjg5MTU3PC9hPjwvcD4KICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMS4yZW0gMHB4 ICEgaW1wb3J0YW50OyI+U3RlZmFuPC9wPgogICAgICA8cCBzdHlsZT0ibWFyZ2luOiAxLjJlbSAw cHggISBpbXBvcnRhbnQ7Ij5BbSAwMS4wMy4xNCAwNzoxNSwKICAgICAgICBzY2hyaWViIEFsbGFu IE9kZ2FhcmQ6PC9wPgogICAgICA8cCBzdHlsZT0ibWFyZ2luOiAxLjJlbSAwcHggISBpbXBvcnRh bnQ7Ij48L3A+CiAgICAgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWhlcmUtZXhjbHVkZSI+CiAgICAg ICAgPHA+PC9wPgogICAgICAgIDxibG9ja3F1b3RlCiAgICAgICAgICBjaXRlPSJtaWQ6RkEzOTQx MjctMTRGMS00RjE2LUIzRkEtNUE5RjdBODFDREVCQHRleHRtYXRlLm9yZyIKICAgICAgICAgIHR5 cGU9ImNpdGUiPgogICAgICAgICAgPGRpdiBjbGFzcz0ibWFya2Rvd24iPgogICAgICAgICAgICA8 cCBkaXI9ImF1dG8iPk9uIDEgTWFyIDIwMTQsIGF0IDk6MjAsIFN0ZWZhbiBEYXNjaGVrIHdyb3Rl OjwvcD4KICAgICAgICAgICAgPGJsb2NrcXVvdGU+CiAgICAgICAgICAgICAgPHAgZGlyPSJhdXRv Ij5JcyBpdCBwb3NzaWJsZSB0byBmb3JjZSBzcGVjaWZpYyBsaW5rcyBpbgogICAgICAgICAgICAg ICAgdGhlIEhUTUwgb3V0cHV0IHdpbmRvdyB0byBvcGVuIGluIHRoZSBkZWZhdWx0IGJyb3dzZXIK ICAgICAgICAgICAgICAgIFsmIzgyMzA7XSBJIGhhdmUgYSBSYWlscyBwcm9qZWN0IHdoZXJlIHRo ZSB0ZXN0c3VpdGUgYWxyZWFkeQogICAgICAgICAgICAgICAgY3JlYXRlcyBhIGR1bXAgb2YgdGhl IEhUTUwgcGFnZSBmb3IgZWFjaCBmYWlsZWQgZmVhdHVyZQogICAgICAgICAgICAgICAgc3BlYy4g Tm93IEkmIzgyMTc7bSB0cnlpbmcgdG8gZXh0ZW5kIFJTcGVjJiM4MjE3O3MgVGV4dE1hdGVGb3Jt YXR0ZXIKICAgICAgICAgICAgICAgIHRvIGluY2x1ZGUgbGlua3MgdG8gdGhlc2UgZmlsZXMuIFdv cmtzIHNvIGZhciwgYnV0IEkKICAgICAgICAgICAgICAgIG5lZWQgdG8gb3BlbiB0aGUgc2F2ZWQg SFRNTCBwYWdlcyBpbiBteSBkZWZhdWx0IGJyb3dzZXIKICAgICAgICAgICAgICAgIHNvIHRoYXQg SSBoYXZlIG15IHVzdWFsIGRldmVsb3BlciB0b29scyBhcm91bmQgZm9yCiAgICAgICAgICAgICAg ICBkZWJ1Z2dpbmcuPC9wPgogICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CiAgICAgICAgICAgIDxw IGRpcj0iYXV0byI+R2l2ZW4gdGhhdCB5b3UgYXJlIG1vZGlmeWluZyB0aGUgZ2VuZXJhdGVkCiAg ICAgICAgICAgICAgb3V0cHV0LCB5b3UgY2FuIGNoYW5nZSB0aGUgbGluayB0byB1c2UgSmF2YVNj cmlwdCBhbmQKICAgICAgICAgICAgICBUZXh0TWF0ZS5zeXN0ZW0oKSwgZXhhbXBsZTo8L3A+CiAg ICAgICAgICAgIDxwcmU+PGNvZGU+Jmx0O3NjcmlwdCZndDsKZnVuY3Rpb24gb3Blbl91cmwodXJs KSB7CiAgVGV4dE1hdGUuc3lzdGVtKCJvcGVuICciICsgdXJsICsgIiciKTsKfQombHQ7L3Njcmlw dCZndDsKCiZsdDthIGhyZWY9IiMiIG9uQ2xpY2s9Im9wZW5fdXJsKCc8YSBjbGFzcz0ibW96LXR4 dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRwOi8vbWFjcm9tYXRlcy5jb20vIj5odHRwOi8vbWFj cm9tYXRlcy5jb20vPC9hPicpOyByZXR1cm4gdHJ1ZTsiJmd0O09wZW4gV2Vic2l0ZSZsdDsvYSZn dDsKPC9jb2RlPjwvcHJlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8YnI+CiAgICAgICAg ICA8ZmllbGRzZXQgY2xhc3M9Im1pbWVBdHRhY2htZW50SGVhZGVyIj48L2ZpZWxkc2V0PgogICAg ICAgICAgPGJyPgogICAgICAgICAgPHByZSB3cmFwPSIiPl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCnRleHRtYXRlIG1haWxpbmcgbGlzdAo8YSBjbGFzcz0i bW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJtYWlsdG86dGV4dG1hdGVAbGlzdHMubWFj cm9tYXRlcy5jb20iPnRleHRtYXRlQGxpc3RzLm1hY3JvbWF0ZXMuY29tPC9hPgo8YSBjbGFzcz0i bW96LXR4dC1saW5rLWZyZWV0ZXh0IiBocmVmPSJodHRwOi8vbGlzdHMubWFjcm9tYXRlcy5jb20v bGlzdGluZm8vdGV4dG1hdGUiPmh0dHA6Ly9saXN0cy5tYWNyb21hdGVzLmNvbS9saXN0aW5mby90 ZXh0bWF0ZTwvYT48L3ByZT4KICAgICAgICA8L2Jsb2NrcXVvdGU+CiAgICAgICAgPHA+PC9wPgog ICAgICA8L2Rpdj4KICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMS4yZW0gMHB4ICEgaW1wb3J0YW50 OyI+PC9wPgogICAgPC9kaXY+CiAgPC9ib2R5Pgo8L2h0bWw+Cg== --===============3607812147289289483==--