Return-Path: Mailing-List: contact cocoon-dev-help@xml.apache.org; run by ezmlm Delivered-To: mailing list cocoon-dev@xml.apache.org Received: (qmail 8969 invoked from network); 21 Dec 2000 21:32:07 -0000 Received: from mail.ursus.ru (HELO ursus.ru) (195.96.66.197) by locus.apache.org with SMTP; 21 Dec 2000 21:32:07 -0000 Received: from [195.42.70.4] (HELO anthony) by ursus.ru (Stalker SMTP Server 1.7) with SMTP id S.0000180423; Fri, 22 Dec 2000 00:31:17 +0400 From: "Tagunov Anthony" To: "cocoon-users@xml.apache.org" , "cocoon-dev@xml.apache.org" Date: Fri, 22 Dec 2000 00:34:35 +0300 Reply-To: "Tagunov Anthony" Priority: Normal X-Mailer: PMMail 2000 Professional (2.10.2010) For Windows NT (4.0.1381;6) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_" Subject: [C1][contrib][xslt+] new processors, parameters for xslt, non-latin-1 symbols problem solution Message-Id: X-Spam-Rating: locus.apache.org 1.6.2 0/1000/N --_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_ Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 7bit Hello, everybody! We, developing with C1 have implemented plenty of things we find usefull and new would like to share one of our "enhancments:" to C1 (this all should be, of cource portable to C2) What this is: -- xsltp processor and taglib allow to put/get string parameters to/from a Hashtable assigned as an attribute to the request object -- XSLTProcessor patch retrives parameters from this Hashtable and passes into the xslt transformation. This allowes one to specify additional xsl:params for the future xslt transforms. -- additional feature a special tag in the processor and taglib allowes to get a request parameter, recode it for non-latin-1 cases and LATER USE IN THE XLST TRANSFORM (this was one of the greates motives to implement this: when we tried to access request parameters in the xslt transform and the parameters were actually encoded in UTF-8 or windows-1251 (cyrillics) we got 'em all wrong. That's why we implemented an extra Hashtable, put the corrected values there and made parameters in this Hashtable take precedence over parameters passed as request parameters A couple of examples is attaced too. Best regards, NNT Telecom Russia team (http://www.mavicanet.com -- non Cocoon project (yet:) http://www.gowap.ru, http://wap.mavica.ru -- Cocoon projects) --_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_ Content-Type: application/octet-stream; name="diff1.diff" Content-Transfer-Encoding: base64 SW5kZXg6IHhtbC1jb2Nvb24vc3JjL29yZy9hcGFjaGUvY29jb29uL3Byb2Nlc3Nvci94c2x0L1hT TFRQcm9jZXNzb3IuamF2YQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9jdnNwdWJsaWMveG1s LWNvY29vbi9zcmMvb3JnL2FwYWNoZS9jb2Nvb24vcHJvY2Vzc29yL3hzbHQvWFNMVFByb2Nlc3Nv ci5qYXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI0CmRpZmYgLXIxLjI0IFhTTFRQcm9jZXNz b3IuamF2YQoxNTFhMTUyLDE2NAo+ICAgICAgICAgLy8gdGVtLWFkZG9uCj4gICAgICAgICBIYXNo dGFibGUgaDE9KEhhc2h0YWJsZSlyZXF1ZXN0LmdldEF0dHJpYnV0ZSgiWFNMVFBhcmFtUHJvY2Vz c29yUGFyYW1zIik7Cj4gICAgICAgICBpZihoMSE9bnVsbCkgewo+ICAgICAgICAgCUVudW1lcmF0 aW9uIGhrPWgxLmtleXMoKTsKPiAgICAgICAgIAl3aGlsZShoay5oYXNNb3JlRWxlbWVudHMoKSkg ewo+ICAgICAgICAgCQlTdHJpbmcgdm49KFN0cmluZyloay5uZXh0RWxlbWVudCgpOwo+ICAgICAg ICAgCQlpZihpc1ZhbGlkTmFtZSh2bikpIHsKPiAJICAgICAgICAJCVN0cmluZyB2dj0oU3RyaW5n KWgxLmdldCh2bik7Cj4gICAgCSAgICAgCQlwYXJhbXMucHV0KHZuLHZ2KTsKPiAgICAJICAgICAJ fQo+ICAgICAgICAgCX0KPiAgICAgICAgIH0KPiAgICAgICAgIC8vCg== --_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_ Content-Type: application/octet-stream; name="XSLTParamProcessor.java" Content-Transfer-Encoding: base64 LyoNCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgICAgICAgICAgICAgICAgVGhlIEFwYWNoZSBT b2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMQ0KID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiANCiBD b3B5cmlnaHQgKEMpIEB5ZWFyQCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQogDQogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhLQ0KIHRpb24sIGFyZSBwZXJt aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCiAN CiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2YgIHNvdXJjZSBjb2RlIG11c3QgIHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0ICBub3RpY2UsDQogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiANCiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQogICAgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUg ZG9jdW1lbnRhdGlvbg0KICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUgZGlzdHJpYnV0aW9uLg0KIA0KIDMuIFRoZSBlbmQtdXNlciBkb2N1bWVudGF0aW9uIGluY2x1 ZGVkIHdpdGggdGhlIHJlZGlzdHJpYnV0aW9uLCBpZiBhbnksIG11c3QNCiAgICBpbmNsdWRlICB0 aGUgZm9sbG93aW5nICBhY2tub3dsZWRnbWVudDogICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgIHNv ZnR3YXJlDQogICAgZGV2ZWxvcGVkICBieSB0aGUgIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9u ICAoaHR0cDovL3d3dy5hcGFjaGUub3JnLykuIg0KICAgIEFsdGVybmF0ZWx5LCB0aGlzICBhY2tu b3dsZWRnbWVudCBtYXkgIGFwcGVhciBpbiB0aGUgc29mdHdhcmUgaXRzZWxmLCAgaWYNCiAgICBh bmQgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBhY2tub3dsZWRnbWVudHMgbm9ybWFsbHkgYXBw ZWFyLg0KIA0KIDQuIFRoZSBuYW1lcyAiQ29jb29uIiBhbmQgICJBcGFjaGUgU29mdHdhcmUgRm91 bmRhdGlvbiIgIG11c3Qgbm90IGJlIHVzZWQgdG8NCiAgICBlbmRvcnNlICBvciBwcm9tb3RlICBw cm9kdWN0cyBkZXJpdmVkICBmcm9tIHRoaXMgIHNvZnR3YXJlIHdpdGhvdXQgIHByaW9yDQogICAg d3JpdHRlbiBwZXJtaXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFj dA0KICAgIGFwYWNoZUBhcGFjaGUub3JnLg0KIA0KIDUuIFByb2R1Y3RzICBkZXJpdmVkIGZyb20g dGhpcyBzb2Z0d2FyZSBtYXkgbm90ICBiZSBjYWxsZWQgIkFwYWNoZSIsIG5vciBtYXkNCiAgICAi QXBhY2hlIiBhcHBlYXIgIGluIHRoZWlyIG5hbWUsICB3aXRob3V0IHByaW9yIHdyaXR0ZW4gcGVy bWlzc2lvbiAgb2YgdGhlDQogICAgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQogDQogVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTRUQgT1IgSU1Q TElFRCBXQVJSQU5USUVTLA0KIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQNCiBGSVRORVNTICBGT1IgQSBQ QVJUSUNVTEFSICBQVVJQT1NFIEFSRSAgRElTQ0xBSU1FRC4gIElOIE5PICBFVkVOVCBTSEFMTCAg VEhFDQogQVBBQ0hFIFNPRlRXQVJFICBGT1VOREFUSU9OICBPUiBJVFMgQ09OVFJJQlVUT1JTICBC RSBMSUFCTEUgRk9SICBBTlkgRElSRUNULA0KIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM LCAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMICBEQU1BR0VTIChJTkNMVS0NCiBESU5HLCBC VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UICBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOyBMT1NTDQogT0YgVVNFLCBEQVRBLCBPUiAgUFJPRklUUzsgT1IgQlVTSU5FU1MgIElO VEVSUlVQVElPTikgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTg0KIEFOWSAgVEhFT1JZIE9GIExJQUJJ TElUWSwgIFdIRVRIRVIgIElOIENPTlRSQUNULCAgU1RSSUNUIExJQUJJTElUWSwgIE9SIFRPUlQN CiAoSU5DTFVESU5HICBORUdMSUdFTkNFIE9SICBPVEhFUldJU0UpIEFSSVNJTkcgSU4gIEFOWSBX QVkgT1VUIE9GIFRIRSAgVVNFIE9GDQogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiANCiBUaGlzIHNvZnR3YXJlICBjb25z aXN0cyBvZiB2b2x1bnRhcnkgY29udHJpYnV0aW9ucyBtYWRlICBieSBtYW55IGluZGl2aWR1YWxz DQogb24gIGJlaGFsZiBvZiB0aGUgQXBhY2hlIFNvZnR3YXJlICBGb3VuZGF0aW9uIGFuZCB3YXMg IG9yaWdpbmFsbHkgY3JlYXRlZCBieQ0KIFN0ZWZhbm8gTWF6em9jY2hpICA8c3RlZmFub0BhcGFj aGUub3JnPi4gRm9yIG1vcmUgIGluZm9ybWF0aW9uIG9uIHRoZSBBcGFjaGUgDQogU29mdHdhcmUg Rm91bmRhdGlvbiwgcGxlYXNlIHNlZSA8aHR0cDovL3d3dy5hcGFjaGUub3JnLz4uDQogKi8NCg0K cGFja2FnZSBjb20ubWF2aWNhbmV0LmNvY29vbi5wcm9jZXNzb3IueHNsdHA7DQoNCmltcG9ydCBq YXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247DQppbXBvcnQgamF2YS51dGlsLlN0 YWNrOw0KaW1wb3J0IGphdmEudXRpbC5EaWN0aW9uYXJ5Ow0KaW1wb3J0IGphdmEudXRpbC5IYXNo dGFibGU7DQppbXBvcnQgamF2YS51dGlsLlZlY3RvcjsNCmltcG9ydCBqYXZhLnV0aWwuRW51bWVy YXRpb247DQppbXBvcnQgb3JnLnczYy5kb20uKjsNCmltcG9ydCBvcmcuYXBhY2hlLmNvY29vbi5w YXJzZXIuUGFyc2VyOw0KaW1wb3J0IG9yZy5hcGFjaGUuY29jb29uLmxvZ2dlci5Mb2dnZXI7DQpp bXBvcnQgb3JnLmFwYWNoZS5jb2Nvb24uZnJhbWV3b3JrLio7DQppbXBvcnQgb3JnLmFwYWNoZS5j b2Nvb24ucHJvY2Vzc29yLlByb2Nlc3NvcjsNCmltcG9ydCBvcmcuYXBhY2hlLmNvY29vbi5wcm9j ZXNzb3IuUHJvY2Vzc29yRXhjZXB0aW9uOw0KaW1wb3J0IG9yZy5hcGFjaGUuY29jb29uLlV0aWxz Ow0KaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC4qOw0KLy9pbXBvcnQgb3JnLmFwYWNoZS5jb2Nv b24ucHJvY2Vzc29yLnhzcC5YU1BVdGlsOw0KaW1wb3J0IGphdmEuaW8uRmlsZTsNCg0KcHVibGlj IGNsYXNzIFhTTFRQYXJhbVByb2Nlc3NvciBleHRlbmRzIEFic3RyYWN0QWN0b3IgaW1wbGVtZW50 cyBQcm9jZXNzb3IsIFN0YXR1cywgQ29uZmlndXJhYmxlLCBvcmcuYXBhY2hlLmNvY29vbi5EZWZh dWx0cyAgew0KDQoJcHJvdGVjdGVkIGJvb2xlYW4gZGVidWcgPSBmYWxzZTsNCg0KCXB1YmxpYyBz dGF0aWMgZmluYWwgU3RyaW5nIFhNTEJBU0VfTkFNRVNQQUNFX1VSSSA9ICJodHRwOi8vd3d3Lncz Lm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiOw0KICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcg WE1MQkFTRV9BVFRSSUJVVEUgPSAiYmFzZSI7DQogICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmlu ZyBYUFVUID0gInhzbHRwOnNldC14c2x0LXBhcmFtIjsNCiAgIHB1YmxpYyBzdGF0aWMgZmluYWwg U3RyaW5nIFhQQVNTID0gInhzbHRwOnBhc3MteHNsdC1wYXJhbSI7DQogICBwdWJsaWMgc3RhdGlj IGZpbmFsIFN0cmluZyBYR0VUID0gInhzbHRwOmdldC14c2x0LXBhcmFtIjsNCiAgIHB1YmxpYyBz dGF0aWMgZmluYWwgU3RyaW5nIFhBVFRSTkFNRSA9ICJuYW1lIjsNCiAgIHB1YmxpYyBzdGF0aWMg ZmluYWwgU3RyaW5nIFhBVFRSUEFTU01PREUgPSAibW9kZSI7DQogICBwdWJsaWMgc3RhdGljIGZp bmFsIFN0cmluZyBYSEFTSE5BTUUgPSAiWFNMVFBhcmFtUHJvY2Vzc29yUGFyYW1zIjsNCg0KICAg cHJvdGVjdGVkIENvbmZpZ3VyYXRpb25zIGNvbmZzOw0KICAgcHJvdGVjdGVkIFBhcnNlciBwYXJz ZXI7DQogICBwcm90ZWN0ZWQgTG9nZ2VyIGxvZ2dlcjsNCiAgIHByb3RlY3RlZCBPYmplY3QgY29u dGV4dDsNCg0KICAgcHVibGljIHZvaWQgaW5pdChDb25maWd1cmF0aW9ucyBjb25mKQ0KICAgew0K ICAgICAgdGhpcy5jb25mcz1jb25mOw0KICAgfQ0KDQogICBwdWJsaWMgdm9pZCBpbml0KERpcmVj dG9yIGRpcmVjdG9yKQ0KICAgew0KICAgCXN1cGVyLmluaXQoZGlyZWN0b3IpOw0KICAgICAgcGFy c2VyICA9IChQYXJzZXIpZGlyZWN0b3IuZ2V0QWN0b3IoInBhcnNlciIpOw0KICAgICAgbG9nZ2Vy ICA9IChMb2dnZXIpZGlyZWN0b3IuZ2V0QWN0b3IoImxvZ2dlciIpOw0KICAgICAgY29udGV4dCA9 IGRpcmVjdG9yLmdldEFjdG9yKCJjb250ZXh0Iik7DQogICB9DQoNCiAgIHB1YmxpYyBEb2N1bWVu dCBwcm9jZXNzKERvY3VtZW50IGRvY3VtZW50LCBEaWN0aW9uYXJ5IHBhcmFtZXRlcnMpIHRocm93 cyBFeGNlcHRpb24NCiAgIHsNCgkJSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3Q9KEh0dHBTZXJ2 bGV0UmVxdWVzdClwYXJhbWV0ZXJzLmdldCgicmVxdWVzdCIpOw0KCQlIYXNodGFibGUgaD0oSGFz aHRhYmxlKXJlcXVlc3QuZ2V0QXR0cmlidXRlKFhIQVNITkFNRSk7DQoJCWlmKGg9PW51bGwpIGg9 bmV3IEhhc2h0YWJsZSgpOw0KCQlOb2RlTGlzdCBubD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn TmFtZShYUEFTUyk7DQoJCWlmKG5sIT1udWxsKSBpZihubC5nZXRMZW5ndGgoKT4wKSB7DQoJCQl3 aGlsZShubC5nZXRMZW5ndGgoKT4wKSB7DQoJCQkJRWxlbWVudCB4cD0oRWxlbWVudClubC5pdGVt KDApOw0KCQkJCXRyeXsNCgkJCQkJU3RyaW5nIHhuYW1lPXhwLmdldEF0dHJpYnV0ZShYQVRUUk5B TUUpOw0KCQkJCQlTdHJpbmcgeG1vZGU9eHAuZ2V0QXR0cmlidXRlKFhBVFRSUEFTU01PREUpOw0K CQkJCQlpZih4bmFtZS5sZW5ndGgoKT09MCkgdGhyb3cgbmV3IEV4Y2VwdGlvbigiIik7DQoJCQkJ CVN0cmluZyB4dj1yZXF1ZXN0LmdldFBhcmFtZXRlcih4bmFtZSk7DQoJCQkJCWlmKCF4bW9kZS5l cXVhbHMoIiIpKSB4dj1yZWNvZGUoeHYseG1vZGUpOw0KCQkJCQloLnB1dCh4bmFtZSx4dik7DQoJ CQkJfWNhdGNoKEV4Y2VwdGlvbiBlKSB7fQ0KCQkJCXhwLmdldFBhcmVudE5vZGUoKS5yZW1vdmVD aGlsZCh4cCk7DQoJCQl9DQoJCX0NCgkJbmw9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo WFBVVCk7DQoJCWlmKG5sIT1udWxsKSBpZihubC5nZXRMZW5ndGgoKT4wKSB7DQoJCQl3aGlsZShu bC5nZXRMZW5ndGgoKT4wKSB7DQoJCQkJRWxlbWVudCB4cD0oRWxlbWVudClubC5pdGVtKDApOw0K CQkJCXRyeXsNCgkJCQkJU3RyaW5nIHhuYW1lPXhwLmdldEF0dHJpYnV0ZShYQVRUUk5BTUUpOw0K CQkJCQlpZih4bmFtZS5sZW5ndGgoKT09MCkgdGhyb3cgbmV3IEV4Y2VwdGlvbigiIik7DQoJCQkJ CVN0cmluZyB4dj0iIjsNCgkJCQkJTm9kZUxpc3QgbmwxPXhwLmdldENoaWxkTm9kZXMoKTsNCgkJ CQkJaWYobmwxLmdldExlbmd0aCgpPT0wKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCIiKTsNCgkJCQkJ Zm9yKGludCBpPTA7aTxubDEuZ2V0TGVuZ3RoKCk7aSsrKSB7DQoJCQkJCQlpZihubDEuaXRlbShp KSBpbnN0YW5jZW9mIFRleHQpIHsNCgkJCQkJCQl4dis9bmwxLml0ZW0oaSkuZ2V0Tm9kZVZhbHVl KCk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJaC5wdXQoeG5hbWUseHYpOw0KCQkJCX1jYXRjaChF eGNlcHRpb24gZSkge30NCgkJCQl4cC5nZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQoeHApOw0K CQkJfQ0KCQl9DQoJCXJlcXVlc3Quc2V0QXR0cmlidXRlKFhIQVNITkFNRSxoKTsNCgkJbmw9ZG9j dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoWEdFVCk7DQoJCWlmKG5sIT1udWxsKSBpZihubC5n ZXRMZW5ndGgoKT4wKSB7DQoJCQloPShIYXNodGFibGUpcmVxdWVzdC5nZXRBdHRyaWJ1dGUoWEhB U0hOQU1FKTsNCgkJCXdoaWxlKG5sLmdldExlbmd0aCgpPjApIHsNCgkJCQlFbGVtZW50IHhwPShF bGVtZW50KW5sLml0ZW0oMCk7DQoJCQkJU3RyaW5nIHh2PW51bGw7DQoJCQkJdHJ5ew0KCQkJCQlT dHJpbmcgeG5hbWU9eHAuZ2V0QXR0cmlidXRlKFhBVFRSTkFNRSk7DQoJCQkJCWlmKHhuYW1lLmxl bmd0aCgpPT0wKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCIiKTsNCgkJCQkJaWYoaCE9bnVsbCkgeHY9 KFN0cmluZyloLmdldCh4bmFtZSk7DQoJCQkJCWlmKHh2PT1udWxsKSB7DQoJCQkJCQlpZih4bmFt ZS5sZW5ndGgoKT4yKSB7DQoJCQkJCQkJaWYoeG5hbWUuc3Vic3RyaW5nKDAsMikuZXF1YWxzKCJD XyIpKSB7DQoJCQkJCQkJCVN0cmluZyBjbjE9eG5hbWUuc3Vic3RyaW5nKDIpOw0KCQkJCQkgICAg ICAgIAlDb29raWVbXSBjb29raWVzID0gcmVxdWVzdC5nZXRDb29raWVzICgpOw0KCQkJCQkgICAg ICAgIAlpZiAoY29va2llcyAhPSBudWxsKSB7DQoJCQkJCSAgICAgICAgCQlpbnQgaTsNCgkJCQkg ICAgICAgICAgICAJZm9yIChpID0gMDsgaSA8IGNvb2tpZXMubGVuZ3RoICYmICFjb29raWVzW2ld LmdldE5hbWUoKS5lcXVhbHMoY24xKTsgaSsrKSB7fQ0KCQkJCSAgICAgICAgICAgIAlpZihpPGNv b2tpZXMubGVuZ3RoKSB4dj1jb29raWVzW2ldLmdldFZhbHVlKCk7DQoJCQkJCQkgICAgICB9DQoJ CQkJCQkJfWVsc2UgaWYoeG5hbWUuc3Vic3RyaW5nKDAsMikuZXF1YWxzKCJSXyIpKSB7DQoJCQkJ CQkJCVN0cmluZyBybjE9eG5hbWUuc3Vic3RyaW5nKDIpOw0KCQkJCQkJCQl4dj1yZXF1ZXN0Lmdl dEhlYWRlcihybjEpOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCWlmKHh2PT1udWxsKSB4dj1y ZXF1ZXN0LmdldFBhcmFtZXRlcih4bmFtZSk7DQoJCQkJCX0NCgkJCQkJaWYoeHY9PW51bGwpIHh2 PSIiOw0KCQkJCX1jYXRjaChFeGNlcHRpb24gZSkge2lmKHh2PT1udWxsKSB4dj0iIjt9DQoJCQkJ eHAuZ2V0UGFyZW50Tm9kZSgpLnJlcGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh4 dikseHApOw0KCQkJfQ0KCQl9DQogICAgICByZXR1cm4gZG9jdW1lbnQ7DQogIH0NCiAgDQogIHN0 YXRpYyBTdHJpbmcgcmVjb2RlKCBTdHJpbmcgdmFsdWUsIFN0cmluZyBtb2RlICkgdGhyb3dzIFVu c3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb257DQogICAgLy90aGlzIGlzIGEgZml4IGZvciBtaXNi ZWhhdmlvdXIgd2l0aCBUb21jYXQgKGlmIHdlIGhhdmUgYSBVVEYtOCBwYWdlIGluIGJyb3dzZXIs IGl0IHNlbmRzIGFsbA0KICAgIC8vdGhlIGZvcm0gZGF0YSBsaWtlIHRoYXQgdmFsdWUgaXMgY29u dmVydGVkIHRvIFVURi04IGFuZCB0aGVuIHRoaXMgc3RyaW5nIGlzIFVSTC1lbmNvZGVkDQogICAg Ly9Ub21jYXQgKGRvbid0IGtub3cgYWJvdXQgdGhlIHJlc3Qgb2Ygc2VydmxldCBDb250YWluZXJz LCBidXQgSSBndWVzcyB0aGV5IGRvIHRoZSBzYW1lDQogICAgLy9hcyB0aGVyZSdzIG5vIGluZm8g aW4gdGhlIHJlcXVlc3QgdGhhdCB3b3VsZCBwb2ludCBvdXQgdGhlIGZhY3QgdGhlIHBhcmFtcyBh cmUgVVRGLTggYW5kDQogICAgLy9ub3QgODg1OS0xKSBtaXN0cmVhdHMgJ2VtIGhlcmUncyBhIHdv cmsgYXJvdW5kICh3ZSByZWFzc2VtbGUgb3VyIGNoYXIgYmFjayBpbiBwcm9wZXIgd2F5DQogICAg Ynl0ZSBwYXJhbWV0cltdID0gdmFsdWUuZ2V0Qnl0ZXMoIjg4NTlfMSIpOw0KICAgIHJldHVybiBu ZXcgU3RyaW5nKHBhcmFtZXRyLCAwLCBwYXJhbWV0ci5sZW5ndGgsIG1vZGUpOw0KICB9DQoNCiAg ICBwdWJsaWMgYm9vbGVhbiBoYXNDaGFuZ2VkKE9iamVjdCBjb250ZXh0KSB7DQogICAgICAgIHJl dHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICBwdWJsaWMgYm9vbGVhbiBpc0NhY2hlYWJsZShIdHRw U2VydmxldFJlcXVlc3QgcmVxdWVzdCkgew0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoN CiAgIHB1YmxpYyBTdHJpbmcgZ2V0U3RhdHVzKCkNCiAgIHsNCiAgICAgIHJldHVybiAiWFNMVFBh cmFtUHJvY2Vzc29yIjsNCiAgIH0NCn0NCg== --_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_ Content-Type: application/octet-stream; name="XSPXSLTPLibrary.java" Content-Transfer-Encoding: base64 LyoNCg0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICAgICAgICAgICAgICAgICBUaGUgQXBhY2hl IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4xDQogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIA0K IENvcHlyaWdodCAoQykgMTk5OS0yMDAwIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCiANCiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2EtDQogdGlvbiwgYXJl IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0 Og0KIA0KIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiAgc291cmNlIGNvZGUgbXVzdCAgcmV0YWluIHRo ZSBhYm92ZSBjb3B5cmlnaHQgIG5vdGljZSwNCiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KIA0KIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCiAg ICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu IHRoZSBkb2N1bWVudGF0aW9uDQogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3 aXRoIHRoZSBkaXN0cmlidXRpb24uDQogDQogMy4gVGhlIGVuZC11c2VyIGRvY3VtZW50YXRpb24g aW5jbHVkZWQgd2l0aCB0aGUgcmVkaXN0cmlidXRpb24sIGlmIGFueSwgbXVzdA0KICAgIGluY2x1 ZGUgIHRoZSBmb2xsb3dpbmcgIGFja25vd2xlZGdtZW50OiAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyAgc29mdHdhcmUNCiAgICBkZXZlbG9wZWQgIGJ5IHRoZSAgQXBhY2hlIFNvZnR3YXJlIEZvdW5k YXRpb24gIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvKS4iDQogICAgQWx0ZXJuYXRlbHksIHRoaXMg IGFja25vd2xlZGdtZW50IG1heSAgYXBwZWFyIGluIHRoZSBzb2Z0d2FyZSBpdHNlbGYsICBpZg0K ICAgIGFuZCB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IGFja25vd2xlZGdtZW50cyBub3JtYWxs eSBhcHBlYXIuDQogDQogNC4gVGhlIG5hbWVzICJDb2Nvb24iIGFuZCAgIkFwYWNoZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uIiAgbXVzdCBub3QgYmUgdXNlZCB0bw0KICAgIGVuZG9yc2UgIG9yIHByb21v dGUgIHByb2R1Y3RzIGRlcml2ZWQgIGZyb20gdGhpcyAgc29mdHdhcmUgd2l0aG91dCAgcHJpb3IN CiAgICB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBj b250YWN0DQogICAgYXBhY2hlQGFwYWNoZS5vcmcuDQogDQogNS4gUHJvZHVjdHMgIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlIG1heSBub3QgIGJlIGNhbGxlZCAiQXBhY2hlIiwgbm9yIG1heQ0K ICAgICJBcGFjaGUiIGFwcGVhciAgaW4gdGhlaXIgbmFtZSwgIHdpdGhvdXQgcHJpb3Igd3JpdHRl biBwZXJtaXNzaW9uICBvZiB0aGUNCiAgICBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4NCiAN CiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NFRCBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsDQogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KIEZJVE5FU1MgIEZP UiBBIFBBUlRJQ1VMQVIgIFBVUlBPU0UgQVJFICBESVNDTEFJTUVELiAgSU4gTk8gIEVWRU5UIFNI QUxMICBUSEUNCiBBUEFDSEUgU09GVFdBUkUgIEZPVU5EQVRJT04gIE9SIElUUyBDT05UUklCVVRP UlMgIEJFIExJQUJMRSBGT1IgIEFOWSBESVJFQ1QsDQogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ RUNJQUwsICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgIERBTUFHRVMgKElOQ0xVLQ0KIERJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgIE9GIFNVQlNUSVRVVEUgR09PRFMg T1IgU0VSVklDRVM7IExPU1MNCiBPRiBVU0UsIERBVEEsIE9SICBQUk9GSVRTOyBPUiBCVVNJTkVT UyAgSU5URVJSVVBUSU9OKSAgSE9XRVZFUiBDQVVTRUQgQU5EIE9ODQogQU5ZICBUSEVPUlkgT0Yg TElBQklMSVRZLCAgV0hFVEhFUiAgSU4gQ09OVFJBQ1QsICBTVFJJQ1QgTElBQklMSVRZLCAgT1Ig VE9SVA0KIChJTkNMVURJTkcgIE5FR0xJR0VOQ0UgT1IgIE9USEVSV0lTRSkgQVJJU0lORyBJTiAg QU5ZIFdBWSBPVVQgT0YgVEhFICBVU0UgT0YNCiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KIA0KIFRoaXMgc29mdHdhcmUg IGNvbnNpc3RzIG9mIHZvbHVudGFyeSBjb250cmlidXRpb25zIG1hZGUgIGJ5IG1hbnkgaW5kaXZp ZHVhbHMNCiBvbiAgYmVoYWxmIG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgIEZvdW5kYXRpb24gYW5k IHdhcyAgb3JpZ2luYWxseSBjcmVhdGVkIGJ5DQogU3RlZmFubyBNYXp6b2NjaGkgIDxzdGVmYW5v QGFwYWNoZS5vcmc+LiBGb3IgbW9yZSAgaW5mb3JtYXRpb24gb24gdGhlIEFwYWNoZSANCiBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBwbGVhc2Ugc2VlIDxodHRwOi8vd3d3LmFwYWNoZS5vcmcvPi4NCiAN CiAqLw0KDQpwYWNrYWdlIGNvbS5tYXZpY2FuZXQuY29jb29uLnByb2Nlc3Nvci54c3AubGlicmFy eTsNCg0KaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsNCmltcG9ydCBqYXZhLnV0aWwuVmVj dG9yOw0KDQoNCi8vaW1wb3J0IGphdmF4LnNlcnZsZXQuKjsNCi8vaW1wb3J0IGphdmF4LnNlcnZs ZXQuaHR0cC4qOw0KaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7 DQppbXBvcnQgamF2YXguc2VydmxldC5odHRwLkNvb2tpZTsNCg0KDQppbXBvcnQgamF2YS51dGls Lkhhc2h0YWJsZTsNCmltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247 DQppbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7DQppbXBvcnQgb3JnLnczYy5kb20uTm9kZTsN CmltcG9ydCBvcmcuYXBhY2hlLmNvY29vbi5wcm9jZXNzb3IuUHJvY2Vzc29yRXhjZXB0aW9uOw0K aW1wb3J0IGNvbS5tYXZpY2FuZXQuY29jb29uLnByb2Nlc3Nvci54c2x0cC5YU0xUUGFyYW1Qcm9j ZXNzb3I7DQoNCnB1YmxpYyBjbGFzcyBYU1BYU0xUUExpYnJhcnkgew0KDQogIHB1YmxpYyBzdGF0 aWMgU3RyaW5nIHhnZXQoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QsU3RyaW5nIHhuYW1lKSB0 aHJvd3MgRXhjZXB0aW9uIHsgDQoJaWYoeG5hbWUubGVuZ3RoKCk9PTApIHRocm93IG5ldyBFeGNl cHRpb24oIiIpOw0KCUhhc2h0YWJsZSBoPShIYXNodGFibGUpcmVxdWVzdC5nZXRBdHRyaWJ1dGUo WFNMVFBhcmFtUHJvY2Vzc29yLlhIQVNITkFNRSk7DQoJU3RyaW5nIHh2PW51bGw7DQoJaWYoaCE9 bnVsbCkgeHY9KFN0cmluZyloLmdldCh4bmFtZSk7DQoJaWYoeHY9PW51bGwpIHsNCgkJaWYoeG5h bWUubGVuZ3RoKCk+Mikgew0KCQkJaWYoeG5hbWUuc3Vic3RyaW5nKDAsMikuZXF1YWxzKCJDXyIp KSB7DQoJCQkJU3RyaW5nIGNuMT14bmFtZS5zdWJzdHJpbmcoMik7DQoJICAgICAgICAJQ29va2ll W10gY29va2llcyA9IHJlcXVlc3QuZ2V0Q29va2llcyAoKTsNCgkgICAgICAgIAlpZiAoY29va2ll cyAhPSBudWxsKSB7DQogICAJICAgIAkJaW50IGk7DQogICAgICAgICAgICAJZm9yIChpID0gMDsg aSA8IGNvb2tpZXMubGVuZ3RoICYmICFjb29raWVzW2ldLmdldE5hbWUoKS5lcXVhbHMoY24xKTsg aSsrKSB7fQ0KCQkgICAgICAgICAgIAlpZihpPGNvb2tpZXMubGVuZ3RoKSB4dj1jb29raWVzW2ld LmdldFZhbHVlKCk7DQoJCSAgICAgIH0NCgkJCX1lbHNlIGlmKHhuYW1lLnN1YnN0cmluZygwLDIp LmVxdWFscygiUl8iKSkgew0KCQkJCVN0cmluZyBybjE9eG5hbWUuc3Vic3RyaW5nKDIpOw0KCQkJ CXh2PXJlcXVlc3QuZ2V0SGVhZGVyKHJuMSk7DQoJCQl9DQoJCX0NCgkJaWYoeHY9PW51bGwpIHh2 PXJlcXVlc3QuZ2V0UGFyYW1ldGVyKHhuYW1lKTsNCgl9DQoJaWYoeHY9PW51bGwpIHh2PSIiOw0K CXJldHVybiB4djsNCiAgfQ0KICBwdWJsaWMgc3RhdGljIHZvaWQgeHB1dChIdHRwU2VydmxldFJl cXVlc3QgcmVxdWVzdCxTdHJpbmcgeG4sU3RyaW5nIHN2KSB0aHJvd3MgRXhjZXB0aW9uIHsNCglI YXNodGFibGUgaD0oSGFzaHRhYmxlKXJlcXVlc3QuZ2V0QXR0cmlidXRlKFhTTFRQYXJhbVByb2Nl c3Nvci5YSEFTSE5BTUUpOw0KCWlmKGg9PW51bGwpIGg9bmV3IEhhc2h0YWJsZSgpOw0KCWgucHV0 KHhuLHN2KTsNCglyZXF1ZXN0LnNldEF0dHJpYnV0ZShYU0xUUGFyYW1Qcm9jZXNzb3IuWEhBU0hO QU1FLGgpOw0KICB9DQogIHB1YmxpYyBzdGF0aWMgdm9pZCB4cGFzcyhIdHRwU2VydmxldFJlcXVl c3QgcmVxdWVzdCxTdHJpbmcgeG4sU3RyaW5nIG1vZGUpIHRocm93cyBFeGNlcHRpb24geyANCiAg CVN0cmluZyB4dj1yZXF1ZXN0LmdldFBhcmFtZXRlcih4bik7DQogIAlpZih4dj09bnVsbCkgeHY9 IiI7DQogIAlpZihtb2RlLmxlbmd0aCgpPjApIHh2PXJlY29kZSh4dixtb2RlKTsNCiAgCXhwdXQo cmVxdWVzdCx4bix4dik7DQogIH0NCiAgc3RhdGljIFN0cmluZyByZWNvZGUoIFN0cmluZyB2YWx1 ZSwgU3RyaW5nIG1vZGUgKSB0aHJvd3MgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbnsNCiAg ICAvL3RoaXMgaXMgYSBmaXggZm9yIG1pc2JlaGF2aW91ciB3aXRoIFRvbWNhdCAoaWYgd2UgaGF2 ZSBhIFVURi04IHBhZ2UgaW4gYnJvd3NlciwgaXQgc2VuZHMgYWxsDQogICAgLy90aGUgZm9ybSBk YXRhIGxpa2UgdGhhdCB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gVVRGLTggYW5kIHRoZW4gdGhpcyBz dHJpbmcgaXMgVVJMLWVuY29kZWQNCiAgICAvL1RvbWNhdCAoZG9uJ3Qga25vdyBhYm91dCB0aGUg cmVzdCBvZiBzZXJ2bGV0IENvbnRhaW5lcnMsIGJ1dCBJIGd1ZXNzIHRoZXkgZG8gdGhlIHNhbWUN CiAgICAvL2FzIHRoZXJlJ3Mgbm8gaW5mbyBpbiB0aGUgcmVxdWVzdCB0aGF0IHdvdWxkIHBvaW50 IG91dCB0aGUgZmFjdCB0aGUgcGFyYW1zIGFyZSBVVEYtOCBhbmQNCiAgICAvL25vdCA4ODU5LTEp IG1pc3RyZWF0cyAnZW0gaGVyZSdzIGEgd29yayBhcm91bmQgKHdlIHJlYXNzZW1sZSBvdXIgY2hh ciBiYWNrIGluIHByb3BlciB3YXkNCiAgICBieXRlIHBhcmFtZXRyW10gPSB2YWx1ZS5nZXRCeXRl cygiODg1OV8xIik7DQogICAgcmV0dXJuIG5ldyBTdHJpbmcocGFyYW1ldHIsIDAsIHBhcmFtZXRy Lmxlbmd0aCwgbW9kZSk7DQogIH0NCg0KfQ0K --_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_ Content-Type: text/plain; name="xsltp.txt" Content-Transfer-Encoding: base64 Y29jb29uLnByb3Blcmllcw0KcHJvY2Vzc29yLnR5cGUueHNsdHAgPSBjb20ubWF2aWNhbmV0LmNv Y29vbi5wcm9jZXNzb3IueHNsdHAuWFNMVFBhcmFtUHJvY2Vzc29yDQpwcm9jZXNzb3IueHNwLmxv Z2ljc2hlZXQueHNsdHAuamF2YSAgICA9IHJlc291cmNlOi8vY29tL21hdmljYW5ldC9jb2Nvb24v cHJvY2Vzc29yL3hzcC9saWJyYXJ5L2phdmEveHNsdHAueHNsDQoNCnhsbW5zOnhzbHRwPSJodHRw Oi8vY29tLm1hdmljYW5ldC5jb2Nvb24vMjAwMC9YU0xUUCINCg0KdGFnbGliIHhzbHRwOg0KPHhz bHRwOnNldC14c2x0LXBhcmFtIG5hbWU9Im5hbWUiPnZhbHVlPC94c2x0cDpzZXQteHNsdHAtcGFy YW0+IC0gcHV0cyBuYW1lPXZhbHVlIGludG8gaGFzaCBpbiByZXF1ZXN0DQo8eHNsdHA6Z2V0LXhz bHQtcGFyYW0gbmFtZT0ibmFtZSIvPiByZXR1cm5zIHZhbHVlIGZyb20gaGFzaCBvciAiIiBpZiBu byBleGlzdHMNCjx4c2x0cDpwYXNzLXhzbHQtcGFyYW0gbmFtZT0ibmFtZSIgbW9kZT0idW1vZGUi Lz4gLSBwYXNzZXMgbmFtZT12YWx1ZSBpbnRvIGhhc2ggZnJvbSByZXF1ZXN0LmdldFBhcnMoKQ0K DQp4c2x0cC1wcm9jZXNzb3INCjw/Y29jb29uLXByb2Nlc3NvciB0eXBlPSJ4c2x0cCI/Pg0KPHhz bHRwOnNldC14c2x0LXBhcmFtIG5hbWU9Im5hbWUiPnZhbHVlPC94c2x0cDpzZXQteHNsdHAtcGFy YW0+IC0gcHV0cyBuYW1lPXZhbHVlIGludG8gaGFzaCBpbiByZXF1ZXN0DQo8eHNsdHA6Z2V0LXhz bHQtcGFyYW0gbmFtZT0ibmFtZSIvPiByZXR1cm5zIHZhbHVlIGZyb20gaGFzaCBvciAiIiBpZiBu byBleGlzdHMNCjx4c2x0cDpwYXNzLXhzbHQtcGFyYW0gbmFtZT0ibmFtZSIgbW9kZT0idW1vZGUi Lz4gLSBwYXNzZXMgbmFtZT12YWx1ZSBpbnRvIGhhc2ggZnJvbSByZXF1ZXN0LmdldFBhcnMoKQ0K cGFyc2luZyBvcmRlcjoNCjEuIHB1dC9jdXQgYWxsIHBhc3MtcGFyYW1zDQoyLiBwdXQvY3V0IGFs bCBzZXQtcGFyYW1zDQozLiByZXBsYWNlIGFsbCBnZXQtcGFyYW1zIGJ5IHRob3NlIGZyb20gaGFz aCBpbiByZXF1ZXN0DQoNCg== --_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_ Content-Type: text/xml; name="xsltp.xsl" Content-Transfer-Encoding: base64 PD94bWwgdmVyc2lvbj0iMS4wIj8+DQoNCjx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiDQoJ eG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iDQoJeG1sbnM6 eHNwPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvMTk5OS9YU1AvQ29yZSINCiAgIHhtbG5zOnhzbHRw PSJodHRwOi8vd3d3Lm1hdmljYW5ldC5jb20vMjAwMC9YU0xUUCINCj4NCg0KPHhzbDp0ZW1wbGF0 ZSBtYXRjaD0ieHNwOnBhZ2UiPg0KCTx4c3A6cGFnZSA+DQoJPCEtLXhtbG5zOnBhcmdldD0iaHR0 cDovL3d3dy5tYXZpY2FuZXQuY29tLzIwMDAvUGFyZ2V0Ii0tPg0KCQk8eHNsOmFwcGx5LXRlbXBs YXRlcyBzZWxlY3Q9IkAqIi8+DQoJCTx4c3A6c3RydWN0dXJlPg0KCQkJPHhzcDppbmNsdWRlPmNv bS5tYXZpY2FuZXQuY29jb29uLnByb2Nlc3Nvci54c3AubGlicmFyeS5YU1BYU0xUUExpYnJhcnk8 L3hzcDppbmNsdWRlPg0KCQk8L3hzcDpzdHJ1Y3R1cmU+DQoJCTx4c2w6YXBwbHktdGVtcGxhdGVz Lz4NCgk8L3hzcDpwYWdlPg0KPC94c2w6dGVtcGxhdGU+DQoNCjx4c2w6dGVtcGxhdGUgbWF0Y2g9 InhzbHRwOnB1dC14c2x0LXBhcmFtIj4NCgkgIDx4c3A6bG9naWM+WFNQWFNMVFBMaWJyYXJ5Lnhw dXQocmVxdWVzdCwiPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IkBuYW1lIi8+IiwiPHhzbDp2YWx1ZS1v ZiBzZWxlY3Q9Ii4iLz4iKTs8L3hzcDpsb2dpYz4NCjwveHNsOnRlbXBsYXRlPg0KDQo8eHNsOnRl bXBsYXRlIG1hdGNoPSJ4c2x0cDpwYXNzLXhzbHQtcGFyYW0iPg0KCSAgPHhzcDpsb2dpYz5YU1BY U0xUUExpYnJhcnkueHBhc3MocmVxdWVzdCwiPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IkBuYW1lIi8+ IiwiPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9IkBtb2RlIi8+Iik7PC94c3A6bG9naWM+DQo8L3hzbDp0 ZW1wbGF0ZT4NCg0KPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ieHNsdHA6Z2V0LXhzbHQtcGFyYW0iPg0K CSAgPHhzcDpleHByPlhTUFhTTFRQTGlicmFyeS54Z2V0KHJlcXVlc3QsIjx4c2w6dmFsdWUtb2Yg c2VsZWN0PSJAbmFtZSIvPiIpPC94c3A6ZXhwcj4NCjwveHNsOnRlbXBsYXRlPg0KDQo8eHNsOnRl bXBsYXRlIG1hdGNoPSJAKnxub2RlKCkiIHByaW9yaXR5PSItMSI+DQogIDx4c2w6Y29weT48eHNs OmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9IkAqfG5vZGUoKSIvPjwveHNsOmNvcHk+DQo8L3hzbDp0 ZW1wbGF0ZT4NCg0KPC94c2w6c3R5bGVzaGVldD4NCg== --_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_ Content-Type: text/xml; name="xsltp3.xml" Content-Transfer-Encoding: base64 PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KCjw/Y29jb29uLXByb2Nlc3Mg dHlwZT0ieHNwIj8+Cjx4c3A6cGFnZSB4bWxuczp4c3A9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8x OTk5L1hTUC9Db3JlIiB4bWxuczp4ZWN1dGU9Imh0dHA6Ly93d3cubWF2aWNhbmV0LmNvbS8yMDAw L1hlY3V0ZSIgeG1sbnM6eHNsdHA9Imh0dHA6Ly93d3cubWF2aWNhbmV0LmNvbS8yMDAwL1hTTFRQ Ij4KCjxwYWdlIHhtbG5zOnhzbHRwPSJodHRwOi8vd3d3Lm1hdmljYW5ldC5jb20vMjAwMC9YU0xU UGFyYW1Qcm9jZXNzb3IiIHhtbG5zOnNtYWlsPSJodHRwOi8vd3d3Lm1hdmljYW5ldC5jb20vMjAw MC9TTWFpbCI+Cjx4c2x0cDpwYXNzLXhzbHQtcGFyYW0gbmFtZT0ibmFtZSIgbW9kZT0iVVRGLTgi Lz4KPHhzbHRwOnNldC14c2x0LXBhcmFtIG5hbWU9ImZyb20iPm5vbjJAbm9uLm5pPC94c2x0cDpz ZXQteHNsdC1wYXJhbT4KPHNtYWlsOnNlbmQ+Cjx0bz48eHNsdHA6Z2V0LXhzbHQtcGFyYW0gbmFt ZT0iZW1haWwiLz48L3RvPgo8ZnJvbT48eHNsdHA6Z2V0LXhzbHQtcGFyYW0gbmFtZT0iZnJvbSIv PjwvZnJvbT4KPHN1YmplY3Q+YWRzZjwvc3ViamVjdD4KPGJvZHk+ZnJvbSA8eHNsdHA6Z2V0LXhz bHQtcGFyYW0gbmFtZT0ibmFtZSIvPjwvYm9keT4KPGNoYXJzZXQ+a29pOC1yPC9jaGFyc2V0Pgo8 L3NtYWlsOnNlbmQ+CjwvcGFnZT4KPC94c3A6cGFnZT4K --_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_ Content-Type: text/xml; name="xsltp5.xml" Content-Transfer-Encoding: base64 PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KCjw/Y29jb29uLXByb2Nlc3Mg dHlwZT0ieHNsdHAiPz4KPD9jb2Nvb24tcHJvY2VzcyB0eXBlPSJ4c2x0Ij8+Cjw/eG1sLXN0eWxl c2hlZXQgaHJlZj0ieHNsdHA1LnhzbCIgdHlwZT0idGV4dC94c2wiPz4KCjxwYWdlIHhtbG5zOnhz bHRwPSJodHRwOi8vd3d3Lm1hdmljYW5ldC5jb20vMjAwMC9YU0xUUCI+Cjx4c2x0cDpwYXNzLXhz bHQtcGFyYW0gbmFtZT0ibmFtZSIgbW9kZT0iVVRGLTgiLz4KPHhzbHRwOnNldC14c2x0LXBhcmFt IG5hbWU9ImZyb20iPm5vbjJAbm9uLm5pPC94c2x0cDpzZXQteHNsdC1wYXJhbT4KPC9wYWdlPgo= --_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_ Content-Type: text/xml; name="xsltp5.xsl" Content-Transfer-Encoding: base64 PD94bWwgdmVyc2lvbj0iMS4wIj8+Cgo8eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIiB4bWxu czp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI+Cgo8eHNsOnBhcmFt IG5hbWU9ImZyb20iLz4KPHhzbDpwYXJhbSBuYW1lPSJuYW1lIi8+Cjx4c2w6cGFyYW0gbmFtZT0i cDIiLz4KCjx4c2w6dGVtcGxhdGUgbWF0Y2g9InBhZ2UiPgo8aHRtbD4KPGJvZHk+CmZyb20gPSA8 eHNsOnZhbHVlLW9mIHNlbGVjdD0iJGZyb20iLz4KPGJyLz4KbmFtZSA9IDx4c2w6dmFsdWUtb2Yg c2VsZWN0PSIkbmFtZSIvPgo8YnIvPgpwMiA9IDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkcDIiLz4K PGJyLz4KPC9ib2R5Pgo8L2h0bWw+CjwveHNsOnRlbXBsYXRlPgo8L3hzbDpzdHlsZXNoZWV0Pg== --_=_=_=IMA.BOUNDARY.G5XT9N138764=_=_=_--