Return-Path: Delivered-To: apmail-cocoon-dev-archive@www.apache.org Received: (qmail 73333 invoked from network); 7 Jan 2005 09:51:48 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 7 Jan 2005 09:51:48 -0000 Received: (qmail 86887 invoked by uid 500); 7 Jan 2005 09:51:46 -0000 Delivered-To: apmail-cocoon-dev-archive@cocoon.apache.org Received: (qmail 86801 invoked by uid 500); 7 Jan 2005 09:51:45 -0000 Mailing-List: contact dev-help@cocoon.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Reply-To: dev@cocoon.apache.org Delivered-To: mailing list dev@cocoon.apache.org Received: (qmail 86775 invoked by uid 99); 7 Jan 2005 09:51:45 -0000 X-ASF-Spam-Status: No, hits=1.1 required=10.0 tests=HTML_50_60,HTML_BADTAG_20_30,HTML_FONT_BIG,HTML_MESSAGE,MIME_BASE64_TEXT,WEIRD_PORT X-Spam-Check-By: apache.org Received-SPF: pass (hermes.apache.org: local policy) Received: from mailout1.informatik.tu-muenchen.de (HELO mailout1.informatik.tu-muenchen.de) (131.159.0.18) by apache.org (qpsmtpd/0.28) with ESMTP; Fri, 07 Jan 2005 01:51:43 -0800 Date: Fri, 7 Jan 2005 10:51:38 +0100 (MET) From: Halgurt Mustafa-Ali Reply-To: Halgurt Mustafa-Ali Subject: Re: [RFC] Cocoon Tutorial To: dev@cocoon.apache.org MIME-Version: 1.0 Content-Type: MULTIPART/mixed; BOUNDARY=Herd_of_Hippopotamuses_146_000 X-Mailer: dtmail 1.3.0 @(#)CDE Version 1.5.7 SunOS 5.9 sun4u sparc Message-Id: <20050107095138.CA50EBC6A@mailrelay1.informatik.tu-muenchen.de> X-Virus-Scanned: by amavisd-new/sophie/sophos at mailrelay1.informatik.tu-muenchen.de X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N --Herd_of_Hippopotamuses_146_000 Content-Type: TEXT/plain; charset=us-ascii Content-MD5: oonYYin7KCHXBUOgqBP+YA== Hi, See the Attachment please, in the zip file you can finde the source code of both RDQLTrasnformer and OWQLTransformer. You need just to compile, and put them in cocoon/WEB-INF/classes. For the RDQLTransformer you need to download Jena and put the .jar files to cocoon/WEB-INF/lib. For the OWQLTransformer download owl-ql on this page: http://ksl.stanford.edu/projects/owl-ql/owql-20041207.zip and put the .jar files to cocoon/WEB-INF/lib. After you did that, just copy the directory royals to the main cocoon directory and type this link in any browser: http://hostName:Port/cocoon/royals and it should work. If you need any help just let me know. Best regards, Halgurt PS: I was not able to send a ZIP Attachment to cocoon, please create a directory cocoon/royals and copy all the files except the .java files to this directory --Herd_of_Hippopotamuses_146_000 Content-Type: TEXT/plain; name="default.xml"; charset=us-ascii; x-unix-mode=0644 Content-Description: default.xml Content-MD5: T+d/Cf5mXDAy19dzHugVKA== --Herd_of_Hippopotamuses_146_000 Content-Type: APPLICATION/octet-stream; name="OWQLTransformer.java"; x-unix-mode=0644 Content-Transfer-Encoding: BASE64 Content-Description: OWQLTransformer.java Content-MD5: sH2MiZW0I03JN8tWwXgCkg== aW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07DQppbXBvcnQg amF2YS5pby5JT0V4Y2VwdGlvbjsNCmltcG9ydCBqYXZhLmlvLlByaW50V3Jp dGVyOw0KaW1wb3J0IGphdmEuaW8uU3RyaW5nUmVhZGVyOw0KaW1wb3J0IGph dmEuaW8uU3RyaW5nV3JpdGVyOw0KaW1wb3J0IGphdmEudXRpbC5NYXA7DQpp bXBvcnQgb3JnLmFwYWNoZS5hdmFsb24uZnJhbWV3b3JrLnBhcmFtZXRlcnMu UGFyYW1ldGVyczsNCmltcG9ydCBvcmcuYXBhY2hlLmF2YWxvbi5mcmFtZXdv cmsuc2VydmljZS5TZXJ2aWNlRXhjZXB0aW9uOw0KaW1wb3J0IG9yZy5hcGFj aGUuYXZhbG9uLmZyYW1ld29yay5zZXJ2aWNlLlNlcnZpY2VNYW5hZ2VyOw0K aW1wb3J0IG9yZy5hcGFjaGUuYXZhbG9uLmZyYW1ld29yay5zZXJ2aWNlLlNl cnZpY2VhYmxlOw0KaW1wb3J0IG9yZy5hcGFjaGUuY29jb29uLlByb2Nlc3Np bmdFeGNlcHRpb247DQppbXBvcnQgb3JnLmFwYWNoZS5jb2Nvb24uZW52aXJv bm1lbnQuU291cmNlUmVzb2x2ZXI7DQppbXBvcnQgb3JnLmFwYWNoZS5jb2Nv b24udHJhbnNmb3JtYXRpb24uQWJzdHJhY3RUcmFuc2Zvcm1lcjsNCmltcG9y dCBvcmcuYXBhY2hlLmV4Y2FsaWJ1ci54bWwuaW1wbC5YZXJjZXNQYXJzZXI7 DQppbXBvcnQgb3JnLmFwYWNoZS5leGNhbGlidXIueG1sLnNheC5TQVhQYXJz ZXI7DQppbXBvcnQgb3JnLmpkb20uRG9jdW1lbnQ7DQppbXBvcnQgb3JnLmpk b20uSkRPTUV4Y2VwdGlvbjsNCmltcG9ydCBvcmcuamRvbS5pbnB1dC5TQVhC dWlsZGVyOw0KaW1wb3J0IG9yZy5qZG9tLm91dHB1dC5TQVhPdXRwdXR0ZXI7 DQppbXBvcnQgb3JnLnhtbC5zYXguQXR0cmlidXRlczsNCmltcG9ydCBvcmcu eG1sLnNheC5JbnB1dFNvdXJjZTsNCmltcG9ydCBvcmcueG1sLnNheC5TQVhF eGNlcHRpb247DQppbXBvcnQgb3JnLnhtbC5zYXguaGVscGVycy5BdHRyaWJ1 dGVzSW1wbDsNCg0KaW1wb3J0IG93cWwuanRwLk9XUUxTZXJ2ZXJKVFA7DQoN Cg0KDQovKg0KICogQ3JlYXRlZCBvbiAyOS4wNy4yMDA0DQogKg0KICogVE9E TyBUbyBjaGFuZ2UgdGhlIHRlbXBsYXRlIGZvciB0aGlzIGdlbmVyYXRlZCBm aWxlIGdvIHRvDQogKiBXaW5kb3cgLSBQcmVmZXJlbmNlcyAtIEphdmEgLSBD b2RlIFN0eWxlIC0gQ29kZSBUZW1wbGF0ZXMNCiAqLw0KDQovKioNCiAqIEBh dXRob3IgSGFsZ3VydA0KICoNCiAqIFRPRE8gVG8gY2hhbmdlIHRoZSB0ZW1w bGF0ZSBmb3IgdGhpcyBnZW5lcmF0ZWQgdHlwZSBjb21tZW50IGdvIHRvDQog KiBXaW5kb3cgLSBQcmVmZXJlbmNlcyAtIEphdmEgLSBDb2RlIFN0eWxlIC0g Q29kZSBUZW1wbGF0ZXMNCiAqLw0KcHVibGljIGNsYXNzIE9XUUxUcmFuc2Zv cm1lciBleHRlbmRzIEFic3RyYWN0VHJhbnNmb3JtZXIgaW1wbGVtZW50cyBT ZXJ2aWNlYWJsZSB7DQoNCglTZXJ2aWNlTWFuYWdlciBtYW5hZ2VyOw0KICAg IHByaXZhdGUgU3RyaW5nIG5hbWVzcGFjZTsNCiAgICBPV1FMU2VydmVySlRQ IG93cWxTZXJ2ZXI7DQogICAgU3RyaW5nIHF1ZXJ5Ow0KICAgIGJvb2xlYW4g cmVhZE9XUUw7DQogICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIG93cWxucyA9 ICJodHRwOi8vd3d3LnczLm9yZy8yMDAzLzEwL293bC1xbC1zeW50YXgjIjsN CiAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgdmFybnMgID0gImh0dHA6Ly93 d3cudzMub3JnLzIwMDMvMTAvb3dsLXFsLXZhcmlhYmxlcyMiOw0KICAgIHBy aXZhdGUgc3RhdGljIFN0cmluZyByZGZucyAgPSAiaHR0cDovL3d3dy53My5v cmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI7DQogICAgcHJpdmF0ZSBz dGF0aWMgU3RyaW5nIHNvYXBucyA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2Fw Lm9yZy9zb2FwL2VudmVsb3BlLyI7DQogICAgcHJpdmF0ZSBzdGF0aWMgU3Ry aW5nIGl3bnMgICA9ICJodHRwOi8vd3d3LmtzbC5zdGFuZm9yZC5lZHUvc29m dHdhcmUvSVcvc3BlYy9pdy5kYW1sIyI7DQogICAgcHJpdmF0ZSBzdGF0aWMg U3RyaW5nIHJkZnNucyA9ICJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3Jk Zi1zY2hlbWEjIjsNCiAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZGFtbG5z ID0gImh0dHA6Ly93d3cuZGFtbC5vcmcvMjAwMS8wMy9kYW1sK29pbCMiOw0K ICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyB0a2JucyAgPSAiaHR0cDovL3d3 dy5kYW1sLm9yZy8yMDAxLzAzL2RhbWwrb2lsLWV4IyI7DQogICAgcHJpdmF0 ZSBzdGF0aWMgU3RyaW5nIG93bG5zICA9ICJodHRwOi8vd3d3LnczLm9yZy8y MDAyLzA3L293bCMiOw0KDQogICAgcHVibGljIE9XUUxUcmFuc2Zvcm1lcigp IHsNCg0KICAgICAgICBuYW1lc3BhY2UgPSAiaHR0cDovL2FwYWNoZS5vcmcv Y29jb29uL293cWwvMi4xIjsNCiAgICAgICAgb3dxbFNlcnZlciA9IG5ldyBP V1FMU2VydmVySlRQKCk7DQogICAgICAgIHJlYWRPV1FMID0gZmFsc2U7DQog ICAgICAgIHF1ZXJ5ID0gIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGlu Zz1cIlVURi04XCI/PiI7DQogICAgICAgIC8vZSA9IHN1cGVyLmJ1aWxkZXIu Z2V0RG9jdW1lbnQoKS5nZXRGaXJzdENoaWxkKCk7DQogICAgICAgIC8vcmVx eG1sID0gbmV3IFN0cmluZ0J1ZmZlciAoKTsNCiAgICB9DQogICAgDQoJLyog KG5vbi1KYXZhZG9jKQ0KCSAqIEBzZWUgb3JnLmFwYWNoZS5hdmFsb24uZnJh bWV3b3JrLnNlcnZpY2UuU2VydmljZWFibGUjc2VydmljZShvcmcuYXBhY2hl LmF2YWxvbi5mcmFtZXdvcmsuc2VydmljZS5TZXJ2aWNlTWFuYWdlcikNCgkg Ki8JDQoJcHVibGljIHZvaWQgc2VydmljZShTZXJ2aWNlTWFuYWdlciBtYW5h Z2VyKSB0aHJvd3MgU2VydmljZUV4Y2VwdGlvbiB7DQoJCS8vIFRPRE8gQXV0 by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWINCgkJdGhpcy5tYW5hZ2VyID0gbWFu YWdlcjsNCgl9DQoNCiAgICBwdWJsaWMgdm9pZCBzZXR1cCAoU291cmNlUmVz b2x2ZXIgcmVzb2x2ZXIsIE1hcCBvYmplY3RNb2RlbCwgU3RyaW5nIHNyYywg UGFyYW1ldGVycyBwYXIpIHRocm93cyBQcm9jZXNzaW5nRXhjZXB0aW9uLCBT QVhFeGNlcHRpb24sIElPRXhjZXB0aW9uIHt9DQoNCiAgICBwdWJsaWMgdm9p ZCBzdGFydEVsZW1lbnQgKFN0cmluZyBuYW1lc3BhY2VVUkksIFN0cmluZyBs b2NhbE5hbWUsIFN0cmluZyBxTmFtZSwgQXR0cmlidXRlcyBhdHRyaWJ1dGVz KSB0aHJvd3MgU0FYRXhjZXB0aW9uIHsNCiAgICAgICAgaWYgKG5hbWVzcGFj ZVVSSS5lcXVhbHMgKG5hbWVzcGFjZSkgJiYgbG9jYWxOYW1lLmVxdWFscyAo Ik9XTFFMIikpIHsNCiAgICAgICAgICAgIHJlYWRPV1FMID0gdHJ1ZTsNCiAg ICAgICAgfQ0KDQogICAgICAgIGlmIChyZWFkT1dRTCAmJiAhbG9jYWxOYW1l LmVxdWFscyAoIk9XTFFMIikpIHsNCiAgICAgICAgCWlmIChsb2NhbE5hbWUu ZXF1YWxzKCJxdWVyeSIpKXsNCiAgICAgICAgICAgIHF1ZXJ5ICs9ICI8IiAr IHFOYW1lICsgIiB4bWxuczpyZGY9XCIiICsgcmRmbnMgKyAiXCIiICsgDQoJ CQkJCSAiIHhtbG5zOnJkZnM9XCIiICsgcmRmc25zKyAiXCIiICsgDQoJCQkJ CSAiIHhtbG5zOm93bC1xbD1cIiIgKyBvd3FsbnMrICJcIiIgKyANCgkJCQkJ ICIgeG1sbnM6aXc9XCIiICsgaXducysgIlwiIiArIA0KCQkJCQkgIiB4bWxu czp0a2I9XCIiICsgdGtibnMrICJcIiIgKyANCgkJCQkJICIgeG1sbnM6dmFy PVwiIiArIHZhcm5zKyAiXCIiICsgDQoJCQkJCSAiIHhtbG5zOmRhbWw9XCIi ICsgZGFtbG5zKyAiXCIiICsNCgkJCQkJICIgeG1sbnM6b3dsPVwiIiArIG93 bG5zKyAiXCIiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAJZWxzZSBpZiAo IShuYW1lc3BhY2VVUkkuZXF1YWxzKHJkZm5zKSB8fCANCiAgICAgICAgCQkJ ICAgbmFtZXNwYWNlVVJJLmVxdWFscyhyZGZzbnMpIHx8IA0KCQkJCQkgICBu YW1lc3BhY2VVUkkuZXF1YWxzKGl3bnMpIHx8IA0KCQkJCQkgICBuYW1lc3Bh Y2VVUkkuZXF1YWxzKHRrYm5zKSB8fCANCgkJCQkJICAgbmFtZXNwYWNlVVJJ LmVxdWFscyh2YXJucykgfHwgDQoJCQkJCSAgIG5hbWVzcGFjZVVSSS5lcXVh bHMoZGFtbG5zKSB8fCANCgkJCQkJICAgbmFtZXNwYWNlVVJJLmVxdWFscyhv d2xucykgfHwgDQoJCQkJCSAgIG5hbWVzcGFjZVVSSS5lcXVhbHMob3dxbG5z KSkpew0KDQogICAgICAgICAgICAgICAgcXVlcnkgKz0gIjwiICsgcU5hbWUg KyAiIHhtbG5zOiIgKyBxTmFtZS5zdWJzdHJpbmcgKDAsIHFOYW1lLmxlbmd0 aCgpLSBsb2NhbE5hbWUubGVuZ3RoKCktMSkgKyAiPVwiIiArIG5hbWVzcGFj ZVVSSSArICJcIiI7DQogICAgICAgIAkJDQogICAgICAgIH1lbHNlIHtxdWVy eSArPSAiPCIgKyBxTmFtZTt9DQogICAgICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IGF0dHJpYnV0ZXMuZ2V0TGVuZ3RoICgpOyBpKyspIHsNCiAgICAg ICAgICAgICAgICBxdWVyeSArPSAiICIgKyBhdHRyaWJ1dGVzLmdldFFOYW1l KGkpICsgIj1cIiIgKyBhdHRyaWJ1dGVzLmdldFZhbHVlKGkpICsgIlwiIjsN CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHF1ZXJ5Kz0gIj4iOw0KICAg ICAgICB9DQoNCg0KICAgICAgICBlbHNlIGlmICghcmVhZE9XUUwpIHsNCiAg ICAgICAgICAgIHN1cGVyLnN0YXJ0RWxlbWVudCAobmFtZXNwYWNlVVJJLCBs b2NhbE5hbWUsIHFOYW1lLCBhdHRyaWJ1dGVzKTsNCiAgICAgICAgfQ0KDQog ICAgfQ0KDQogICAgcHVibGljIHZvaWQgY2hhcmFjdGVycyAoY2hhcltdIGNo LCBpbnQgc3RhcnQsIGludCBsZW5ndGgpIHsNCg0KICAgICAgICBpZiAocmVh ZE9XUUwpIHsvLyAmJiAobGVuZ3RoICE9IDApKSB7DQoNCiAgICAgICAgICAg IFN0cmluZyB0ZW1wID0gbmV3IFN0cmluZyAoY2gsIHN0YXJ0LCBsZW5ndGgp Ow0KICAgICAgICAgICAgU3RyaW5nIGEgPSAiPD4mIjsNCiAgICAgICAgICAg IENoYXJhY3RlciBiID0gbmV3IENoYXJhY3RlcihhLmNoYXJBdCgwKSk7DQog ICAgICAgICAgICBDaGFyYWN0ZXIgZCA9IG5ldyBDaGFyYWN0ZXIoYS5jaGFy QXQoMSkpOw0KICAgICAgICAgICAgQ2hhcmFjdGVyIGUgPSBuZXcgQ2hhcmFj dGVyKGEuY2hhckF0KDIpKTsNCiAgICAgICAgICAgIGZvciAoaW50IGkgPSAw OyBpPHRlbXAubGVuZ3RoKCk7IGkrKyl7DQogICAgICAgICAgICAJQ2hhcmFj dGVyIGMgPSBuZXcgQ2hhcmFjdGVyICh0ZW1wLmNoYXJBdChpKSk7DQogICAg ICAgICAgICAJaWYgKGMuZXF1YWxzKGIpKXsNCiAgICAgICAgICAgIAkJU3lz dGVtLm91dC5wcmludGxuKCIxIik7DQogICAgICAgICAgICAJCXF1ZXJ5ICs9 ICImbHQ7IjsNCiAgICAgICAgICAgIAkJfQ0KICAgICAgICAgICAgCWVsc2Ug aWYgKGMuZXF1YWxzKGQpKXsNCiAgICAgICAgICAgIAkJU3lzdGVtLm91dC5w cmludGxuKCIyIik7DQogICAgICAgICAgICAJcXVlcnkgKz0gIiZndDsiOw0K ICAgICAgICAgICAgCX0NCiAgICAgICAgICAgIAllbHNlIGlmIChjLmVxdWFs cyhlKSl7DQogICAgICAgICAgICAJCVN5c3RlbS5vdXQucHJpbnRsbigiMyIp Ow0KICAgICAgICAgICAgCXF1ZXJ5ICs9ICImYW1wOyI7CQ0KICAgICAgICAg ICAgCX1lbHNlIHsNCiAgICAgICAgICAgIAkJLy9TeXN0ZW0ub3V0LnByaW50 bG4oIjQiKTsNCiAgICAgICAgICAgIAlxdWVyeSArPSBjOwkNCiAgICAgICAg ICAgIAl9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCg0K ICAgIHB1YmxpYyB2b2lkIGVuZEVsZW1lbnQgKFN0cmluZyBuYW1lc3BhY2VV UkksIFN0cmluZyBsb2NhbE5hbWUsIFN0cmluZyBxTmFtZSkgdGhyb3dzIFNB WEV4Y2VwdGlvbiB7DQoNCiAgICAgICAgaWYgKG5hbWVzcGFjZVVSSS5lcXVh bHMgKG5hbWVzcGFjZSkgJiYgbG9jYWxOYW1lLmVxdWFscyAoIk9XTFFMIikp IHsNCg0KICAgICAgICAgICAgcmVhZE9XUUwgPSBmYWxzZTsNCiAgICAgICAg ICAgIFN5c3RlbS5vdXQucHJpbnRsbiAoKTsNCiAgICAgICAgICAgIFN5c3Rl bS5vdXQucHJpbnRsbiAoIlFVRVJZIik7DQogICAgICAgICAgICBTeXN0ZW0u b3V0LnByaW50bG4gKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIik7DQogICAgICAgICAg ICBTeXN0ZW0ub3V0LnByaW50bG4gKHF1ZXJ5KTsNCiAgICAgICAgICAgIFN5 c3RlbS5vdXQucHJpbnRsbiAoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsNCg0KICAg ICAgICAgICAgdHJ5IHsNCg0KICAgICAgICAgICAJICAgIFN0cmluZ1dyaXRl ciBzdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsNCiAgICAgICAgICAgICAgICBQ cmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlciAoc3cpOw0KICAgICAg ICAgICAgICAgIG93cWxTZXJ2ZXIucHJpbnRBbnN3ZXJzWE1MIChxdWVyeSwg cHcpOw0KICAgICAgICAgICAgICAgIFN0cmluZyBhbnNzdHIgPSBzdy50b1N0 cmluZygpOw0KICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxu ICgiU3RhcnQgYW5zd2VyIFN0cmluZzogIiArIGFuc3N0ciArICJsZW5ndGg6 ICIrYW5zc3RyLmxlbmd0aCgpKTsNCiAgICAgICAgICAgICAgICBzdXBlci5z dGFydEVsZW1lbnQgKCIiLCAicmVzdWx0IiwgInJlc3VsdCIsIChBdHRyaWJ1 dGVzKW5ldyBBdHRyaWJ1dGVzSW1wbCgpKTsNCiAgICAgICAgICAgICAgICAv L3N1cGVyLmNoYXJhY3RlcnMoYW5zc3RyLnRvQ2hhckFycmF5KCksIDAsIGFu c3N0ci5sZW5ndGgoKSk7DQoNCiAgICAgICAgICAgICAgICBCeXRlQXJyYXlJ bnB1dFN0cmVhbSBieXRlQXJyYXkgPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJl YW0gKGFuc3N0ci5nZXRCeXRlcygpKTsNCiAgICAgICAgICAgICAgICBJbnB1 dFNvdXJjZSBpblNyYyA9IG5ldyBJbnB1dFNvdXJjZSAoYnl0ZUFycmF5KTsN CiAgICAgICAgICAgICAgICBTQVhQYXJzZXIgcGFyc2VyID0gKFNBWFBhcnNl cikgbWFuYWdlci5sb29rdXAoU0FYUGFyc2VyLlJPTEUpOw0KICAgICAgICAg ICAgICAgIHBhcnNlci5wYXJzZShpblNyYywgdGhpcy54bWxDb25zdW1lcik7 DQogICAgICAgICAgICAgICAgLy8gRmlyZSB0aGUgU0FYIGV2ZW50cyBhbmQg cGFzcyB0aGVtIHRvIHRoZSBjb250ZW50SGFuZGxlcg0KICAgICAgICAgICAg ICAgIC8vcGFyc2VyLnBhcnNlKGluU3JjLCBzdXBlci5jb250ZW50SGFuZGxl cik7DQoJCQkJDQogICAgICAgICAgICAgICAgLy9TdHJpbmdSZWFkZXIgc3Ig PSBuZXcgU3RyaW5nUmVhZGVyIChhbnNzdHIpOw0KICAgICAgICAgICAgICAg IC8vRG9jdW1lbnQgZG9jID0gbmV3IFNBWEJ1aWxkZXIoKS5idWlsZCAoc3Ip Ow0KICAgICAgICAgICAgICAgIC8vY29udmVydFRvU0FYIChkb2MpOw0KDQog ICAgICAgICAgICAgICAgc3VwZXIuZW5kRWxlbWVudCAoIiIsICJyZXN1bHQi LCAicmVzdWx0Iik7DQogICAgICAgICAgICAgICAgcmVzZXQoKTsNCiAgICAg ICAgICAgIH0NCg0KICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKXsN CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJBbiBFcnJv ciBvY2N1cmVkIGR1cmluZyBQYXJhbWV0ZXIgaW5zdGFudGlhdGlvbiAiK2Uu Z2V0TWVzc2FnZSgpKyIgQ2F1c2U6IitlLmdldENhdXNlKCkpOw0KICAgICAg ICAgICAgICAgIHJlc2V0KCk7DQogICAgICAgICAgICAgICAgU3RhY2tUcmFj ZUVsZW1lbnRbXSBlbGVtcyA9IGUuZ2V0U3RhY2tUcmFjZSgpOw0KICAgICAg ICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxlbGVtcy5sZW5ndGg7IGkrKykg ew0KDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGUucHJp bnRTdGFja1RyYWNlICgpOw0KICAgICAgICAgICAgICAgIHN1cGVyLmVuZEVs ZW1lbnQgKCIiLCAicmVzdWx0IiwgInJlc3VsdCIpOw0KICAgICAgICAgICAg fQ0KICAgICAgICB9DQogICAgICAgIGlmIChyZWFkT1dRTCkgew0KICAgICAg ICAgICAgcXVlcnkgKz0gIjwvIiArIHFOYW1lICsgIj4iOw0KICAgICAgICB9 DQogICAgICAgIGVsc2UgaWYgKCFsb2NhbE5hbWUuZXF1YWxzKCJPV0xRTCIp KXsNCiAgICAgICAgc3VwZXIuZW5kRWxlbWVudChuYW1lc3BhY2VVUkksIGxv Y2FsTmFtZSwgcU5hbWUpOwkNCiAgICAgICAgfQ0KICAgIH0NCg0KDQogICAg cHVibGljIHZvaWQgY29udmVydFRvU0FYIChEb2N1bWVudCBqZG9tRG9jKSB0 aHJvd3MgSkRPTUV4Y2VwdGlvbiB7DQoNCiAgICAgICBTQVhPdXRwdXR0ZXIg b3V0cHV0dGVyID0gbmV3IFNBWE91dHB1dHRlciAoc3VwZXIuY29udGVudEhh bmRsZXIpOw0KDQogICAgICAgLy8gRmlyZSB0aGUgU0FYIGV2ZW50cw0KICAg ICAgIG91dHB1dHRlci5vdXRwdXQgKGpkb21Eb2MpOw0KICAgIH0NCg0KDQoN CiAgICBwcml2YXRlIHZvaWQgcmVzZXQoKSB7DQoNCiAgICAgICAgcmVhZE9X UUwgPSBmYWxzZTsNCiAgICAgICAgcXVlcnkgPSBuZXcgU3RyaW5nKCk7DQog ICAgfQ0KDQp9DQoNCg== --Herd_of_Hippopotamuses_146_000 Content-Type: TEXT/plain; name="query.xsl"; charset=ISO-8859-15; x-unix-mode=0644 Content-Transfer-Encoding: BASE64 Content-Description: query.xsl Content-MD5: XGE9l8bvOyF+iWwEZfZZtg== PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjx4c2w6 c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zOnhzbD0iaHR0cDovL3d3 dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIg0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv eGh0bWwiDQoJCQkJCXhtbG5zOm93cWw9Imh0dHA6Ly9hcGFjaGUub3JnL2Nv Y29vbi9vd3FsLzIuMSINCgkJCQkJeG1sbnM6U09BUC1FTlY9Imh0dHA6Ly9z Y2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIg0KCQkJCQl4bWxu czpvd2wtcWw9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvMTAvb3dsLXFsLXN5 bnRheCMiDQogICAgICAgICAgIAkJCQl4bWxuczp2YXI9Imh0dHA6Ly93d3cu dzMub3JnLzIwMDMvMTAvb3dsLXFsLXZhcmlhYmxlcyMiDQogICAgICAgICAg IAkJCQl4bWxuczppdz0iaHR0cDovL3d3dy5rc2wuc3RhbmZvcmQuZWR1L3Nv ZnR3YXJlL0lXL3NwZWMvaXcuZGFtbCMiDQogICAgICAgICAgIAkJCQl4bWxu czp0a2I9Imh0dHA6Ly93d3cuZGFtbC5vcmcvMjAwMS8wMy9kYW1sK29pbC1l eCMiDQogICAgICAgICAgIAkJCQl4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMu b3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiDQogICAgICAgICAgIAkJ CQl4bWxuczpyZGZzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1z Y2hlbWEjIg0KICAgICAgICAgICAJCQkJeG1sbnM6b3dsPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAyLzA3L293bCMiDQogICAgICAgICAgIAkJCQl4bWxuczpk YW1sPSJodHRwOi8vd3d3LmRhbWwub3JnLzIwMDEvMDMvZGFtbCtvaWwjIj4N CiAJCTx4c2w6cGFyYW0gbmFtZT0iaWQiPjwveHNsOnBhcmFtPg0KIDx4c2w6 dGVtcGxhdGUgbWF0Y2g9Ii8iPg0KPG93cWw6T1dMUUwgeG1sbnM6b3dxbD0i aHR0cDovL21hcmlhX3NoYXJhcG92YS5odG1sIj4NCjxTT0FQLUVOVjpFbnZl bG9wZSB4bWxuczpTT0FQLUVOVj0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5v cmcvc29hcC9lbnZlbG9wZS8iDQogICAgICAgICAgICAgICAgICAgU09BUC1F TlY6ZW5jb2RpbmdTdHlsZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcv c29hcC9lbmNvZGluZy8iPg0KPFNPQVAtRU5WOkJvZHk+DQoNCg0KDQo8b3ds LXFsOnF1ZXJ5IHhtbG5zOm93bC1xbD0iaHR0cDovL3d3dy53My5vcmcvMjAw My8xMC9vd2wtcWwtc3ludGF4IyINCiAgICAgICAgICAgeG1sbnM6dmFyPSJo dHRwOi8vd3d3LnczLm9yZy8yMDAzLzEwL293bC1xbC12YXJpYWJsZXMjIg0K ICAgICAgICAgICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv MDIvMjItcmRmLXN5bnRheC1ucyMiDQogICAgICAgICAgIHhtbG5zOnJkZnM9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDEvcmRmLXNjaGVtYSMiDQogICAg ICAgICAgIHhtbG5zOm93bD0iaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNy9v d2wjIj4NCg0KDQogPG93bC1xbDpwcmVtaXNlPg0KICAgIDxvd2wtcWw6S0lG Pg0KDQogICAgICAgIDwhLS0gVGhvc2UgYXJlIGNvbnZlbmllbmNlIHByZWRp Y2F0ZXMuIA0KICAgICAgICAgICAgIEVhY2ggcHJlZGljYXRlIGlzIGp1c3Qg YSBzaG9ydGN1dCBmb3IgdGhlIGFjY29yZGluZyB8aHR0cC4uLnw6OnxwcmVk aWNhdGV8ICAgIC0tPg0KDQoJKCAmbHQ7PSAoIGlzTWFsZSA/cGVyc29uICkN CiAgICAgICAgICAgICAgICAoIHxodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy LzIyLXJkZi1zeW50YXgtbnMjfDo6fHR5cGV8ICA/cGVyc29uICB8aHR0cDov L3d3d3JhZGlnLmluLnR1bS5kZS9vbnRvbG9neS9wZW9wbGUvcGVvcGxlMi5v d2wjfDo6fE1hbGV8ICkNCiAgICAgICAgKQ0KDQoJKCAmbHQ7PSAoIGlzRmVt YWxlID9wZXJzb24gKQ0KICAgICAgICAgICAgICAgICggfGh0dHA6Ly93d3cu dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyN8Ojp8dHlwZXwgID9w ZXJzb24gIHxodHRwOi8vd3d3cmFkaWcuaW4udHVtLmRlL29udG9sb2d5L3Bl b3BsZS9wZW9wbGUyLm93bCN8Ojp8RmVtYWxlfCApDQogICAgICAgICkNCg0K CSggJmx0Oz0gKCBpc1BhcmVudE9mID9wYXJlbnQgP3BlcnNvbiApDQogICAg ICAgICAgICAgICAgKCB8aHR0cDovL3d3d3JhZGlnLmluLnR1bS5kZS9vbnRv bG9neS9wZW9wbGUvcGVvcGxlMi5vd2wjfDo6fGlzUGFyZW50T2Z8ICA/cGFy ZW50ID9wZXJzb24gICApDQogICAgICAgICkNCg0KDQoNCg0KDQoNCiAgICAg ICAgPCEtLSBUaG9zZSBhcmUgdGhlIGltcG9ydGFudCBwcmVkaWNhdGVzLiAN CiAgICAgICAgICAgICBFYWNoIHByZWRpY2F0ZSBpcyBjYWxjdWxhdGVkIHVz aW5nIGV4aXN0aW5nIGluZm9ybWF0aW9uIGFuZCBpdCBwcm92aWRlcyBuZXcg aW5mb3JtYXRpb24uIC0tPg0KDQoJKCAmbHQ7PSAoIGlzRmF0aGVyT2YgP2Zh dGhlciA/cGVyc29uICkgDQoJCSggYW5kIA0KCQkJKCBpc01hbGUgCT9mYXRo ZXIgCSkNCgkJCSggaXNQYXJlbnRPZgk/ZmF0aGVyID9wZXJzb24JKQ0KCQkp DQoJKQ0KDQoJKCAmbHQ7PSAoIGlzTW90aGVyT2YgP21vdGhlciA/cGVyc29u ICkgDQoJCSggYW5kIA0KCQkJKCBpc0ZlbWFsZSAJP21vdGhlciAJKQ0KCQkJ KCBpc1BhcmVudE9mCT9tb3RoZXIgP3BlcnNvbgkpDQoJCSkNCgkpDQoNCg0K CSggJmx0Oz0gKCBpc0dyYW5kZmF0aGVyT2YgP2dyYW5kZmF0aGVyID9wZXJz b24gKSANCgkJKCBhbmQgDQoJCQkoIGlzRmF0aGVyT2YgCT9ncmFuZGZhdGhl cgk/bWlkZGxlcGVyc29uIAkpDQoJCQkoIGlzUGFyZW50T2YJP21pZGRsZXBl cnNvbgk/cGVyc29uCQkpDQoJCSkNCgkpDQoNCgkoICZsdDs9ICggaXNHcmFu ZG1vdGhlck9mID9ncmFuZG1vdGhlciA/cGVyc29uICkgDQoJCSggYW5kIA0K CQkJKCBpc01vdGhlck9mIAk/Z3JhbmRtb3RoZXIJP21pZGRsZXBlcnNvbiAJ KQ0KCQkJKCBpc1BhcmVudE9mCT9taWRkbGVwZXJzb24JP3BlcnNvbgkJKQ0K CQkpDQoJKQ0KCSggJmx0Oz0gKCBpc0Jyb3RoZXJPZiA/YnJvdGhlciA/cGVy c29uICkgDQoJCSggYW5kIA0KCQkJKCBpc01hbGUgCT9icm90aGVyCQkpDQoJ CSAgICAoIGlzUGFyZW50T2YgP3BhcmVudCA/YnJvdGhlcikNCgkJICAgICgg aXNQYXJlbnRPZiA/cGFyZW50ID9wZXJzb24pDQoJCSAgICAoIC89ID9icm90 aGVyID9wZXJzb24gKQ0KCQkpDQoJKQ0KCSggJmx0Oz0gKCBpc0NoaWxkT2Yg P3BlcnNvbiA/Y2hpbGQgKSANCgkJKCBhbmQgDQoJCQkoIGlzUGFyZW50T2YJ P3BlcnNvbiA/Y2hpbGQJKQ0KCQkpDQoJKQ0KCQ0KCSggJmx0Oz0gKCBwZXJz b25EYXRhID9wZXJzb24gP2ZuYW1lID9sbmFtZSA/aW1hZ2V1cmwgP2JpcnRo ZGF5KSANCgkJKGFuZAkNCgkJCSh8aHR0cDovL3d3d3JhZGlnLmluLnR1bS5k ZS9vbnRvbG9neS9wZW9wbGUvcGVvcGxlMi5vd2wjfDo6fGhhc0ZpcnN0bmFt ZXwgP3BlcnNvbiA/Zm5hbWUpDQoJCQkofGh0dHA6Ly93d3dyYWRpZy5pbi50 dW0uZGUvb250b2xvZ3kvcGVvcGxlL3Blb3BsZTIub3dsI3w6OnxoYXNMYXN0 bmFtZXwgID9wZXJzb24gP2xuYW1lKQ0KCQkJKHxodHRwOi8vd3d3cmFkaWcu aW4udHVtLmRlL29udG9sb2d5L3Blb3BsZS9wZW9wbGUyLm93bCN8Ojp8aGFz UGljdHVyZXwgICA/cGVyc29uID9pbWFnZXVybCkNCgkJCSh8aHR0cDovL3d3 d3JhZGlnLmluLnR1bS5kZS9vbnRvbG9neS9wZW9wbGUvcGVvcGxlMi5vd2wj fDo6fHdhc0Jvcm5PbnwgICAgP3BlcnNvbiA/YmlydGhkYXkpDQoJCQkNCgkJ KQ0KCSkNCgkNCgkoICZsdDs9ICggZ2V0TW90aGVyRGF0YQ0KCQkJP3BlcnNv biA/cGVyc29uZm5hbWUgP3BlcnNvbmxuYW1lID9wZXJzb25pbWFnZXVybCA/ cGVyc29uYmlydGhkYXkgDQoJCQk/bW90aGVyID9yZWxhdGl2ZWZuYW1lID9y ZWxhdGl2ZWxuYW1lID9yZWxhdGl2ZWltYWdldXJsID9yZWxhdGl2ZWJpcnRo ZGF5ICkJCQ0KCQkJKHBlcnNvbkRhdGEgP3BlcnNvbiA/cGVyc29uZm5hbWUg P3BlcnNvbmxuYW1lID9wZXJzb25pbWFnZXVybCA/cGVyc29uYmlydGhkYXkg KQ0KCQkJKGlzTW90aGVyT2YgID9tb3RoZXIgP3BlcnNvbikNCgkJCShwZXJz b25EYXRhID9tb3RoZXIgP3JlbGF0aXZlZm5hbWUgP3JlbGF0aXZlbG5hbWUg P3JlbGF0aXZlaW1hZ2V1cmwgP3JlbGF0aXZlYmlydGhkYXkpDQoJKQ0KCQ0K CSggJmx0Oz0gKCBnZXRGYXRoZXJEYXRhDQoJCQk/cGVyc29uID9wZXJzb25m bmFtZSA/cGVyc29ubG5hbWUgP3BlcnNvbmltYWdldXJsID9wZXJzb25iaXJ0 aGRheSANCgkJCT9mYXRoZXIgP3JlbGF0aXZlZm5hbWUgP3JlbGF0aXZlbG5h bWUgP3JlbGF0aXZlaW1hZ2V1cmwgP3JlbGF0aXZlYmlydGhkYXkgKQkJDQoJ CQkocGVyc29uRGF0YSA/cGVyc29uID9wZXJzb25mbmFtZSA/cGVyc29ubG5h bWUgP3BlcnNvbmltYWdldXJsID9wZXJzb25iaXJ0aGRheSApDQoJCQkoaXNG YXRoZXJPZiAgP2ZhdGhlciA/cGVyc29uKQ0KCQkJKHBlcnNvbkRhdGEgP2Zh dGhlciA/cmVsYXRpdmVmbmFtZSA/cmVsYXRpdmVsbmFtZSA/cmVsYXRpdmVp bWFnZXVybCA/cmVsYXRpdmViaXJ0aGRheSkNCgkpDQoJDQoJKCAmbHQ7PSAo IGdldEdyYW5kRmF0aGVyRGF0YQ0KCQkJP3BlcnNvbiA/cGVyc29uZm5hbWUg P3BlcnNvbmxuYW1lID9wZXJzb25pbWFnZXVybCA/cGVyc29uYmlydGhkYXkg DQoJCQk/Z3JhbmRmYXRoZXIgP3JlbGF0aXZlZm5hbWUgP3JlbGF0aXZlbG5h bWUgP3JlbGF0aXZlaW1hZ2V1cmwgP3JlbGF0aXZlYmlydGhkYXkgKQkJDQoJ CQkocGVyc29uRGF0YSA/cGVyc29uID9wZXJzb25mbmFtZSA/cGVyc29ubG5h bWUgP3BlcnNvbmltYWdldXJsID9wZXJzb25iaXJ0aGRheSApDQoJCQkoaXNH cmFuZGZhdGhlck9mICA/Z3JhbmRmYXRoZXIgP3BlcnNvbikNCgkJCShwZXJz b25EYXRhID9ncmFuZGZhdGhlciA/cmVsYXRpdmVmbmFtZSA/cmVsYXRpdmVs bmFtZSA/cmVsYXRpdmVpbWFnZXVybCA/cmVsYXRpdmViaXJ0aGRheSkNCgkp DQoJDQoJKCAmbHQ7PSAoIGdldEdyYW5kTW90aGVyRGF0YQ0KCQkJP3BlcnNv biA/cGVyc29uZm5hbWUgP3BlcnNvbmxuYW1lID9wZXJzb25pbWFnZXVybCA/ cGVyc29uYmlydGhkYXkgDQoJCQk/Z3JhbmRtb3RoZXIgP3JlbGF0aXZlZm5h bWUgP3JlbGF0aXZlbG5hbWUgP3JlbGF0aXZlaW1hZ2V1cmwgP3JlbGF0aXZl YmlydGhkYXkgKQkJDQoJCQkocGVyc29uRGF0YSA/cGVyc29uID9wZXJzb25m bmFtZSA/cGVyc29ubG5hbWUgP3BlcnNvbmltYWdldXJsID9wZXJzb25iaXJ0 aGRheSApDQoJCQkoaXNHcmFuZG1vdGhlck9mICA/Z3JhbmRtb3RoZXIgP3Bl cnNvbikNCgkJCShwZXJzb25EYXRhID9ncmFuZG1vdGhlciA/cmVsYXRpdmVm bmFtZSA/cmVsYXRpdmVsbmFtZSA/cmVsYXRpdmVpbWFnZXVybCA/cmVsYXRp dmViaXJ0aGRheSkNCgkpDQoJDQoJKCAmbHQ7PSAoIGdldEJyb3RoZXJEYXRh DQoJCQk/cGVyc29uID9wZXJzb25mbmFtZSA/cGVyc29ubG5hbWUgP3BlcnNv bmltYWdldXJsID9wZXJzb25iaXJ0aGRheSANCgkJCT9icm90aGVyID9yZWxh dGl2ZWZuYW1lID9yZWxhdGl2ZWxuYW1lID9yZWxhdGl2ZWltYWdldXJsID9y ZWxhdGl2ZWJpcnRoZGF5ICkJCQ0KCQkJKHBlcnNvbkRhdGEgP3BlcnNvbiA/ cGVyc29uZm5hbWUgP3BlcnNvbmxuYW1lID9wZXJzb25pbWFnZXVybCA/cGVy c29uYmlydGhkYXkgKQ0KCQkJKGlzQnJvdGhlck9mICA/YnJvdGhlciA/cGVy c29uKQ0KCQkJKHBlcnNvbkRhdGEgP2Jyb3RoZXIgP3JlbGF0aXZlZm5hbWUg P3JlbGF0aXZlbG5hbWUgP3JlbGF0aXZlaW1hZ2V1cmwgP3JlbGF0aXZlYmly dGhkYXkpDQoJKQ0KCSggJmx0Oz0gKCBnZXRDaGlsZERhdGENCgkJCT9wZXJz b24gP3BlcnNvbmZuYW1lID9wZXJzb25sbmFtZSA/cGVyc29uaW1hZ2V1cmwg P3BlcnNvbmJpcnRoZGF5IA0KCQkJP2NoaWxkID9yZWxhdGl2ZWZuYW1lID9y ZWxhdGl2ZWxuYW1lID9yZWxhdGl2ZWltYWdldXJsID9yZWxhdGl2ZWJpcnRo ZGF5ICkJCQ0KCQkJKHBlcnNvbkRhdGEgP3BlcnNvbiA/cGVyc29uZm5hbWUg P3BlcnNvbmxuYW1lID9wZXJzb25pbWFnZXVybCA/cGVyc29uYmlydGhkYXkg KQ0KCQkJKGlzQ2hpbGRPZiAgP3BlcnNvbiA/Y2hpbGQpDQoJCQkocGVyc29u RGF0YSA/Y2hpbGQgP3JlbGF0aXZlZm5hbWUgP3JlbGF0aXZlbG5hbWUgP3Jl bGF0aXZlaW1hZ2V1cmwgP3JlbGF0aXZlYmlydGhkYXkpDQoJKQ0KCQ0KCTwh LS0NCgkoICZsdDs9ICggZ2V0QWxsUmVsYXRpb25zaGlwcyANCgkJCT9wZXJz b24gP3BlcnNvbmZuYW1lID9wZXJzb25sbmFtZSA/cGVyc29uaW1hZ2V1cmwg P3BlcnNvbmJpcnRoZGF5IA0KCQkJP3JlbGF0aXZlID9yZWxhdGl2ZWZuYW1l ID9yZWxhdGl2ZWxuYW1lID9yZWxhdGl2ZWltYWdldXJsID9yZWxhdGl2ZWJp cnRoZGF5ICkJCQ0KCQkJKHBlcnNvbkRhdGEgP3BlcnNvbiA/cGVyc29uZm5h bWUgP3BlcnNvbmxuYW1lID9wZXJzb25pbWFnZXVybCA/cGVyc29uYmlydGhk YXkgKQ0KCQkJKG9yDQoJCQkJKCBpc01vdGhlck9mICA/cmVsYXRpdmUgP3Bl cnNvbikNCgkJCQkoIGlzRmF0aGVyT2YgID9yZWxhdGl2ZSA/cGVyc29uKQ0K CQkJCSggaXNHcmFuZG1vdGhlck9mID9yZWxhdGl2ZSA/cGVyc29uKQ0KCQkJ CSggaXNHcmFuZGZhdGhlck9mID9yZWxhdGl2ZSA/cGVyc29uKQ0KCQkJCSgg aXNDaGlsZE9mICA/cGVyc29uID9yZWxhdGl2ZSkNCgkJCSkNCgkJCShwZXJz b25EYXRhID9yZWxhdGl2ZSA/cmVsYXRpdmVmbmFtZSA/cmVsYXRpdmVsbmFt ZSA/cmVsYXRpdmVpbWFnZXVybCA/cmVsYXRpdmViaXJ0aGRheSkJDQoJKQ0K CS0tPg0KCQ0KCQ0KDQoNCg0KDQoNCiAgICA8L293bC1xbDpLSUY+DQogPC9v d2wtcWw6cHJlbWlzZT4NCg0KDQoNCgk8b3dsLXFsOnF1ZXJ5UGF0dGVybj4N Cg0KPG93bC1xbDpLSUY+DQoJICAgICggZ2V0R3JhbmRNb3RoZXJEYXRhIHxo dHRwOi8vd3d3cmFkaWcuaW4udHVtLmRlL29udG9sb2d5L3Blb3BsZS9yb3lh bHMyLm93bCN8Ojp8PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IiRpZCIvPnwgP3Bl cnNvbmZuYW1lID9wZXJzb25sbmFtZSA/cGVyc29uaW1hZ2V1cmwgP3BlcnNv bmJpcnRoZGF5ID9ncmFuZG1vdGhlciA/cmVsYXRpdmVmbmFtZSA/cmVsYXRp dmVsbmFtZSA/cmVsYXRpdmVpbWFnZXVybCA/cmVsYXRpdmViaXJ0aGRheSAp CQkNCgkgICAgKCBnZXRHcmFuZEZhdGhlckRhdGEgfGh0dHA6Ly93d3dyYWRp Zy5pbi50dW0uZGUvb250b2xvZ3kvcGVvcGxlL3JveWFsczIub3dsI3w6Onw8 eHNsOnZhbHVlLW9mIHNlbGVjdD0iJGlkIi8+fCA/cGVyc29uZm5hbWUgP3Bl cnNvbmxuYW1lID9wZXJzb25pbWFnZXVybCA/cGVyc29uYmlydGhkYXkgP2dy YW5kZmF0aGVyID9yZWxhdGl2ZWZuYW1lID9yZWxhdGl2ZWxuYW1lID9yZWxh dGl2ZWltYWdldXJsID9yZWxhdGl2ZWJpcnRoZGF5ICkNCiAgICAgICAgICAg ICggZ2V0RmF0aGVyRGF0YXxodHRwOi8vd3d3cmFkaWcuaW4udHVtLmRlL29u dG9sb2d5L3Blb3BsZS9yb3lhbHMyLm93bCN8Ojp8PHhzbDp2YWx1ZS1vZiBz ZWxlY3Q9IiRpZCIvPnwgP3BlcnNvbmZuYW1lID9wZXJzb25sbmFtZSA/cGVy c29uaW1hZ2V1cmwgP3BlcnNvbmJpcnRoZGF5ID9mYXRoZXIgP3JlbGF0aXZl Zm5hbWUgP3JlbGF0aXZlbG5hbWUgP3JlbGF0aXZlaW1hZ2V1cmwgP3JlbGF0 aXZlYmlydGhkYXkgKQkJCQkJCQkJDQoJICAgICggZ2V0TW90aGVyRGF0YSB8 aHR0cDovL3d3d3JhZGlnLmluLnR1bS5kZS9vbnRvbG9neS9wZW9wbGUvcm95 YWxzMi5vd2wjfDo6fDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkaWQiLz58ID9w ZXJzb25mbmFtZSA/cGVyc29ubG5hbWUgP3BlcnNvbmltYWdldXJsID9wZXJz b25iaXJ0aGRheSA/bW90aGVyID9yZWxhdGl2ZWZuYW1lID9yZWxhdGl2ZWxu YW1lID9yZWxhdGl2ZWltYWdldXJsID9yZWxhdGl2ZWJpcnRoZGF5ICkNCiAg ICAgICAgICAgICggZ2V0QnJvdGhlckRhdGEgfGh0dHA6Ly93d3dyYWRpZy5p bi50dW0uZGUvb250b2xvZ3kvcGVvcGxlL3JveWFsczIub3dsI3w6Onw8eHNs OnZhbHVlLW9mIHNlbGVjdD0iJGlkIi8+fCA/cGVyc29uZm5hbWUgP3BlcnNv bmxuYW1lID9wZXJzb25pbWFnZXVybCA/cGVyc29uYmlydGhkYXkgP2Jyb3Ro ZXIgP3JlbGF0aXZlZm5hbWUgP3JlbGF0aXZlbG5hbWUgP3JlbGF0aXZlaW1h Z2V1cmwgP3JlbGF0aXZlYmlydGhkYXkgKQ0KICAgICAgICAgICAgKCBnZXRD aGlsZERhdGEgfGh0dHA6Ly93d3dyYWRpZy5pbi50dW0uZGUvb250b2xvZ3kv cGVvcGxlL3JveWFsczIub3dsI3w6Onw8eHNsOnZhbHVlLW9mIHNlbGVjdD0i JGlkIi8+fCA/cGVyc29uZm5hbWUgP3BlcnNvbmxuYW1lID9wZXJzb25pbWFn ZXVybCA/cGVyc29uYmlydGhkYXkgP2NoaWxkID9yZWxhdGl2ZWZuYW1lID9y ZWxhdGl2ZWxuYW1lID9yZWxhdGl2ZWltYWdldXJsID9yZWxhdGl2ZWJpcnRo ZGF5ICkNCjwvb3dsLXFsOktJRj4NCg0KDQoNCiAgICAgIDwvb3dsLXFsOnF1 ZXJ5UGF0dGVybj4NCg0KCTxvd2wtcWw6bXVzdEJpbmRWYXJzPg0KCTwvb3ds LXFsOm11c3RCaW5kVmFycz4JDQoJDQoJPG93bC1xbDptYXlCaW5kVmFycz4N CgkJPHZhcjpyZWxhdGl2ZS8+DQoJCTx2YXI6cmVsYXRpdmVmbmFtZS8+DQoJ CTx2YXI6cmVsYXRpdmVsbmFtZS8+DQoJCTx2YXI6cmVsYXRpdmVpbWFnZXVy bC8+DQoJCTx2YXI6cmVsYXRpdmViaXJ0aGRheS8+DQoJCTx2YXI6cGVyc29u Lz4NCgkJPHZhcjpwZXJzb25mbmFtZS8+DQoJCTx2YXI6cGVyc29ubG5hbWUv Pg0KCQk8dmFyOnBlcnNvbmltYWdldXJsLz4NCgkJPHZhcjpwZXJzb25iaXJ0 aGRheS8+DQoJCTx2YXI6bW90aGVyLz4NCgkJPHZhcjpmYXRoZXIvPg0KCQk8 dmFyOmdyYW5kbW90aGVyLz4NCgkJPHZhcjpncmFuZGZhdGhlci8+DQoJCTx2 YXI6YnJvdGhlci8+DQoJCTx2YXI6Y2hpbGQvPg0KCTwvb3dsLXFsOm1heUJp bmRWYXJzPg0KDQo8b3dsLXFsOmFuc3dlcktCUGF0dGVybj4NCjxvd2wtcWw6 a2JSZWYgcmRmOnJlc291cmNlPSJodHRwOi8vd3d3cmFkaWcuaW4udHVtLmRl L29udG9sb2d5L3Blb3BsZS9yb3lhbHMyLm93bCIvPg0KPC9vd2wtcWw6YW5z d2VyS0JQYXR0ZXJuPg0KPC9vd2wtcWw6cXVlcnk+DQoNCg0KDQoNCjwvU09B UC1FTlY6Qm9keT4NCjwvU09BUC1FTlY6RW52ZWxvcGU+DQo8L293cWw6T1dM UUw+DQoNCg0KICA8L3hzbDp0ZW1wbGF0ZT4NCjwveHNsOnN0eWxlc2hlZXQ+ DQo= --Herd_of_Hippopotamuses_146_000 Content-Type: APPLICATION/octet-stream; name="RDQLTransformer.java"; x-unix-mode=0644 Content-Transfer-Encoding: BASE64 Content-Description: RDQLTransformer.java Content-MD5: ATZBqyO395gQN9pqP+8e7A== aW1wb3J0IGNvbS5ocC5ocGwuamVuYS5vbnRvbG9neS4qOw0KaW1wb3J0IGNv bS5ocC5ocGwuamVuYS5yZGYubW9kZWwuKjsNCmltcG9ydCBjb20uaHAuaHBs LmplbmEucmRxbC4qOw0KDQppbXBvcnQgb3JnLmFwYWNoZS5jb2Nvb24uZW52 aXJvbm1lbnQuT2JqZWN0TW9kZWxIZWxwZXI7DQppbXBvcnQgb3JnLmFwYWNo ZS5jb2Nvb24uZW52aXJvbm1lbnQuUmVxdWVzdDsNCmltcG9ydCBqYXZhLnV0 aWwuRW51bWVyYXRpb247DQoNCg0KLy9pbXBvcnQgb3JnLmFwYWNoZS5jb2Nv b24ueG1sLkFic3RyYWN0WE1MUGlwZTsNCmltcG9ydCBvcmcuYXBhY2hlLmNv Y29vbi50cmFuc2Zvcm1hdGlvbi5BYnN0cmFjdFRyYW5zZm9ybWVyOw0KaW1w b3J0IG9yZy5hcGFjaGUuY29jb29uLmVudmlyb25tZW50LlNvdXJjZVJlc29s dmVyOw0KaW1wb3J0IG9yZy5hcGFjaGUuY29jb29uLlByb2Nlc3NpbmdFeGNl cHRpb247DQppbXBvcnQgb3JnLmFwYWNoZS5hdmFsb24uZnJhbWV3b3JrLnBh cmFtZXRlcnMuUGFyYW1ldGVyczsNCmltcG9ydCBvcmcueG1sLnNheC5TQVhF eGNlcHRpb247DQppbXBvcnQgb3JnLnhtbC5zYXguQXR0cmlidXRlczsNCmlt cG9ydCBvcmcueG1sLnNheC5oZWxwZXJzLkF0dHJpYnV0ZXNJbXBsOw0KDQpp bXBvcnQgamF2YS51dGlsLio7DQppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlv bjsNCg0KLyoqDQogKg0KICogQ2xhc3MgUkRRTFRyYW5zZm9ybWVyDQogKg0K ICogVGhpcyB0cmFuc2Zvcm1lciBleHBlY3RzIGFuIFhNTCBkb2N1bWVudCBp bmNsdWRpbmcgZWxlbWVudHMgb2YgaW50ZXJlc3QgaW4NCiAqIHRoZSBmb2xs b3dpbmcgc3RydWN0dXJlOg0KICoNCiAqIDxyZHFsOlJEUUwgeG1sbnM6cmRx bCA9ICJodHRwOi8vYXBhY2hlLm9yZy9jb2Nvb24vcmRxbC8yLjEiPg0KICog IDxyZHFsOm1vZGVsbD4NCiAqICAgICAgPHJkcWw6b250b2xvZ3k+bXlPbnRv bG9neTwvcmRxbDpvbnRvbG9neT4NCiAqICAgICAgPHJkcWw6aW5zdGFuY2Vz Pm15SW5zdGFuY2VzPC9yZHFsOmluc3RhbmNlcz4NCiAqICA8L3JkcWw6bW9k ZWxsPg0KICogIDxyZHFsOnF1ZXJ5Pg0KICogICAgIDxyZHFsOnNlbGVjdD4N CiAqICAgICAgICAgIDxyZHFsOnBhcmFtPm15UGFyYW1fMTwvcmRxbDpwYXJh bT4NCiAqICAgICAgICAgIC4uLi4uLi4NCiAqICAgICAgICAgIDxyZHFsOnBh cmFtPm15UGFyYW1fbjwvcmRxbDpwYXJhbT4NCiAqICAgICAgPC9yZHFsOnNl bGVjdD4NCiAqICAgICAgPHJkcWw6d2hlcmU+DQogKiAgICAgICAgICA8cmRx bDp0cmlwbGU+DQogKiAgICAgICAgICAgICAgPHJkcWw6c3ViamVjdD5hIHN1 YmplY3Q8L3JkcWw6c3ViamVjdD4NCiAqICAgICAgICAgICAgICA8cmRxbDpw cmVkaWNhdGU+YSBwcmVkaWNhdGU8L3JkcWw6cHJlZGljYXRlPg0KICogICAg ICAgICAgICAgIDxyZHFsOm9iamVjdD5hbiBvYmplY3Q8L3JkcWw6b2JqZWN0 Pg0KICogICAgICAgICAgPC9yZHFsOnRyaXBsZT4NCiAqICAgICAgICAgICAu Li4uLi4uLg0KICogICAgICAgICAgPHJkcWw6dHJpcGxlPg0KICogICAgICAg ICAgICAgIDxyZHFsOnN1YmplY3Q+YW5vdGhlciBzdWJqZWN0PC9yZHFsOnN1 YmplY3Q+DQogKiAgICAgICAgICAgICAgPHJkcWw6cHJlZGljYXRlPmFub3Ro ZXIgcHJlZGljYXRlPC9yZHFsOnByZWRpY2F0ZT4NCiAqICAgICAgICAgICAg ICA8cmRxbDpvYmplY3Q+YW5vdGhlciBvYmplY3Q8L3JkcWw6b2JqZWN0Pg0K ICogICAgICAgICAgPC9yZHFsOnRyaXBsZT4NCiAqICAgICAgPC9yZHFsOndo ZXJlPg0KICogICAgICA8cmRxbDphbmQ+DQogKiAgICAgICAgICA8cmRxbDpv cGVyYW5kMT5teSBmaXJzdCBvcGVyYW5kPC9yZHFsOm9wZXJhbmQxPg0KICog ICAgICAgICAgPHJkcWw6b3BlcmF0b3I+bXkgb3BlcmF0b3I8L3JkcWw6b3Bl cmF0b3I+DQogKiAgICAgICAgICA8cmRxbDpvcGVyYW5kMj5teSBzZWNvbmQg b3BlcmFuZDwvcmRxbDpvcGVyYW5kMj4NCiAqICAgICAgPC9yZHFsOmFuZD4N CiAqICAgICAgIC4uLi4uLg0KICogICAgICA8cmRxbDphbmQ+DQogKiAgICAg ICAgICA8cmRxbDpvcGVyYW5kMT5teSBmaXJzdCBvcGVyYW5kPC9yZHFsOm9w ZXJhbmQxPg0KICogICAgICAgICAgPHJkcWw6b3BlcmF0b3I+bXkgb3BlcmF0 b3I8L3JkcWw6b3BlcmF0b3I+DQogKiAgICAgICAgICA8cmRxbDpvcGVyYW5k Mj5teSBzZWNvbmQgb3BlcmFuZDwvcmRxbDpvcGVyYW5kMj4NCiAqICAgICAg PC9yZHFsOmFuZD4NCiAqICAgICAgPHJkcWw6dXNpbmcvPg0KICogIDwvcmRx bDpxdWVyeT4NCiAqIDwvcmRxbDpSRFFMPg0KICoNCiAqDQogKiBhbGwgb3Ro ZXIgZWxlbWVudHMgd2lsbCBiZSByZXR1cm5lZCB1bm1vZGlmaWVkDQogKg0K ICogPHA+VGl0bGU6IDwvcD4NCiAqIDxwPkRlc2NyaXB0aW9uOiA8L3A+DQog KiA8cD5Db3B5cmlnaHQ6IENvcHlyaWdodCAoYykgMjAwNDwvcD4NCiAqIDxw PkNvbXBhbnk6IDwvcD4NCiAqDQogKiBAYXV0aG9yIENhbiDWbmRlcg0KICog QGF1dGhvciBIYWxndXJ0IE11c3RhZmEgQWxpDQogKg0KICogQHZlcnNpb24g MS4wDQogKg0KICovDQoNCg0KcHVibGljIGNsYXNzIFJEUUxUcmFuc2Zvcm1l ciBleHRlbmRzIEFic3RyYWN0VHJhbnNmb3JtZXIgew0KDQogICAgLy9DbGFz c1BhdGggUHJvcGVydHkgc2V0emVuIFN5c3RlbS5nZXRQcm9wZXJ0aWVzKCku cHV0Li4uDQogICAgcHJpdmF0ZSBTdHJpbmcgbmFtZXNwYWNlOw0KICAgIGlu dCBjb3VudDsNCiAgICANCiAgICBib29sZWFuIHJlYWRPcGVyYW5kMTsNCiAg ICBib29sZWFuIHJlYWRPcGVyYW5kMjsNCiAgICBib29sZWFuIHJlYWRPcGVy YXRvcjsNCiAgICBib29sZWFuIHN0YXJ0Ow0KICAgIGJvb2xlYW4gcmVhZE1v ZGVsOw0KICAgIGJvb2xlYW4gcmVhZFF1ZXJ5Ow0KICAgIGJvb2xlYW4gcmVh ZE9udG9sb2d5Ow0KICAgIGJvb2xlYW4gcmVhZEluc3RhbmNlczsNCiAgICBi b29sZWFuIHJlYWRTZWxlY3Q7DQogICAgYm9vbGVhbiByZWFkUGFyYW07DQog ICAgYm9vbGVhbiByZWFkV2hlcmU7DQogICAgYm9vbGVhbiByZWFkVHJpcGxl Ow0KICAgIGJvb2xlYW4gcmVhZFN1YmplY3Q7DQogICAgYm9vbGVhbiByZWFk UHJlZGljYXRlOw0KICAgIGJvb2xlYW4gcmVhZE9iamVjdDsNCiAgICBib29s ZWFuIHJlYWRBbmQ7DQogICAgYm9vbGVhbiByZWFkVXNpbmc7DQogICAgDQog ICAgRW51bWVyYXRpb24gcGFyYW1OYW1lczsgICAgDQogICAgUmVxdWVzdCBy ZXF1ZXN0Ow0KICAgIFN0cmluZyBbXSBwYXJhbWV0ZXJzOw0KICAgIFN0cmlu ZyBzczsNCiAgICBTdHJpbmdCdWZmZXIgcXVlcnk7DQogICAgU3RyaW5nQnVm ZmVyIG9udG9sb2d5Ow0KICAgIFN0cmluZ0J1ZmZlciBpbnN0YW5jZXM7DQog ICAgU3RyaW5nQnVmZmVyIHBhcmFtOw0KICAgIFN0cmluZyBzdWJqZWN0Ow0K ICAgIFN0cmluZyBwcmVkaWNhdGU7DQogICAgU3RyaW5nIG9iamVjdDsNCiAg ICBTdHJpbmdCdWZmZXIgYW5kOw0KICAgIFN0cmluZ0J1ZmZlciB1c2luZzsN CiAgICBTdHJpbmcgb3BlcmFuZDE7DQogICAgU3RyaW5nIG9wZXJhbmQyOw0K ICAgIFN0cmluZyBvcGVyYXRvcjsNCg0KICAgIFZlY3RvciBwYXJhbXM7DQog ICAgVmVjdG9yIHRyaXBsZXM7DQogICAgVmVjdG9yIGFuZHM7DQogICAgVmVj dG9yIHJlcVBhcmFtczsNCiAgICBWZWN0b3IgcHVyZTsNCg0KDQogICAgLyoq DQogICAgICogQ29uc3RydWN0b3INCiAgICAgKi8NCiAgICBwdWJsaWMgUkRR TFRyYW5zZm9ybWVyICgpIHsNCg0KICAgICAgICBuYW1lc3BhY2UgPSAiaHR0 cDovL2FwYWNoZS5vcmcvY29jb29uL3JkcWwvMi4xIjsNCiAgICAgICAgDQog ICAgICAgIHN0YXJ0ICAgICAgICAgPSBmYWxzZTsNCiAgICAgICAgcmVhZE1v ZGVsICAgICA9IGZhbHNlOw0KICAgICAgICByZWFkUXVlcnkgICAgID0gZmFs c2U7DQogICAgICAgIHJlYWRPbnRvbG9neSAgPSBmYWxzZTsNCiAgICAgICAg cmVhZEluc3RhbmNlcyA9IGZhbHNlOw0KICAgICAgICByZWFkU2VsZWN0ICAg ID0gZmFsc2U7DQogICAgICAgIHJlYWRQYXJhbSAgICAgPSBmYWxzZTsNCiAg ICAgICAgcmVhZFdoZXJlICAgICA9IGZhbHNlOw0KICAgICAgICByZWFkVHJp cGxlICAgID0gZmFsc2U7DQogICAgICAgIHJlYWRTdWJqZWN0ICAgPSBmYWxz ZTsNCiAgICAgICAgcmVhZFByZWRpY2F0ZSA9IGZhbHNlOw0KICAgICAgICBy ZWFkT2JqZWN0ICAgID0gZmFsc2U7DQogICAgICAgIHJlYWRBbmQgICAgICAg PSBmYWxzZTsNCiAgICAgICAgcmVhZFVzaW5nICAgICA9IGZhbHNlOw0KICAg ICAgICByZWFkT3BlcmFuZDEgID0gZmFsc2U7DQogICAgICAgIHJlYWRPcGVy YW5kMiAgPSBmYWxzZTsNCiAgICAgICAgcmVhZE9wZXJhdG9yICA9IGZhbHNl Ow0KDQogICAgICAgIHF1ZXJ5ICAgICA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7 DQogICAgICAgIG9udG9sb2d5ICA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7DQog ICAgICAgIGluc3RhbmNlcyA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7DQogICAg ICAgIHBhcmFtICAgICA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7DQogICAgICAg IC8qc3ViamVjdCAgID0gbmV3IFN0cmluZ0J1ZmZlciAoKTsNCiAgICAgICAg cHJlZGljYXRlID0gbmV3IFN0cmluZ0J1ZmZlciAoKTsNCiAgICAgICAgb2Jq ZWN0ICAgID0gbmV3IFN0cmluZ0J1ZmZlciAoKTsqLw0KICAgICAgICBhbmQg ICAgICAgPSBuZXcgU3RyaW5nQnVmZmVyICgpOw0KICAgICAgICB1c2luZyAg ICAgPSBuZXcgU3RyaW5nQnVmZmVyICgpOw0KICAgICAgICAvL29wZXJhbmQx ICA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7DQogICAgICAgIC8vb3BlcmFuZDIg ID0gbmV3IFN0cmluZ0J1ZmZlciAoKTsNCiAgICAgICAgLy9vcGVyYXRvciAg PSBuZXcgU3RyaW5nQnVmZmVyICgpOw0KDQogICAgICAgIHBhcmFtcyAgICA9 IG5ldyBWZWN0b3IgKCk7DQogICAgICAgIHRyaXBsZXMgICA9IG5ldyBWZWN0 b3IgKCk7DQogICAgICAgIGFuZHMgICAgICA9IG5ldyBWZWN0b3IgKCk7DQog ICAgICAgIHB1cmUgICAgICA9IG5ldyBWZWN0b3IgKCk7DQogICAgICAgIHJl cVBhcmFtcyA9IG5ldyBWZWN0b3IgKCk7DQoNCiAgICAgICAgU3lzdGVtLm91 dC5wcmludGxuICgiU3RhcnRpbmcuLi4iKTsNCiAgICB9DQoNCg0KICAgIC8q Kg0KICAgICAqDQogICAgICogbm8gbmVlZCB0byBiZSBpbXBsZW1lbnRlZCBm b3IgdGhlIFJEUUxUcmFtc2Zvcm1lcjsNCiAgICAgKiBpbmhlcml0ZWQgZnJv bSBvcmcuYXBhY2hlLmNvY29vbi50cmFuc2Zvcm1hdGlvbi5BYnN0cmFjdFRy YW5zZm9ybWVyDQogICAgICoNCiAgICAgKiBAcGFyYW0gcmVzb2x2ZXIgU291 cmNlUmVzb2x2ZXINCiAgICAgKiBAcGFyYW0gb2JqZWN0TW9kZWwgTWFwDQog ICAgICogQHBhcmFtIHNyYyBTdHJpbmcNCiAgICAgKiBAcGFyYW0gcGFyIFBh cmFtZXRlcnMNCiAgICAgKiBAdGhyb3dzIFByb2Nlc3NpbmdFeGNlcHRpb24N CiAgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbg0KICAgICAqIEB0aHJvd3Mg SU9FeGNlcHRpb24NCiAgICAgKi8NCiAgICBwdWJsaWMgdm9pZCBzZXR1cCAo U291cmNlUmVzb2x2ZXIgcmVzb2x2ZXIsIE1hcCBvYmplY3RNb2RlbCwgU3Ry aW5nIHNyYywgUGFyYW1ldGVycyBwYXIpIHRocm93cyBQcm9jZXNzaW5nRXhj ZXB0aW9uLCBTQVhFeGNlcHRpb24sIElPRXhjZXB0aW9uIHsNCiAgICAgICAg aWYgKHNyYyA9PSBudWxsKXsNCiAgICAgICAgCVN5c3RlbS5vdXQucHJpbnRs bigiZmlsZSAiICsgcmVzb2x2ZXIucmVzb2x2ZVVSSShzcmMpLmdldFVSSSgp ICsgIiBub3QgZm91bmQiKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIHsN CiAgICAgICAgCXNzID0gcmVzb2x2ZXIucmVzb2x2ZVVSSShzcmMpLmdldFVS SSgpOw0KICAgICAgICB9IA0KICAgICAgICB0cnkgew0KICAgICAgICBwYXJh bWV0ZXJzID0gcGFyLmdldE5hbWVzKCk7DQogICAgICAgIGZvciAoaW50IGk9 MDsgaTxwYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKXsNCiAgICAgICAgcGFyYW1l dGVycyBbaV0gPSByZXNvbHZlci5yZXNvbHZlVVJJKHBhci5nZXRQYXJhbWV0 ZXIocGFyYW1ldGVycyBbaV0pKS5nZXRVUkkoKTsNCiAgICAgICAgfQ0KICAg ICAgICANCiAgICAgICAgLy9zdXBlci5zZXR1cChyZXNvbHZlciwgb2JqZWN0 TW9kZWwsIHNyYywgcGFyKTsNCiAgICAgICAgcmVxdWVzdCA9IE9iamVjdE1v ZGVsSGVscGVyLmdldFJlcXVlc3Qob2JqZWN0TW9kZWwpOw0KICAgICAgICBw YXJhbU5hbWVzID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXJOYW1lcygpOw0KICAg ICAgICB3aGlsZSAocGFyYW1OYW1lcy5oYXNNb3JlRWxlbWVudHMoKSl7DQog ICAgICAgIAlTdHJpbmcgcyA9IHBhcmFtTmFtZXMubmV4dEVsZW1lbnQoKS50 b1N0cmluZygpOw0KICAgICAgICAJcmVxUGFyYW1zLmFkZEVsZW1lbnQocyk7 DQogICAgICAgIAlTeXN0ZW0ub3V0LnByaW50bG4ocyk7DQogICAgICAgIAlT eXN0ZW0ub3V0LnByaW50bG4ocmVxdWVzdC5nZXRQYXJhbWV0ZXIocykpOw0K ICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgY2F0Y2ggKEV4Y2VwdGlv biBlKSB7DQogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCJBbiBF cnJvciBvY2N1cmVkIGR1cmluZyBQYXJhbWV0ZXIgaW5zdGFudGlhdGlvbiAi KTsNCiAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlICgpOw0KICAgICAg ICAgICAgcmVzZXQgKCk7DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQogICAg LyoqDQogICAgICoNCiAgICAgKiBQYXJzZXMgdGhlIGluY29taW5nIFNBWCBl dmVudHMuDQogICAgICogVGhlIFJEUUxUcmFuc2Zvcm1lciByZWFjdHMgb24g dGFncyB3aXRoIHRoZSBuYW1lc3BhY2UgKDx4bWxuczpyZHFsPSAiaHR0cDov L21hcmlhX3NoYXJhcG92YS5odG1sIj4pDQogICAgICoNCiAgICAgKiBAcGFy YW0gbmFtZXNwYWNlVVJJIFRoZSBuYW1lc3BhY2UNCiAgICAgKiBAcGFyYW0g bG9jYWxOYW1lIFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHRhZw0KICAgICAq IEBwYXJhbSBxTmFtZSBUaGUgcXVhbGlmaWVkIG5hbWUNCiAgICAgKiBAcGFy YW0gYXR0cmlidXRlcyBUaGUgYXR0cmlidXRlcyBvZiB0aGUgY3VycmVudCB0 YWcNCiAgICAgKiBAdGhyb3dzIFNBWEV4Y2VwdGlvbg0KICAgICAqLw0KICAg IHB1YmxpYyB2b2lkIHN0YXJ0RWxlbWVudCAoU3RyaW5nIG5hbWVzcGFjZVVS SSwgU3RyaW5nIGxvY2FsTmFtZSwgU3RyaW5nIHFOYW1lLCBBdHRyaWJ1dGVz IGF0dHJpYnV0ZXMpIHRocm93cyBTQVhFeGNlcHRpb24gew0KDQogICAgICAg IC8vcmVhY3Qgb24gdGhlIGZvbGxvd2luZyB0YWdzIG9mIGludGVyZXN0Li4u DQogICAgICAgIGlmIChuYW1lc3BhY2VVUkkuZXF1YWxzIChuYW1lc3BhY2Up ICYmIGxvY2FsTmFtZS5lcXVhbHMgKCJSRFFMIikpIHsNCiAgICAgICAgICAg IHN0YXJ0ID0gdHJ1ZTsNCiAgICAgICAgfQ0KDQoNCg0KICAgICAgICBlbHNl IGlmIChuYW1lc3BhY2VVUkkuZXF1YWxzIChuYW1lc3BhY2UpICYmIGxvY2Fs TmFtZS5lcXVhbHMgKCJxdWVyeSIpKSB7DQogICAgICAgICAgICByZWFkUXVl cnkgPSB0cnVlOw0KICAgICAgICB9DQoNCg0KICAgICAgICBlbHNlIGlmIChu YW1lc3BhY2VVUkkuZXF1YWxzIChuYW1lc3BhY2UpICYmIGxvY2FsTmFtZS5l cXVhbHMgKCJzZWxlY3QiKSAmJiByZWFkUXVlcnkpIHsNCiAgICAgICAgICAg IHJlYWRTZWxlY3QgPSB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgZWxz ZSBpZiAobmFtZXNwYWNlVVJJLmVxdWFscyAobmFtZXNwYWNlKSAmJiBsb2Nh bE5hbWUuZXF1YWxzICgicGFyYW0iKSAmJiByZWFkU2VsZWN0KSB7DQogICAg ICAgICAgICByZWFkUGFyYW0gPSB0cnVlOw0KICAgICAgICB9DQoNCiAgICAg ICAgZWxzZSBpZiAobmFtZXNwYWNlVVJJLmVxdWFscyAobmFtZXNwYWNlKSAm JiBsb2NhbE5hbWUuZXF1YWxzICgid2hlcmUiKSAmJiByZWFkUXVlcnkpIHsN CiAgICAgICAgICAgIHJlYWRXaGVyZSA9IHRydWU7DQogICAgICAgIH0NCg0K ICAgICAgICBlbHNlIGlmIChuYW1lc3BhY2VVUkkuZXF1YWxzIChuYW1lc3Bh Y2UpICYmIGxvY2FsTmFtZS5lcXVhbHMgKCJ0cmlwbGUiKSAmJiByZWFkV2hl cmUpIHsNCiAgICAgICAgICAgIHJlYWRUcmlwbGUgPSB0cnVlOw0KICAgICAg ICAgICAgc3ViamVjdCA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUoInN1YmplY3Qi KTsNCiAgICAgICAgICAgIG9iamVjdCA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUo Im9iamVjdCIpOw0KICAgICAgICAgICAgcHJlZGljYXRlID0gYXR0cmlidXRl cy5nZXRWYWx1ZSgicHJlZGljYXRlIik7DQogICAgICAgICAgICANCiAgICAg ICAgfQ0KDQogICAgICAgLyogZWxzZSBpZiAobmFtZXNwYWNlVVJJLmVxdWFs cyAobmFtZXNwYWNlKSAmJiBsb2NhbE5hbWUuZXF1YWxzICgic3ViamVjdCIp ICYmIHJlYWRUcmlwbGUpIHsNCiAgICAgICAgICAgIHJlYWRTdWJqZWN0ID0g dHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGVsc2UgaWYgKG5hbWVzcGFj ZVVSSS5lcXVhbHMgKG5hbWVzcGFjZSkgJiYgbG9jYWxOYW1lLmVxdWFscyAo InByZWRpY2F0ZSIpICYmIHJlYWRUcmlwbGUpIHsNCiAgICAgICAgICAgIHJl YWRQcmVkaWNhdGUgPSB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgZWxz ZSBpZiAobmFtZXNwYWNlVVJJLmVxdWFscyAobmFtZXNwYWNlKSAmJiBsb2Nh bE5hbWUuZXF1YWxzICgib2JqZWN0IikgJiYgcmVhZFRyaXBsZSkgew0KICAg ICAgICAgICAgcmVhZE9iamVjdCA9IHRydWU7DQogICAgICAgIH0qLw0KDQog ICAgICAgIGVsc2UgaWYgKG5hbWVzcGFjZVVSSS5lcXVhbHMgKG5hbWVzcGFj ZSkgJiYgbG9jYWxOYW1lLmVxdWFscyAoImFuZCIpICYmIHJlYWRRdWVyeSkg ew0KICAgICAgICAgICAgcmVhZEFuZCA9IHRydWU7DQogICAgICAgICAgICBv cGVyYW5kMSA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUoIm9wZXJhbmQxIik7DQog ICAgICAgICAgICBvcGVyYW5kMiA9IGF0dHJpYnV0ZXMuZ2V0VmFsdWUoIm9w ZXJhbmQyIik7DQogICAgICAgICAgICBvcGVyYXRvciA9IGF0dHJpYnV0ZXMu Z2V0VmFsdWUoIm9wZXJhdG9yIik7DQogICAgICAgfQ0KDQogICAgICAgIGVs c2UgaWYgKG5hbWVzcGFjZVVSSS5lcXVhbHMgKG5hbWVzcGFjZSkgJiYgbG9j YWxOYW1lLmVxdWFscyAoInVzaW5nIikgJiYgcmVhZFF1ZXJ5KSB7DQogICAg ICAgICAgICByZWFkVXNpbmcgPSB0cnVlOw0KICAgICAgICB9DQoNCiAgICAg ICAgLyplbHNlIGlmIChuYW1lc3BhY2VVUkkuZXF1YWxzIChuYW1lc3BhY2Up ICYmIGxvY2FsTmFtZS5lcXVhbHMgKCJvcGVyYW5kMSIpICYmIHJlYWRBbmQp IHsNCiAgICAgICAgICAgIHJlYWRPcGVyYW5kMSA9IHRydWU7DQogICAgICAg IH0NCg0KICAgICAgICBlbHNlIGlmIChuYW1lc3BhY2VVUkkuZXF1YWxzIChu YW1lc3BhY2UpICYmIGxvY2FsTmFtZS5lcXVhbHMgKCJvcGVyYW5kMiIpICYm IHJlYWRBbmQpIHsNCiAgICAgICAgICAgIHJlYWRPcGVyYW5kMiA9IHRydWU7 DQogICAgICAgIH0NCg0KICAgICAgICBlbHNlIGlmIChuYW1lc3BhY2VVUkku ZXF1YWxzIChuYW1lc3BhY2UpICYmIGxvY2FsTmFtZS5lcXVhbHMgKCJvcGVy YXRvciIpICYmIHJlYWRBbmQpIHsNCiAgICAgICAgICAgIHJlYWRPcGVyYXRv ciA9IHRydWU7DQogICAgICAgIH0qLw0KDQogICAgICAgIC8vZG8gbm90IG1v ZGlmeSBhbnkgb3RoZXIgdGFncy4uLg0KICAgICAgICBlbHNlIHsNCiAgICAg ICAgICAgIHN1cGVyLnN0YXJ0RWxlbWVudCAobmFtZXNwYWNlVVJJLCBsb2Nh bE5hbWUsIHFOYW1lLCBhdHRyaWJ1dGVzKTsNCiAgICAgICAgfQ0KDQogICAg fQ0KDQoNCg0KDQoNCiAgICAvKioNCiAgICAgKg0KICAgICAqIFJlYWRzIHRo ZSBjb250ZW50IGJldHdlZW4gdGhlIHRhZ3Mgb2YgaW50ZXJlc3QuDQogICAg ICogVGhlIGNvbnRlbnQgaXMgc2F2ZWQgaW4gU3RyaW5nQnVmZmVycw0KICAg ICAqDQogICAgICogQHBhcmFtIGNoIFRoZSB3aG9sZSBYTUwgZG9jdW1lbnQg YXMgYW4gY2hhcmFjdGVyIGFycmF5DQogICAgICogQHBhcmFtIHN0YXJ0IFRo ZSBzdGFydCBpbmRleCBvZiB0aGUgdGFnIGNvbnRlbnQNCiAgICAgKiBAcGFy YW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIGNvbnRlbnQgYmV0d2VlbiB0 aGUgc3RhcnQgYW5kIHRoZSBlbmQgdGFnDQogICAgICoNCiAgICAgKi8NCiAg ICBwdWJsaWMgdm9pZCBjaGFyYWN0ZXJzIChjaGFyW10gY2gsIGludCBzdGFy dCwgaW50IGxlbmd0aCkgew0KDQoNCiAgICAgICAgLyppZiAocmVhZFN1Ympl Y3QpIHsNCiAgICAgICAgICAgIHN1YmplY3QuYXBwZW5kIChjaCwgc3RhcnQs IGxlbmd0aCk7DQogICAgICAgICAgICByZWFkU3ViamVjdCA9IGZhbHNlOw0K ICAgICAgICB9DQoNCiAgICAgICAgaWYgKHJlYWRQcmVkaWNhdGUpIHsNCiAg ICAgICAgICAgIHByZWRpY2F0ZS5hcHBlbmQgKGNoLCBzdGFydCwgbGVuZ3Ro KTsNCiAgICAgICAgICAgIHJlYWRQcmVkaWNhdGUgPSBmYWxzZTsNCiAgICAg ICAgfQ0KDQogICAgICAgIGlmIChyZWFkT2JqZWN0KSB7DQogICAgICAgICAg ICBvYmplY3QuYXBwZW5kIChjaCwgc3RhcnQsIGxlbmd0aCk7DQogICAgICAg ICAgICByZWFkT2JqZWN0ID0gZmFsc2U7DQogICAgICAgIH0qLw0KDQogICAg ICAgIGlmIChyZWFkVXNpbmcgJiYgKGxlbmd0aCAhPSAwKSkgew0KICAgICAg ICAgICAgdXNpbmcuYXBwZW5kIChjaCwgc3RhcnQsIGxlbmd0aCk7DQogICAg ICAgICAgICByZWFkVXNpbmcgPSBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAg ICAgIGlmIChyZWFkUGFyYW0pIHsNCiAgICAgICAgICAgIHBhcmFtLmFwcGVu ZCAoY2gsIHN0YXJ0LCBsZW5ndGgpOw0KICAgICAgICB9DQoNCiAgICAgICAv KiBpZiAocmVhZE9wZXJhbmQxICYmIChsZW5ndGggIT0gMCkpIHsNCiAgICAg ICAgICAgIG9wZXJhbmQxLmFwcGVuZCAoY2gsIHN0YXJ0LCBsZW5ndGgpOw0K ICAgICAgICAgICAgcmVhZE9wZXJhbmQxID0gZmFsc2U7DQogICAgICAgIH0N Cg0KICAgICAgICBpZiAocmVhZE9wZXJhbmQyICYmIGxlbmd0aCAhPSAwKSB7 DQogICAgICAgICAgICBvcGVyYW5kMi5hcHBlbmQgKGNoLCBzdGFydCwgbGVu Z3RoKTsNCiAgICAgICAgICAgIHJlYWRPcGVyYW5kMiA9IGZhbHNlOw0KICAg ICAgICB9DQoNCiAgICAgICAgaWYgKHJlYWRPcGVyYXRvciAmJiAobGVuZ3Ro ICE9IDApKSB7DQogICAgICAgICAgICBvcGVyYXRvci5hcHBlbmQgKGNoLCBz dGFydCwgbGVuZ3RoKTsNCiAgICAgICAgICAgIHJlYWRPcGVyYXRvciA9IGZh bHNlOw0KICAgICAgICB9Ki8NCiAgICB9DQoNCg0KDQoNCg0KDQogICAgLyoq DQogICAgICoNCiAgICAgKiBBZnRlciBhbnkgdHJpcGxlIGRlY2xhcmF0aW9u LCBwYXJhbSBkZWNsYXJhdGlvbiBvciBhbmQgZGVjbGFyYXRpb24sIHdlIGNv bXBvc2UgdGhlIHNwZWNpZmllZCBwYXJ0DQogICAgICogb2YgdGhlIHF1ZXJ5 IChhcyB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgdHJpcGxlLCBwYXJhbSBvciBh bmQgZGVjbGFyYXRpb25zKSBiZWZvcmUgZ2VuZXJhdGluZyBhbmQNCiAgICAg KiBleGVjdXRpbmcgdGhlIHF1ZXJ5IGl0c2VsZg0KICAgICAqDQogICAgICog QHBhcmFtIG5hbWVzcGFjZVVSSSBUaGUgbmFtZXNwYWNlDQogICAgICogQHBh cmFtIGxvY2FsTmFtZSBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCB0YWcNCiAg ICAgKiBAcGFyYW0gcU5hbWUgVGhlIHF1YWxpZmllZCBuYW1lDQogICAgICog QHRocm93cyBTQVhFeGNlcHRpb24NCiAgICAgKg0KICAgICAqLw0KICAgIHB1 YmxpYyB2b2lkIGVuZEVsZW1lbnQgKFN0cmluZyBuYW1lc3BhY2VVUkksIFN0 cmluZyBsb2NhbE5hbWUsIFN0cmluZyBxTmFtZSkgdGhyb3dzIFNBWEV4Y2Vw dGlvbiB7DQoNCiAgICAgICAgLy9hZGQgdGhpcyB0cmlwbGUgc3RhdGVtZW50 IHRvIHRoZSB2ZWN0b3Igb2YgYWxsIHRyaXBsZXMsIGJlbG9uZ2luZyB0byB0 aGlzIHF1ZXJ5DQogICAgICAgIGlmIChuYW1lc3BhY2VVUkkuZXF1YWxzIChu YW1lc3BhY2UpICYmIGxvY2FsTmFtZS5lcXVhbHMgKCJ0cmlwbGUiKSkgew0K DQogICAgICAgICAgICByZWFkVHJpcGxlID0gZmFsc2U7DQogICAgICAgICAg ICAJZm9yIChpbnQgaT0wOyBpPHJlcVBhcmFtcy5zaXplKCk7IGkrKyl7DQog ICAgICAgICAgICAJCVN0cmluZyB0ZW1wID0gcmVxUGFyYW1zLmVsZW1lbnRB dChpKS50b1N0cmluZygpOw0KICAgICAgICAJCQlTeXN0ZW0ub3V0LnByaW50 bG4ocmVxUGFyYW1zLmVsZW1lbnRBdChpKSsgIiA9ICIgKyBzdWJqZWN0KTsN CiAgICAgICAgCQkJDQogICAgICAgICAgICAJCWlmIChzdWJqZWN0PT10ZW1w KXsNCiAgICAgICAgICAgIAkJCVN5c3RlbS5vdXQucHJpbnRsbihyZXFQYXJh bXMuZWxlbWVudEF0KGkpKyAiID0gIiArIHN1YmplY3QpOw0KICAgICAgICAg ICAgCQkJc3ViamVjdCA9ICJcIiIrcmVxdWVzdC5nZXRQYXJhbWV0ZXIodGVt cCkrIlwiIjsNCiAgICAgICAgICAgIAkJfQ0KICAgICAgICAgICAgCQlpZiAo cmVxUGFyYW1zLmVsZW1lbnRBdChpKT09b2JqZWN0KXsNCiAgICAgICAgICAg IAkJCVN5c3RlbS5vdXQucHJpbnRsbihyZXFQYXJhbXMuZWxlbWVudEF0KGkp KyAiID0gIiArIHN1YmplY3QpOw0KICAgICAgICAgICAgCQkJb2JqZWN0ID0g IlwiIityZXF1ZXN0LmdldFBhcmFtZXRlcih0ZW1wKSsiXCIiOyAgICAgCQkJ DQogICAgICAgICAgICAJCX0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAg ICAgdHJpcGxlcy5hZGRFbGVtZW50IChnZW5lcmF0ZVRyaXBsZSAoc3ViamVj dCwgcHJlZGljYXRlLCBvYmplY3QpKTsNCiAgICAgICAgICAgIC8qc3ViamVj dCAgID0gbmV3IFN0cmluZ0J1ZmZlciAoKTsNCiAgICAgICAgICAgIHByZWRp Y2F0ZSA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7DQogICAgICAgICAgICBvYmpl Y3QgICAgPSBuZXcgU3RyaW5nQnVmZmVyICgpOyovDQogICAgICAgIH0NCg0K ICAgICAgICAvL2FkZCB0aGlzIHBhcmFtIHN0YXRlbWVudCB0byB0aGUgdmVj dG9yIG9mIGFsbCBwYXJhbXMsIGJlbG9uZ2luZyB0byB0aGlzIHF1ZXJ5DQog ICAgICAgIGVsc2UgaWYgKG5hbWVzcGFjZVVSSS5lcXVhbHMgKG5hbWVzcGFj ZSkgJiYgbG9jYWxOYW1lLmVxdWFscyAoInBhcmFtIikpIHsNCg0KICAgICAg ICAgICAgcmVhZFBhcmFtID0gZmFsc2U7DQogICAgICAgICAgICBwYXJhbXMu YWRkRWxlbWVudCAocGFyYW0udG9TdHJpbmcgKCkpOw0KICAgICAgICAgICAg cGFyYW0gPSBuZXcgU3RyaW5nQnVmZmVyICgpOw0KICAgICAgICB9DQoNCiAg ICAgICAgLy9hZGQgdGhpcyBhbmQgc3RhdGVtZW50IHRvIHRoZSB2ZWN0b3Ig b2YgYWxsIGFuZC1zdGF0ZW1lbnRzLCBiZWxvbmdpbmcgdG8gdGhpcyBxdWVy eQ0KICAgICAgICBlbHNlIGlmIChuYW1lc3BhY2VVUkkuZXF1YWxzIChuYW1l c3BhY2UpICYmIGxvY2FsTmFtZS5lcXVhbHMgKCJhbmQiKSkgew0KDQogICAg ICAgICAgICByZWFkQW5kID0gZmFsc2U7DQogICAgICAgIAlmb3IgKGludCBp PTA7IGk8cmVxUGFyYW1zLnNpemUoKTsgaSsrKXsNCiAgICAgICAgCQkNCiAg ICAgICAgCQlTdHJpbmcgdGVtcCA9IHJlcVBhcmFtcy5lbGVtZW50QXQoaSku dG9TdHJpbmcoKTsNCiAgICAgICAgCQlpZiAodGVtcD09b3BlcmFuZDEpew0K ICAgICAgICAJCW9wZXJhbmQxID0gIlwiIityZXF1ZXN0LmdldFBhcmFtZXRl cih0ZW1wKSsiXLIiOw0KICAgICAgICAJCX0NCiAgICAgICAgCQlpZiAodGVt cD09b3BlcmFuZDIpew0KICAgICAgICAgICAgCW9wZXJhbmQyID0gIlwiIity ZXF1ZXN0LmdldFBhcmFtZXRlcih0ZW1wKSsiXCIiOyAgICAgCQkJDQogICAg ICAgIAkJfQ0KICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAg IGlmIChvcGVyYW5kMS50cmltICgpLmxlbmd0aCgpICE9IDAgJiYgb3BlcmFu ZDIudHJpbSAoKS5sZW5ndGgoKSAhPSAwICYmIG9wZXJhdG9yLnRyaW0gKCku bGVuZ3RoKCkgIT0gMCkgew0KICAgICAgICAgICAgICAgIGFuZHMuYWRkRWxl bWVudCAoZ2VuZXJhdGVBbmQgKG9wZXJhbmQxLnRyaW0gKCksIG9wZXJhbmQy LnRyaW0gKCksIG9wZXJhdG9yLnRyaW0gKCkpKTsNCiAgICAgICAgICAgIH0N CiAgICAgICAgICAgIC8qb3BlcmFuZDEgPSBuZXcgU3RyaW5nQnVmZmVyICgp Ow0KICAgICAgICAgICAgb3BlcmFuZDIgPSBuZXcgU3RyaW5nQnVmZmVyICgp Ow0KICAgICAgICAgICAgb3BlcmF0b3IgPSBuZXcgU3RyaW5nQnVmZmVyICgp OyovDQogICAgICAgIH0NCg0KICAgICAgICAvL3doZW4gd2UgYXJyaXZlIGF0 IHRoZSBlbmQgb2YgdGhlIHF1ZXJ5IHRhZywgd2UgY2FuIGNvbXBvc2UgYW5k IGV4ZWN1dGUgdGhlIFJEUUwgcXVlcnksIGNvbnNpZGVyaW5nIGFsbCB0aGUg cmVsZXZhbnQgaW5mb3JtYXRpb24NCiAgICAgICAgZWxzZSBpZiAobmFtZXNw YWNlVVJJLmVxdWFscyAobmFtZXNwYWNlKSAmJiBsb2NhbE5hbWUuZXF1YWxz ICgicXVlcnkiKSkgew0KDQogICAgICAgICAgICAvL2ZpcnN0LCBjb21wb3Nl IHRoZSBxdWVyeSBmcm9tICJzZWxlY3QiLCAid2hlcmUiLCAiYW5kIiBhbmQg InVzaW5nIiB0YWdzDQogICAgICAgICAgICByZWFkUXVlcnkgPSBmYWxzZTsN CiAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxwYXJhbXMuc2l6ZSgpOyBp Kyspew0KICAgICAgICAgICAgCVN5c3RlbS5vdXQucHJpbnRsbigoKFN0cmlu ZylwYXJhbXMuZWxlbWVudEF0KGkpKS5zdWJzdHJpbmcoMSkpOw0KICAgICAg ICAgICAgCVN0cmluZyBmID0gKHBhcmFtcy5lbGVtZW50QXQoaSkudG9TdHJp bmcoKSkuc3Vic3RyaW5nKDEpOw0KICAgICAgICAgICAgCXB1cmUuYWRkRWxl bWVudChmKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHF1ZXJ5LmFw cGVuZCAoIlNlbGVjdCAiKTsNCiAgICAgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgcGFyYW1zLnNpemUgKCk7IGkrKykgew0KICAgICAgICAgICAgICAg IHF1ZXJ5LmFwcGVuZCAoKFN0cmluZylwYXJhbXMuZWxlbWVudEF0IChpKSAr ICIgIik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHF1ZXJ5LmFw cGVuZCAoIndoZXJlICIpOw0KDQogICAgICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IHRyaXBsZXMuc2l6ZSAoKTsgaSsrKSB7DQogICAgICAgICAgICAg ICAgcXVlcnkuYXBwZW5kICgoU3RyaW5nKXRyaXBsZXMuZWxlbWVudEF0IChp KSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgYW5kcy5zaXplKCk7IGkrKykgew0KICAgICAgICAgICAgICAg IHF1ZXJ5LmFwcGVuZCAoIiBhbmQgIiArIGFuZHMuZWxlbWVudEF0KGkpKTsN CiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHVzaW5nLnRvU3Ry aW5nICgpLnRyaW0gKCkubGVuZ3RoICgpICE9IDApIHsNCiAgICAgICAgICAg ICAgICBTdHJpbmcgdXNpbmdUcmltbWVkID0gdXNpbmcudG9TdHJpbmcgKCku dHJpbSAoKTsNCiAgICAgICAgICAgICAgICBxdWVyeS5hcHBlbmQgKCIgdXNp bmcgIiArIHVzaW5nVHJpbW1lZCk7DQogICAgICAgICAgICB9DQoNCiAgICAg ICAgICAgIC8vcXVlcnkgaXMgY29tcG9zZWQsIG5vdyBleGVjdXRlIGFuZCBl bWJlZCB0aGUgcmVzdWx0IGluIGEgInJlc3VsdCIgdGFnLi4uDQogICAgICAg ICAgICBPbnRNb2RlbCBtID0gbnVsbDsNCiAgICAgICAgICAgIFF1ZXJ5IHEg ICAgPSBudWxsOw0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgIHN1 cGVyLnN0YXJ0RWxlbWVudCAoIiIsICJyZXN1bHQiLCAicmVzdWx0IiwgKEF0 dHJpYnV0ZXMpbmV3IEF0dHJpYnV0ZXNJbXBsKCkpOw0KDQogICAgICAgICAg ICAvL2NvbnN0cnVjdHMgYW4gZW1wdHkgbW9kZWwgb2YgdGhlIHR5cGUgUkRG Uw0KICAgICAgICAgICAgbSA9IE1vZGVsRmFjdG9yeS5jcmVhdGVPbnRvbG9n eU1vZGVsIChPbnRNb2RlbFNwZWMuUkRGU19NRU0sIG51bGwpOw0KDQogICAg ICAgICAgICAvL2FkZCB0aGUgb250b2xvZ3kgYW5kIHRoZSBpbnN0YW5jZXMg dG8gdGhlIG1vZGVsDQogICAgICAgICAgICBtLmdldERvY3VtZW50TWFuYWdl ciAoKS5hZGRBbHRFbnRyeSAoc3MsIHNzKTsNCiAgICAgICAgICAgIC8vSXJl YWQgdGhlIGluc3RhbmNlcy4uLg0KICAgICAgICAgICAgbS5yZWFkIChzcyk7 DQogICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8cGFyYW1ldGVycy5sZW5n dGg7IGkrKyl7DQogICAgICAgICAgICAgICAgbS5yZWFkKHBhcmFtZXRlcnMg W2ldKTsNCiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFy YW1ldGVyc1tpXSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAg ICAvLy4uLmFuZCBleGVjdXRlIHRoZSBxdWVyeS4uLg0KICAgICAgICAgICAg ICAgIHEgPSBuZXcgUXVlcnkgKHF1ZXJ5LnRvU3RyaW5nICgpKTsNCiAgICAg ICAgICAgIH0NCg0KICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7 DQogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuICgiQW4gRXJy b3Igb2NjdXJlZCBkdXJpbmcgcXVlcnkgaW5zdGFudGlhdGlvbiAiKTsNCiAg ICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSAoKTsNCiAgICAgICAg ICAgICAgICByZXNldCAoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAg ICAgU3lzdGVtLm91dC5wcmludGxuICgiUXVlcnk6ICIgKyBxdWVyeS50b1N0 cmluZyAoKSk7DQogICAgICAgICAgICBxLnNldFNvdXJjZSAobSk7DQoNCiAg ICAgICAgICAgIFF1ZXJ5RXhlY3V0aW9uIHFlID0gbmV3IFF1ZXJ5RW5naW5l IChxKTsNCiAgICAgICAgICAgIFF1ZXJ5UmVzdWx0cyBxciA9IHFlLmV4ZWMg KCk7DQoNCiAgICAgICAgICAgIC8vZ28gdGhyb3VnaCB0aGUgcmVzdWx0c2V0 IHVudGlsIGl0IGlzIGVtcHR5DQogICAgICAgICAgICBmb3IgKEl0ZXJhdG9y IGl0ZXIgPSBxcjsgcXIuaGFzTmV4dCAoKTsgKSB7DQoNCiAgICAgICAgICAg ICAgICBSZXN1bHRCaW5kaW5nIHJiaW5kID0gKFJlc3VsdEJpbmRpbmcpaXRl ci5uZXh0ICgpOw0KICAgICAgICAgICAgICAgIHN1cGVyLnN0YXJ0RWxlbWVu dCAoIiIsICJpdGVtIiwgIml0ZW0iLCAoQXR0cmlidXRlcyluZXcgQXR0cmli dXRlc0ltcGwoKSk7DQogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBwYXJhbXMuc2l6ZSAoKTsgaSsrKSB7DQoNCiAgICAgICAgICAgICAg ICAgICAgT2JqZWN0IG9iaiA9IHJiaW5kLmdldFZhbHVlICgoU3RyaW5nKXB1 cmUuZWxlbWVudEF0IChpKSkuZ2V0UkRGTGl0ZXJhbCAoKS5nZXRWYWx1ZSAo KTsNCiAgICAgICAgICAgICAgICAgICAgc3VwZXIuc3RhcnRFbGVtZW50ICgi IiwgcHVyZS5lbGVtZW50QXQgKGkpLnRvU3RyaW5nICgpLCBwdXJlLmVsZW1l bnRBdCAoaSkudG9TdHJpbmcgKCksIChBdHRyaWJ1dGVzKW5ldyBBdHRyaWJ1 dGVzSW1wbCgpKTsNCiAgICAgICAgICAgICAgICAgICAgc3VwZXIuY2hhcmFj dGVycyAob2JqLnRvU3RyaW5nICgpLnRvQ2hhckFycmF5ICgpLCAwLCBvYmou dG9TdHJpbmcgKCkubGVuZ3RoICgpKTsNCiAgICAgICAgICAgICAgICAgICAg c3VwZXIuZW5kRWxlbWVudCAoIiIsIHB1cmUuZWxlbWVudEF0IChpKS50b1N0 cmluZyAoKSwgcHVyZS5lbGVtZW50QXQgKGkpLnRvU3RyaW5nICgpKTsNCiAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc3VwZXIuZW5kRWxl bWVudCAoIiIsICJpdGVtIiwgIml0ZW0iKTsNCiAgICAgICAgICAgIH0NCg0K ICAgICAgICAgICAgLy9ub3csIHdlIGhhdmUgdGhlIHJlc3VsdA0KICAgICAg ICAgICAgc3VwZXIuZW5kRWxlbWVudCAoIiIsICJyZXN1bHQiLCAicmVzdWx0 Iik7DQoNCiAgICAgICAgICAgIC8vcXVlcnkgaXMgZXhlY3V0ZWQsIG5vdyBy ZXNldCBxdWVyeSBwYXJhbWV0ZXJzLi4uDQogICAgICAgICAgICBwYXJhbXMu cmVtb3ZlQWxsRWxlbWVudHMgKCk7DQogICAgICAgICAgICB0cmlwbGVzLnJl bW92ZUFsbEVsZW1lbnRzICgpOw0KICAgICAgICAgICAgYW5kcy5yZW1vdmVB bGxFbGVtZW50cyAoKTsNCg0KICAgICAgICAgICAgcXVlcnkgPSBuZXcgU3Ry aW5nQnVmZmVyICgpOw0KICAgICAgICAgICAgYW5kICAgPSBuZXcgU3RyaW5n QnVmZmVyICgpOw0KICAgICAgICAgICAgdXNpbmcgPSBuZXcgU3RyaW5nQnVm ZmVyICgpOw0KICAgICAgICB9DQoNCg0KICAgICAgICAvL3JlY3ljbGUgYWxs IHZhcmlhYmxlcyB3aGVuIHdlIGFycml2ZSBhdCB0aGUgZW5kLi4uDQogICAg ICAgIGVsc2UgaWYgKG5hbWVzcGFjZVVSSS5lcXVhbHMgKG5hbWVzcGFjZSkg JiYgbG9jYWxOYW1lLmVxdWFscyAoIlJEUUwiKSkgew0KICAgICAgICAgICAg cmVzZXQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vZG8gbm90aGluZyB3 aGVuIHRoZXNlIGVsZW1lbnRzIG9jY3VyLi4uDQogICAgICAgIGVsc2UgaWYg KG5hbWVzcGFjZVVSSS5lcXVhbHMgKG5hbWVzcGFjZSkgJiYgKGxvY2FsTmFt ZS5lcXVhbHMgKCJpbnN0YW5jZXMiKSB8fA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbE5hbWUu ZXF1YWxzICgibW9kZWxsIikgICAgfHwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxOYW1lLmVx dWFscyAoInNlbGVjdCIpICAgIHx8DQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsTmFtZS5lcXVh bHMgKCJzdWJqZWN0IikgICB8fA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbE5hbWUuZXF1YWxz ICgicHJlZGljYXRlIikgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxOYW1lLmVxdWFscyAo Im9iamVjdCIpICAgIHx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsTmFtZS5lcXVhbHMgKCJ3 aGVyZSIpICAgICB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsb2NhbE5hbWUuZXF1YWxzICgiYW5k IikgICAgICAgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbG9jYWxOYW1lLmVxdWFscyAoInVzaW5n IikgICAgIHx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxvY2FsTmFtZS5lcXVhbHMgKCJvbnRvbG9n eSIpICB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsb2NhbE5hbWUuZXF1YWxzICgib3BlcmFuZDEi KSAgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbG9jYWxOYW1lLmVxdWFscyAoIm9wZXJhbmQyIikg IHx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxvY2FsTmFtZS5lcXVhbHMgKCJvcGVyYXRvciIpKSkg IHsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgLy9kbyBub3QgbW9kaWZ5IGFu eSBvdGhlciBlbGVtZW50cw0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAg IHN1cGVyLmVuZEVsZW1lbnQgKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBx TmFtZSk7DQogICAgICAgIH0NCiAgICB9DQoNCg0KDQoNCiAgICAvKioNCiAg ICAgKg0KICAgICAqIGdlbmVyYXRlcyBhIHNpbmdsZSBSRFFMIHRyaXBsZSBp biB0aGUgY29ycmVjdCBSRFFMIHN5bnRheCwgcHV0dGluZyBzdWJqZWN0LCBw cmVkaWNhdGUNCiAgICAgKiBhbmQgb2JqZWN0IHRvZ2V0aGVyDQogICAgICoN CiAgICAgKiBAcGFyYW0gc3ViamVjdCBUaGUgc3ViamVjdA0KICAgICAqIEBw YXJhbSBwcmVkaWNhdGUgVGhlIHByZWRpY2F0ZQ0KICAgICAqIEBwYXJhbSBv YmplY3QgVGhlIG9iamVjdA0KICAgICAqIEByZXR1cm4gVGhlIHRyaXBsZQ0K ICAgICAqDQogICAgICovDQogICAgcHVibGljIFN0cmluZyBnZW5lcmF0ZVRy aXBsZSAoU3RyaW5nIHN1YmplY3QsIFN0cmluZyBwcmVkaWNhdGUsIFN0cmlu ZyBvYmplY3QpIHsNCg0KICAgICAgICBTdHJpbmdCdWZmZXIgcmV0dmFsID0g bmV3IFN0cmluZ0J1ZmZlciAoKTsNCiAgICAgICAgcmV0dmFsLmFwcGVuZCAo IigiKTsNCg0KICAgICAgICBpZiAoIXN1YmplY3Quc3RhcnRzV2l0aCAoIj8i KSkgew0KICAgICAgICAgICAgcmV0dmFsLmFwcGVuZCAoIlwiIiArIHN1Ympl Y3QgKyAiXCIiKTsNCiAgICAgICAgfQ0KICAgICAgICAJZWxzZSB7cmV0dmFs LmFwcGVuZChzdWJqZWN0KTt9DQogICAgICAgIHJldHZhbC5hcHBlbmQgKCIs IDwiICsgcHJlZGljYXRlICsgIj4sICIpOw0KDQogICAgICAgIGlmICghb2Jq ZWN0LnN0YXJ0c1dpdGggKCI/IikpIHsNCiAgICAgICAgICAgIHJldHZhbC5h cHBlbmQgKCJcIiIgKyBvYmplY3QgKyAiXCIpIik7DQogICAgICAgIH0NCiAg ICAJZWxzZSB7cmV0dmFsLmFwcGVuZChvYmplY3QgKyAiKSIpO30NCg0KDQog ICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiAoIlRyaXBsZTogIiArIHJldHZh bC50b1N0cmluZyAoKSk7DQoNCiAgICAgICAgcmV0dXJuIHJldHZhbC50b1N0 cmluZyAoKTsNCiAgICB9DQoNCg0KDQoNCiAgICAvKioNCiAgICAgKg0KICAg ICAqIGdlbmVyYXRlcyBhIHNpbmdsZSBSRFFMIGFuZCBzdGF0ZW1lbnQgaW4g dGhlIGNvcnJlY3QgUkRRTCBzeW50YXgsIHB1dHRpbmcgYWxsIG9wZXJhbmRz IGFuZA0KICAgICAqIHRoZSBvcGVyYXRvciB0b2dldGhlcg0KICAgICAqDQog ICAgICogQHBhcmFtIG9wMSBGaXJzdCBvcGVyYW5kDQogICAgICogQHBhcmFt IG9wMiBTZWNvbmQgb3BlcmFuZA0KICAgICAqIEBwYXJhbSBvcGVyYXRvciBU aGUgb3BlcmF0b3INCiAgICAgKiBAcmV0dXJuIFN0cmluZw0KICAgICAqDQog ICAgICovDQogICAgcHVibGljIFN0cmluZyBnZW5lcmF0ZUFuZCAoU3RyaW5n IG9wMSwgU3RyaW5nIG9wMiwgU3RyaW5nIG9wZXJhdG9yKSB7DQoNCiAgICAg ICAgU3RyaW5nQnVmZmVyIHJldHZhbCA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7 DQoNCiAgICAgICAgaWYgKCFvcDEuc3RhcnRzV2l0aCAoIj8iKSkgew0KICAg ICAgICAgICAgcmV0dmFsLmFwcGVuZCAoIlwiIiArIG9wMSArICJcIiAiKyBv cGVyYXRvciArICIgIik7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQog ICAgICAgIHJldHZhbC5hcHBlbmQgKG9wMSArICIgIiArIG9wZXJhdG9yICsg IiAiKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoIW9wMi5zdGFydHNXaXRo ICgiPyIpKSB7DQogICAgICAgICAgICByZXR2YWwuYXBwZW5kICgiXCIiICsg b3AyICsgIlwiIik7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAg ICAgIHJldHZhbC5hcHBlbmQgKG9wMik7DQogICAgICAgIH0NCiAgICAgICAg cmV0dXJuIHJldHZhbC50b1N0cmluZyAoKTsNCiAgICB9DQoNCg0KDQogICAg LyoqDQogICAgICogUmVjeWNsZXMgYWxsIHRoZSB2YXJpYWJsZXMgYW5kIHBh cmFtZXRlcnMNCiAgICAgKi8NCiAgICBwcml2YXRlIHZvaWQgcmVzZXQgKCkg ew0KDQogICAgICAgIC8vYm9vbGVhbiB2YXJpYWJsZXMNCiAgICAgICAgc3Rh cnQgPSBmYWxzZTsNCiAgICAgICAgcmVhZE1vZGVsID0gZmFsc2U7DQogICAg ICAgIHJlYWRRdWVyeSA9IGZhbHNlOw0KICAgICAgICByZWFkT250b2xvZ3kg PSBmYWxzZTsNCiAgICAgICAgcmVhZEluc3RhbmNlcyA9IGZhbHNlOw0KICAg ICAgICByZWFkU2VsZWN0ID0gZmFsc2U7DQogICAgICAgIHJlYWRQYXJhbSA9 IGZhbHNlOw0KICAgICAgICByZWFkV2hlcmUgPSBmYWxzZTsNCiAgICAgICAg cmVhZFRyaXBsZSA9IGZhbHNlOw0KICAgICAgICByZWFkU3ViamVjdCA9IGZh bHNlOw0KICAgICAgICByZWFkUHJlZGljYXRlID0gZmFsc2U7DQogICAgICAg IHJlYWRPYmplY3QgPSBmYWxzZTsNCiAgICAgICAgcmVhZEFuZCA9IGZhbHNl Ow0KICAgICAgICByZWFkVXNpbmcgPSBmYWxzZTsNCiAgICAgICAgcmVhZE9w ZXJhbmQxID0gZmFsc2U7DQogICAgICAgIHJlYWRPcGVyYW5kMiA9IGZhbHNl Ow0KICAgICAgICByZWFkT3BlcmF0b3IgPSBmYWxzZTsNCg0KICAgICAgICAv L1N0cmluZ0J1ZmZlcnMNCiAgICAgICAgLypvbnRvbG9neSA9IG5ldyBTdHJp bmdCdWZmZXIgKCk7DQogICAgICAgIGluc3RhbmNlcyA9IG5ldyBTdHJpbmdC dWZmZXIgKCk7Ki8NCiAgICAgICAgcXVlcnkgPSBuZXcgU3RyaW5nQnVmZmVy ICgpOw0KICAgICAgICBwYXJhbSA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7DQog ICAgICAgIC8qc3ViamVjdCA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7DQogICAg ICAgIHByZWRpY2F0ZSA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7DQogICAgICAg IG9iamVjdCA9IG5ldyBTdHJpbmdCdWZmZXIgKCk7Ki8NCiAgICAgICAgYW5k ID0gbmV3IFN0cmluZ0J1ZmZlciAoKTsNCiAgICAgICAgdXNpbmcgPSBuZXcg U3RyaW5nQnVmZmVyICgpOw0KICAgICAgICAvKm9wZXJhbmQxID0gbmV3IFN0 cmluZ0J1ZmZlciAoKTsNCiAgICAgICAgb3BlcmFuZDIgPSBuZXcgU3RyaW5n QnVmZmVyICgpOw0KICAgICAgICBvcGVyYXRvciA9IG5ldyBTdHJpbmdCdWZm ZXIgKCk7Ki8NCg0KICAgICAgICAvL1ZlY3RvcnMNCiAgICAgICAgcGFyYW1z LnJlbW92ZUFsbEVsZW1lbnRzICgpOw0KICAgICAgICB0cmlwbGVzLnJlbW92 ZUFsbEVsZW1lbnRzICgpOw0KICAgICAgICBhbmRzLnJlbW92ZUFsbEVsZW1l bnRzICgpOw0KICAgIH0NCn0NCg== --Herd_of_Hippopotamuses_146_000 Content-Type: TEXT/plain; name="royals.xsl"; charset=ISO-8859-15; x-unix-mode=0644 Content-Transfer-Encoding: BASE64 Content-Description: royals.xsl Content-MD5: eYGDsE8J26pDbv8e7GbipA== PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjx4c2w6 c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zOnhzbD0iaHR0cDovL3d3 dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIg0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv eGh0bWwiDQoJCQkJCXhtbG5zOm93cWw9Imh0dHA6Ly9hcGFjaGUub3JnL2Nv Y29vbi9vd3FsLzIuMSINCgkJCQkJeG1sbnM6U09BUC1FTlY9Imh0dHA6Ly9z Y2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIg0KCQkJCQl4bWxu czpvd2wtcWw9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvMTAvb3dsLXFsLXN5 bnRheCMiDQogICAgICAgICAgIAkJCQl4bWxuczp2YXI9Imh0dHA6Ly93d3cu dzMub3JnLzIwMDMvMTAvb3dsLXFsLXZhcmlhYmxlcyMiDQogICAgICAgICAg IAkJCQl4bWxuczppdz0iaHR0cDovL3d3dy5rc2wuc3RhbmZvcmQuZWR1L3Nv ZnR3YXJlL0lXL3NwZWMvaXcuZGFtbCMiDQogICAgICAgICAgIAkJCQl4bWxu czp0a2I9Imh0dHA6Ly93d3cuZGFtbC5vcmcvMjAwMS8wMy9kYW1sK29pbC1l eCMiDQogICAgICAgICAgIAkJCQl4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMu b3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiDQogICAgICAgICAgIAkJ CQl4bWxuczpyZGZzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1z Y2hlbWEjIg0KICAgICAgICAgICAJCQkJeG1sbnM6b3dsPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAyLzA3L293bCMiDQogICAgICAgICAgIAkJCQl4bWxuczpk YW1sPSJodHRwOi8vd3d3LmRhbWwub3JnLzIwMDEvMDMvZGFtbCtvaWwjIj4N CiA8eHNsOnRlbXBsYXRlIG1hdGNoPSIvL293bC1xbDphbnN3ZXJCdW5kbGUi Pg0KICAgIDxodG1sIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNlZmVmZWY7 Ij4NCiAgICAgIDxoZWFkPg0KICAgICAgICA8dGl0bGU+VGhlIFJveWFscyE8 L3RpdGxlPg0KICAgICAgPC9oZWFkPg0KICAgICAgPGJvZHk+DQogICAgICAg IDxoMT5UaGUgUm95YWxzITwvaDE+DQoJCTx0YWJsZSBib3JkZXI9IjAiPg0K CQkJPHRyPg0KCQkJCTx0ZD4NCgkJPHhzbDplbGVtZW50IG5hbWU9ImltYWdl Ij4NCgkJCTx4c2w6YXR0cmlidXRlIG5hbWU9InNyYyI+DQoJCSAgICAgIAk8 eHNsOnZhbHVlLW9mIHNlbGVjdD0ib3dsLXFsOmFuc3dlci9vd2wtcWw6Ymlu ZGluZy1zZXQvdmFyOnBlcnNvbmltYWdldXJsL0ByZGY6cmVzb3VyY2UiLz4N CgkJCTwveHNsOmF0dHJpYnV0ZT4NCgkJPC94c2w6ZWxlbWVudD4NCgkJCQk8 L3RkPg0KCQkJPHRkPg0KCQkJPHRhYmxlPg0KCQkJPHRyPg0KCQkJCTx0ZD4N CgkJCQlMYXN0bmFtZTogPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im93bC1xbDph bnN3ZXIvb3dsLXFsOmJpbmRpbmctc2V0L3ZhcjpwZXJzb25sbmFtZS9AcmRm OnJlc291cmNlIi8+DQoJCQkJPC90ZD4NCgkJCTwvdHI+DQoJCQk8dHI+DQoJ CQkJPHRkPg0KCQkJCUZpcnN0bmFtZTogPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9 Im93bC1xbDphbnN3ZXIvb3dsLXFsOmJpbmRpbmctc2V0L3ZhcjpwZXJzb25m bmFtZS9AcmRmOnJlc291cmNlIi8+DQoJCQkJPC90ZD4NCgkJCTwvdHI+DQoJ CQk8dHI+DQoJCQkJPHRkPg0KCQkJCUJpcnRoZGF5OiA8eHNsOnZhbHVlLW9m IHNlbGVjdD0ib3dsLXFsOmFuc3dlci9vd2wtcWw6YmluZGluZy1zZXQvdmFy OnBlcnNvbmJpcnRoZGF5L0ByZGY6cmVzb3VyY2UiLz4NCgkJCQk8L3RkPg0K CQkJPC90cj4NCgkJCQkNCgkJCTwvdGFibGU+DQoJCQk8L3RkPg0KCQk8L3Ry Pg0KCQk8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Im93bC1xbDphbnN3 ZXIiLz4NCgk8L3RhYmxlPg0KCTwvYm9keT4NCiAgICA8L2h0bWw+DQoNCiAg PC94c2w6dGVtcGxhdGU+DQogIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Im93bC1x bDphbnN3ZXIiPg0KCQk8eHNsOnBhcmFtIG5hbWU9InN0bCI+PHhzbDp2YWx1 ZS1vZiBzZWxlY3Q9Im93bC1xbDpiaW5kaW5nLXNldC92YXI6ZmF0aGVyL0By ZGY6cmVzb3VyY2UiLz48L3hzbDpwYXJhbT4NCgkJPHhzbDpwYXJhbSBuYW1l PSJyZWxhdGl2ZTEiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJvd2wtcWw6Ymlu ZGluZy1zZXQvdmFyOmZhdGhlci9AcmRmOnJlc291cmNlIi8+PC94c2w6cGFy YW0+DQoJCTx4c2w6cGFyYW0gbmFtZT0idmFsdWUxIj48eHNsOnZhbHVlLW9m IHNlbGVjdD0ic3Vic3RyaW5nLWFmdGVyKCRyZWxhdGl2ZTEsICcjJykiLz48 L3hzbDpwYXJhbT4NCgkJPHhzbDpwYXJhbSBuYW1lPSJyZWxhdGl2ZTIiPjx4 c2w6dmFsdWUtb2Ygc2VsZWN0PSJvd2wtcWw6YmluZGluZy1zZXQvdmFyOm1v dGhlci9AcmRmOnJlc291cmNlIi8+PC94c2w6cGFyYW0+DQoJCTx4c2w6cGFy YW0gbmFtZT0idmFsdWUyIj48eHNsOnZhbHVlLW9mIHNlbGVjdD0ic3Vic3Ry aW5nLWFmdGVyKCRyZWxhdGl2ZTIsICcjJykiLz48L3hzbDpwYXJhbT4NCgkJ PHhzbDpwYXJhbSBuYW1lPSJyZWxhdGl2ZTMiPjx4c2w6dmFsdWUtb2Ygc2Vs ZWN0PSJvd2wtcWw6YmluZGluZy1zZXQvdmFyOmJyb3RoZXIvQHJkZjpyZXNv dXJjZSIvPjwveHNsOnBhcmFtPg0KCQk8eHNsOnBhcmFtIG5hbWU9InZhbHVl MyI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InN1YnN0cmluZy1hZnRlcigkcmVs YXRpdmUzLCAnIycpIi8+PC94c2w6cGFyYW0+DQoJCTx4c2w6cGFyYW0gbmFt ZT0icmVsYXRpdmU0Ij48eHNsOnZhbHVlLW9mIHNlbGVjdD0ib3dsLXFsOmJp bmRpbmctc2V0L3ZhcjpncmFuZG1vdGhlci9AcmRmOnJlc291cmNlIi8+PC94 c2w6cGFyYW0+DQoJCTx4c2w6cGFyYW0gbmFtZT0idmFsdWU0Ij48eHNsOnZh bHVlLW9mIHNlbGVjdD0ic3Vic3RyaW5nLWFmdGVyKCRyZWxhdGl2ZTQsICcj JykiLz48L3hzbDpwYXJhbT4NCgkJPHhzbDpwYXJhbSBuYW1lPSJyZWxhdGl2 ZTUiPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJvd2wtcWw6YmluZGluZy1zZXQv dmFyOmdyYW5kZmF0aGVyL0ByZGY6cmVzb3VyY2UiLz48L3hzbDpwYXJhbT4N CgkJPHhzbDpwYXJhbSBuYW1lPSJ2YWx1ZTUiPjx4c2w6dmFsdWUtb2Ygc2Vs ZWN0PSJzdWJzdHJpbmctYWZ0ZXIoJHJlbGF0aXZlNSwgJyMnKSIvPjwveHNs OnBhcmFtPg0KCQk8eHNsOnBhcmFtIG5hbWU9InJlbGF0aXZlNiI+PHhzbDp2 YWx1ZS1vZiBzZWxlY3Q9Im93bC1xbDpiaW5kaW5nLXNldC92YXI6Y2hpbGQv QHJkZjpyZXNvdXJjZSIvPjwveHNsOnBhcmFtPg0KCQk8eHNsOnBhcmFtIG5h bWU9InZhbHVlNiI+PHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InN1YnN0cmluZy1h ZnRlcigkcmVsYXRpdmU2LCAnIycpIi8+PC94c2w6cGFyYW0+DQoJCTx4c2w6 aWYgdGVzdD0ib3dsLXFsOmJpbmRpbmctc2V0L3ZhcjpmYXRoZXIvQHJkZjpy ZXNvdXJjZSI+DQoJPHRyPg0KCQk8dGQ+DQoJCUZhdGhlcjogPHhzbDplbGVt ZW50IG5hbWU9ImEiPg0KCQkJPHhzbDphdHRyaWJ1dGUgbmFtZT0iaHJlZiI+ aHR0cDovL2F0cmFkaWc4Mi5pbmZvcm1hdGlrLnR1LW11ZW5jaGVuLmRlOjgy ODAvY29jb29uL3JveWFscy9yb3lhbD9pZD08eHNsOnZhbHVlLW9mIHNlbGVj dD0iJHZhbHVlMSIvPgkJCQ0KCQkJPC94c2w6YXR0cmlidXRlPg0KCQkgICAg ICAJPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im93bC1xbDpiaW5kaW5nLXNldC92 YXI6cmVsYXRpdmVmbmFtZS9AcmRmOnJlc291cmNlIi8+CQkJDQoJCSAgICAg IAksIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJvd2wtcWw6YmluZGluZy1zZXQv dmFyOnJlbGF0aXZlbG5hbWUvQHJkZjpyZXNvdXJjZSIvPgkJCQ0KCQkJPC94 c2w6ZWxlbWVudD4NCg0KCQk8L3RkPg0KCTwvdHI+DQoJPC94c2w6aWY+DQoJ CTx4c2w6aWYgdGVzdD0ib3dsLXFsOmJpbmRpbmctc2V0L3Zhcjptb3RoZXIv QHJkZjpyZXNvdXJjZSI+DQoJPHRyPg0KCQk8dGQ+DQoJCU1vdGhlcjogPHhz bDplbGVtZW50IG5hbWU9ImEiPg0KCQkJPHhzbDphdHRyaWJ1dGUgbmFtZT0i aHJlZiI+aHR0cDovL2F0cmFkaWc4Mi5pbmZvcm1hdGlrLnR1LW11ZW5jaGVu LmRlOjgyODAvY29jb29uL3JveWFscy9yb3lhbD9pZD08eHNsOnZhbHVlLW9m IHNlbGVjdD0iJHZhbHVlMiIvPgkJCQ0KCQkJPC94c2w6YXR0cmlidXRlPg0K CQkgICAgICAJPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im93bC1xbDpiaW5kaW5n LXNldC92YXI6cmVsYXRpdmVmbmFtZS9AcmRmOnJlc291cmNlIi8+CQkJDQoJ CSAgICAgIAksIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJvd2wtcWw6YmluZGlu Zy1zZXQvdmFyOnJlbGF0aXZlbG5hbWUvQHJkZjpyZXNvdXJjZSIvPgkJCQ0K CQkJPC94c2w6ZWxlbWVudD4NCg0KCQk8L3RkPg0KCTwvdHI+DQoJPC94c2w6 aWY+DQoJCTx4c2w6aWYgdGVzdD0ib3dsLXFsOmJpbmRpbmctc2V0L3Zhcjpi cm90aGVyL0ByZGY6cmVzb3VyY2UiPg0KCTx0cj4NCgkJPHRkPg0KCQlCcm90 aGVyOiA8eHNsOmVsZW1lbnQgbmFtZT0iYSI+DQoJCQk8eHNsOmF0dHJpYnV0 ZSBuYW1lPSJocmVmIj5odHRwOi8vYXRyYWRpZzgyLmluZm9ybWF0aWsudHUt bXVlbmNoZW4uZGU6ODI4MC9jb2Nvb24vcm95YWxzL3JveWFsP2lkPTx4c2w6 dmFsdWUtb2Ygc2VsZWN0PSIkdmFsdWUzIi8+CQkJDQoJCQk8L3hzbDphdHRy aWJ1dGU+DQoJCSAgICAgIAk8eHNsOnZhbHVlLW9mIHNlbGVjdD0ib3dsLXFs OmJpbmRpbmctc2V0L3ZhcjpyZWxhdGl2ZWZuYW1lL0ByZGY6cmVzb3VyY2Ui Lz4JCQkNCgkJICAgICAgCSwgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im93bC1x bDpiaW5kaW5nLXNldC92YXI6cmVsYXRpdmVsbmFtZS9AcmRmOnJlc291cmNl Ii8+CQkJDQoJCQk8L3hzbDplbGVtZW50Pg0KDQoJCTwvdGQ+DQoJPC90cj4N Cgk8L3hzbDppZj4NCgkJPHhzbDppZiB0ZXN0PSJvd2wtcWw6YmluZGluZy1z ZXQvdmFyOmdyYW5kbW90aGVyL0ByZGY6cmVzb3VyY2UiPg0KCTx0cj4NCgkJ PHRkPg0KCQlHcmFuZG1vdGhlcjogPHhzbDplbGVtZW50IG5hbWU9ImEiPg0K CQkJPHhzbDphdHRyaWJ1dGUgbmFtZT0iaHJlZiI+aHR0cDovL2F0cmFkaWc4 Mi5pbmZvcm1hdGlrLnR1LW11ZW5jaGVuLmRlOjgyODAvY29jb29uL3JveWFs cy9yb3lhbD9pZD08eHNsOnZhbHVlLW9mIHNlbGVjdD0iJHZhbHVlNCIvPgkJ CQ0KCQkJPC94c2w6YXR0cmlidXRlPg0KCQkgICAgICAJPHhzbDp2YWx1ZS1v ZiBzZWxlY3Q9Im93bC1xbDpiaW5kaW5nLXNldC92YXI6cmVsYXRpdmVmbmFt ZS9AcmRmOnJlc291cmNlIi8+CQkJDQoJCSAgICAgIAksIDx4c2w6dmFsdWUt b2Ygc2VsZWN0PSJvd2wtcWw6YmluZGluZy1zZXQvdmFyOnJlbGF0aXZlbG5h bWUvQHJkZjpyZXNvdXJjZSIvPgkJCQ0KCQkJPC94c2w6ZWxlbWVudD4NCg0K CQk8L3RkPg0KCTwvdHI+DQoJPC94c2w6aWY+DQoJCTx4c2w6aWYgdGVzdD0i b3dsLXFsOmJpbmRpbmctc2V0L3ZhcjpncmFuZGZhdGhlci9AcmRmOnJlc291 cmNlIj4NCgk8dHI+DQoJCTx0ZD4NCgkJR3JhbmRmYXRoZXI6IDx4c2w6ZWxl bWVudCBuYW1lPSJhIj4NCgkJCTx4c2w6YXR0cmlidXRlIG5hbWU9ImhyZWYi Pmh0dHA6Ly9hdHJhZGlnODIuaW5mb3JtYXRpay50dS1tdWVuY2hlbi5kZTo4 MjgwL2NvY29vbi9yb3lhbHMvcm95YWw/aWQ9PHhzbDp2YWx1ZS1vZiBzZWxl Y3Q9IiR2YWx1ZTUiLz4JCQkNCgkJCTwveHNsOmF0dHJpYnV0ZT4NCgkJICAg ICAgCTx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJvd2wtcWw6YmluZGluZy1zZXQv dmFyOnJlbGF0aXZlZm5hbWUvQHJkZjpyZXNvdXJjZSIvPgkJCQ0KCQkgICAg ICAJLCA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ib3dsLXFsOmJpbmRpbmctc2V0 L3ZhcjpyZWxhdGl2ZWxuYW1lL0ByZGY6cmVzb3VyY2UiLz4JCQkNCgkJCTwv eHNsOmVsZW1lbnQ+DQoNCgkJPC90ZD4NCgk8L3RyPg0KCTwveHNsOmlmPg0K CQk8eHNsOmlmIHRlc3Q9Im93bC1xbDpiaW5kaW5nLXNldC92YXI6Y2hpbGQv QHJkZjpyZXNvdXJjZSI+DQoJPHRyPg0KCQk8dGQ+DQoJCUNoaWxkOiA8eHNs OmVsZW1lbnQgbmFtZT0iYSI+DQoJCQk8eHNsOmF0dHJpYnV0ZSBuYW1lPSJo cmVmIj5odHRwOi8vYXRyYWRpZzgyLmluZm9ybWF0aWsudHUtbXVlbmNoZW4u ZGU6ODI4MC9jb2Nvb24vcm95YWxzL3JveWFsP2lkPTx4c2w6dmFsdWUtb2Yg c2VsZWN0PSIkdmFsdWU2Ii8+CQkJDQoJCQk8L3hzbDphdHRyaWJ1dGU+DQoJ CSAgICAgIAk8eHNsOnZhbHVlLW9mIHNlbGVjdD0ib3dsLXFsOmJpbmRpbmct c2V0L3ZhcjpyZWxhdGl2ZWZuYW1lL0ByZGY6cmVzb3VyY2UiLz4JCQkNCgkJ ICAgICAgCSwgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im93bC1xbDpiaW5kaW5n LXNldC92YXI6cmVsYXRpdmVsbmFtZS9AcmRmOnJlc291cmNlIi8+CQkJDQoJ CQk8L3hzbDplbGVtZW50Pg0KDQoJCTwvdGQ+DQoJPC90cj4NCgk8L3hzbDpp Zj4NCiAgPC94c2w6dGVtcGxhdGU+DQo8L3hzbDpzdHlsZXNoZWV0Pg0KDQo= --Herd_of_Hippopotamuses_146_000 Content-Type: TEXT/plain; name="sitemap.xmap"; charset=us-ascii; x-unix-mode=0644 Content-Description: sitemap.xmap Content-MD5: 2jrPC33XOjz8jOTY+y5t2w== false false false xalan true false false false xsltc true false false false xsltc true -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd org.apache.cocoon.SessionState --Herd_of_Hippopotamuses_146_000 Content-Type: TEXT/html; name="welcome.html"; x-unix-mode=0644 Content-Transfer-Encoding: BASE64 Content-Description: welcome.html Content-MD5: xROX53F+DryQ2XQxra5uag== PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGh0bWw+ CiAgPGhlYWQ+CiAgICA8dGl0bGU+U2VtYW50aWMgV2ViIC0gUmVmZXJlbmNl IFByb2plY3QgLSBUaGUgUm95YWxzPC90aXRsZT4KICA8L2hlYWQ+CgogIDxi b2R5PgogICAgPGZvbnQgc2l6ZT0iMTAiIGNvbG9yPSJibHVlIj4KICAgICAg PHU+PGk+CiAgICAgICAgVGhlIFJveWFscyAKICAgICAgPC9pPjwvdT4KICAg IDwvZm9udD4KICAgIDxici8+CiAgICA8YnIvPgogICAgVGhpcyBpcyB0aGUg cmVmZXJlbmNlIHByb2plY3QgZm9yIHRoZSBwcmFjdGljYWwgY291cnNlICJT ZW1hbnRpYyBXZWIiLiAKICAgIFdlIHVzZWQgdGhlIEFwYWNoZSBDb2Nvb24g cGxhdGZvcm0gYW5kIHRoZQogICAgT1dRTFRyYW5zZm9ybWVyLiBPdGhlciB0 ZWNobmlxdWVzIGFyZSBPV0wsIE9XTC1RTCwgS0lGLC4uLgogICAgPGJyLz4K ICAgIDxici8+CQogICAgPGJyLz4KCiAgICA8Yj5QbGVhc2Ugc3RhcnQgaGVy ZTo8L2I+CiAgICA8YnIvPgogICAgPGEgaHJlZj0icm95YWw/aWQ9cHJpbmNl c3NlLWRpYW5hIj4KICAgICAgUHJpbmNlc3NlIERpYW5hPC9hPgoKICA8L2Jv ZHk+CjwvaHRtbD4K --Herd_of_Hippopotamuses_146_000--