X-Original-To: pgsql-patches-postgresql.org@postgresql.org Received: from localhost (wm.hub.org [200.46.204.128]) by postgresql.org (Postfix) with ESMTP id 285489FB29A for ; Thu, 3 Aug 2006 02:32:37 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.128]) (amavisd-new, port 10024) with ESMTP id 15618-09 for ; Thu, 3 Aug 2006 05:32:13 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey- Received: from linuxworld.com.au (unknown [203.34.46.50]) by postgresql.org (Postfix) with ESMTP id 311269FA48E for ; Thu, 3 Aug 2006 02:32:10 -0300 (ADT) Received: from linuxworld.com.au (IDENT:swm@localhost.localdomain [127.0.0.1]) by linuxworld.com.au (8.13.2/8.13.2) with ESMTP id k735V7cU004638; Thu, 3 Aug 2006 15:31:07 +1000 Received: from localhost (swm@localhost) by linuxworld.com.au (8.13.2/8.13.2/Submit) with ESMTP id k735V6MS004635; Thu, 3 Aug 2006 15:31:06 +1000 Date: Thu, 3 Aug 2006 15:31:06 +1000 (EST) From: Gavin Sherry To: Joe Conway cc: Tom Lane , pgsql-patches@postgresql.org Subject: Re: Values list-of-targetlists patch for comments (was Re: In-Reply-To: <44CFFD2D.8040906@joeconway.com> Message-ID: References: <44B69778.5050104@dunslane.net> <44B7ADFC.90205@dunslane.net> <44BC0432.3040509@joeconway.com> <44BC661F.80609@joeconway.com> <44BCD06C.3060409@calorieking.com> <44BCF1D4.3010807@dunslane.net> <5842.1153246741@sss.pgh.pa.us> <44BD8854.9060506@calorieking.com> <15212.1153279954@sss.pgh.pa.us> <44BDB2F5.7080003@joeconway.com> <44BEA710.6060700@joeconway.com> <23198.1153367887@sss.pgh.pa.us> <44BF0382.2010501@joeconway.com> <23454.1153370214@sss.pgh.pa.us> <44BF122F.1080200@joeconway.com> <23927.1153373971@sss.pgh.pa.us> <44C00E1E.1000405@joeconway.com> <14047.1153442773@sss.pgh.pa.us> <44C4451A.4010906@joeconway.com> <11495.1153757531@sss.pgh.pa.us> <44C4F625.2050304@joeconway.com> <12029.1153760969@sss.pgh.pa.us> <44CC0A66.6070903@joeconway.com> <16429.1154463351@sss.pgh.pa.us> <44CFBC78.2020508@joeconway.com> <27359.1154474195@sss.pgh.pa.us> <44CFFD2D.8040906@joeconway.com> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="583741998-539135385-1154582918=:4590" Content-ID: X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=3.816 tagged_above=0 required=5 tests=SPF_HELO_SOFTFAIL, SPF_SOFTFAIL X-Spam-Level: *** X-Archive-Number: 200608/63 X-Sequence-Number: 20579 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --583741998-539135385-1154582918=:4590 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: Docs and regression tests attached. One slightly annoying thing is this: --- regression=# declare foo cursor with hold for VALUES(1,2), (3, 4); DECLARE CURSOR regression=# declare foo2 cursor with hold for (VALUES(1,2), (3, 4)) as foo(i, j); ERROR: syntax error at or near "as" LINE 1: ...e foo2 cursor with hold for (VALUES(1,2), (3, 4)) as foo(i, ... --- Now, we can just rewrite the second query as: --- declare foo2 cursor with hold for select * from (VALUES(1,2), (3, 4)) as foo(i, j); --- but it's not immediately obvious. Not worth busting up the grammar for it, though. And, it's not spec. Gavin --583741998-539135385-1154582918=:4590 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="values_doc_test.diff" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="values_doc_test.diff" SW5kZXg6IGRvYy9zcmMvc2dtbC9yZWYvZGVjbGFyZS5zZ21sDQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3Vzci9sb2NhbC9jdnNyb290 L3Bnc3FsL2RvYy9zcmMvc2dtbC9yZWYvZGVjbGFyZS5zZ21sLHYNCnJldHJp ZXZpbmcgcmV2aXNpb24gMS4zNw0KZGlmZiAtYyAtcCAtcjEuMzcgZGVjbGFy ZS5zZ21sDQoqKiogZG9jL3NyYy9zZ21sL3JlZi9kZWNsYXJlLnNnbWwJMjYg RmViIDIwMDYgMDM6MjA6NDYgLTAwMDAJMS4zNw0KLS0tIGRvYy9zcmMvc2dt bC9yZWYvZGVjbGFyZS5zZ21sCTMgQXVnIDIwMDYgMDQ6MTg6MjggLTAwMDAN CioqKioqKioqKioqKioqKiBERUNMQVJFIGxpYWhvbmEgQ1VSU09SIEZPUiBT RUxFQ1QgKiBGUk9NDQoqKiogMjc1LDI4MCAqKioqDQotLS0gMjc1LDI4OCAt LS0tDQogICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJzcWwtZmV0Y2giIGVuZHRl cm09InNxbC1mZXRjaC10aXRsZSI+IGZvciBtb3JlDQogICAgIGV4YW1wbGVz IG9mIGN1cnNvciB1c2FnZS4NCiAgICA8L3BhcmE+DQorIA0KKyAgIDxwYXJh Pg0KKyAgICBUaGUgY3Vyc29yIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5xdWVyeTwvPiBjbGF1c2UgY2FuIGFsc28NCisgICAgYmUgYSA8bGl0 ZXJhbD5WQUxVRVM8Lz4gbGlzdDoNCisgPHByb2dyYW1saXN0aW5nPg0KKyBE RUNMQVJFIGNvbHMgQ1VSU09SIEZPUiBWQUxVRVMoMSwyKSwgKDMsNCk7DQor IDwvcHJvZ3JhbWxpc3Rpbmc+DQorICAgPC9wYXJhPg0KICAgPC9yZWZzZWN0 MT4NCiAgDQogICA8cmVmc2VjdDE+DQpJbmRleDogZG9jL3NyYy9zZ21sL3Jl Zi9kZWxldGUuc2dtbA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp bGU6IC91c3IvbG9jYWwvY3Zzcm9vdC9wZ3NxbC9kb2Mvc3JjL3NnbWwvcmVm L2RlbGV0ZS5zZ21sLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNg0KZGlm ZiAtYyAtcCAtcjEuMjYgZGVsZXRlLnNnbWwNCioqKiBkb2Mvc3JjL3NnbWwv cmVmL2RlbGV0ZS5zZ21sCTIyIEphbiAyMDA2IDA1OjIwOjMzIC0wMDAwCTEu MjYNCi0tLSBkb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sCTMgQXVnIDIw MDYgMDM6MjY6NTggLTAwMDANCioqKioqKioqKioqKioqKiBERUxFVEUgRlJP TSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9DQoqKiogMTE3LDEyMiAq KioqDQotLS0gMTE3LDEyOCAtLS0tDQogICAgICAgIGluIHRoZSA8cmVwbGFj ZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+dXNpbmdsaXN0PC9yZXBsYWNlYWJs ZT4sDQogICAgICAgIHVubGVzcyB5b3Ugd2lzaCB0byBzZXQgdXAgYSBzZWxm LWpvaW4uDQogICAgICAgPC9wYXJhPg0KKyANCisgICAgICA8cGFyYT4NCisg ICAgICAgVGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj51c2lu Z2xpc3Q8Lz4gbWF5IGFsc28gY29udGFpbiBhDQorICAgICAgIDxsaXRlcmFs PlZBTFVFUzwvPiBsaXN0LCBldmFsdWF0aW5nIHRvIG9uZSBvciBtb3JlIHJv d3MuIFRoZXNlDQorICAgICAgIHJvd3MgbWF5IGFsc28gYmUgcmVmZXJlbmNl ZCBpbiB0aGUgPGxpdGVyYWw+V0hFUkU8Lz4gY2xhdXNlLg0KKyAJIDwvcGFy YT4NCiAgICAgIDwvbGlzdGl0ZW0+DQogICAgIDwvdmFybGlzdGVudHJ5Pg0K ICANCioqKioqKioqKioqKioqKiBERUxFVEUgRlJPTSBmaWxtcyBXSEVSRSBr aW5kICZsdDsmZ3Q7ICdNDQoqKiogMTkxLDE5NiAqKioqDQotLS0gMTk3LDIx MyAtLS0tDQogIERFTEVURSBGUk9NIGZpbG1zOw0KICA8L3Byb2dyYW1saXN0 aW5nPiAgICAgIA0KICAgIDwvcGFyYT4NCisgDQorICAgPHBhcmE+DQorICAg IERlbGV0ZSBmaWxtcyBtYWRlIGFmdGVyIDE5OTAgd2hpY2ggYXJlICdIb3Jy b3InIGFuZCBmaWxtcyBtYWRlDQorICAgIGFmdGVyIDIwMDAgd2hpY2ggYXJl ICdDcmltZScuIFRvIGRvIHRoaXMsIHdlIHVzZSBhIDxsaXRlcmFsPlZBTFVF UzwvPg0KKyAgICBsaXN0IGluIHRoZSA8bGl0ZXJhbD5VU0lORzwvPiBjbGF1 c2UuDQorIDxwcm9ncmFtbGlzdGluZz4NCisgREVMRVRFIEZST00gZmlsbXMg VVNJTkcgKFZBTFVFUygnMTk5MC0wMS0wMSwgJ0hvcnJvcicpLCAoJzIwMDAt MDEtMDEnLCAnQ3JpbWUpKQ0KKyAgICAgQVMgZGV0ICh5ZWFyLCBraW5kKSBX SEVSRSBmaWxtcy5kYXRlX3Byb2QgPj0gZGV0LnllYXIgQU5EDQorICAgICBm aWxtcy5raW5kID0gZGV0LmtpbmQ7DQorIDwvcHJvZ3JhbWxpc3Rpbmc+DQor ICAgPC9wYXJhPg0KICAgPC9yZWZzZWN0MT4NCiAgDQogICA8cmVmc2VjdDE+ DQpJbmRleDogZG9jL3NyYy9zZ21sL3JlZi9pbnNlcnQuc2dtbA0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC91c3IvbG9jYWwvY3Zzcm9v dC9wZ3NxbC9kb2Mvc3JjL3NnbWwvcmVmL2luc2VydC5zZ21sLHYNCnJldHJp ZXZpbmcgcmV2aXNpb24gMS4zMA0KZGlmZiAtYyAtcCAtcjEuMzAgaW5zZXJ0 LnNnbWwNCioqKiBkb2Mvc3JjL3NnbWwvcmVmL2luc2VydC5zZ21sCTE3IE5v diAyMDA1IDIyOjE0OjUxIC0wMDAwCTEuMzANCi0tLSBkb2Mvc3JjL3NnbWwv cmVmL2luc2VydC5zZ21sCTIgQXVnIDIwMDYgMjI6NDA6MTQgLTAwMDANCioq KioqKioqKioqKioqKiBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24NCioqKiAy MSwyNyAqKioqDQogICA8cmVmc3lub3BzaXNkaXY+DQogIDxzeW5vcHNpcz4N CiAgSU5TRVJUIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIi PnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i UEFSQU1FVEVSIj5jb2x1bW48L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXQ0K ISAgICAgeyBERUZBVUxUIFZBTFVFUyB8IFZBTFVFUyAoIHsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJQQVJBTUVURVIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxl PiB8IERFRkFVTFQgfSBbLCAuLi5dICkgfCA8cmVwbGFjZWFibGUgY2xhc3M9 IlBBUkFNRVRFUiI+cXVlcnk8L3JlcGxhY2VhYmxlPiB9DQogIDwvc3lub3Bz aXM+DQogICA8L3JlZnN5bm9wc2lzZGl2Pg0KICANCi0tLSAyMSwyNyAtLS0t DQogICA8cmVmc3lub3BzaXNkaXY+DQogIDxzeW5vcHNpcz4NCiAgSU5TRVJU IElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnRhYmxlPC9y ZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVS Ij5jb2x1bW48L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXQ0KISAgICAgeyBE RUZBVUxUIFZBTFVFUyB8IFZBTFVFUyAoIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJQQVJBTUVURVIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8IERFRkFV TFQgfSBbLCAuLi5dICkgWywgKCAuLi4gKSBdIHwgPHJlcGxhY2VhYmxlIGNs YXNzPSJQQVJBTUVURVIiPnF1ZXJ5PC9yZXBsYWNlYWJsZT4gfQ0KICA8L3N5 bm9wc2lzPg0KICAgPC9yZWZzeW5vcHNpc2Rpdj4NCiAgDQoqKioqKioqKioq KioqKiogSU5TRVJUIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVU RQ0KKioqIDMwLDM3ICoqKioNCiAgDQogICAgPHBhcmE+DQogICAgIDxjb21t YW5kPklOU0VSVDwvY29tbWFuZD4gaW5zZXJ0cyBuZXcgcm93cyBpbnRvIGEg dGFibGUuDQohICAgIE9uZSBjYW4gaW5zZXJ0IGEgc2luZ2xlIHJvdyBzcGVj aWZpZWQgYnkgdmFsdWUgZXhwcmVzc2lvbnMsDQohICAgIG9yIHNldmVyYWwg cm93cyBhcyBhIHJlc3VsdCBvZiBhIHF1ZXJ5Lg0KICAgIDwvcGFyYT4NCiAg DQogICAgPHBhcmE+DQotLS0gMzAsMzcgLS0tLQ0KICANCiAgICA8cGFyYT4N CiAgICAgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiBpbnNlcnRzIG5ldyBy b3dzIGludG8gYSB0YWJsZS4NCiEgICAgT25lIGNhbiBpbnNlcnQgb25lIG9y IG1vcmUgcm93cyBzcGVjaWZpZWQgYnkgdmFsdWUgZXhwcmVzc2lvbnMsDQoh ICAgIG9yIHplcm8gb3IgbW9yZSByb3dzIHJlc3VsdGluZyBmcm9tIGEgcXVl cnkuDQogICAgPC9wYXJhPg0KICANCiAgICA8cGFyYT4NCioqKioqKioqKioq KioqKiBJTlNFUlQgSU5UTyBmaWxtcyBWQUxVRVMNCioqKiAxNjIsMTY3ICoq KioNCi0tLSAxNjIsMTc3IC0tLS0NCiAgICA8L3BhcmE+DQogIA0KICAgIDxw YXJhPg0KKyAgICBJbnNlcnQgbXVsdGlwbGUgcm93cyBpbnRvIGEgdGFibGUg PGxpdGVyYWw+ZmlsbXM8Lz46DQorIA0KKyA8cHJvZ3JhbWxpc3Rpbmc+DQor IElOU0VSVCBJTlRPIGZpbG1zIFZBTFVFUw0KKyAJKCdCNjcxNycsICdUYW1w b3BvJywgMTEwLCAnMTk4NS0wMi0xMCcsICdDb21lZHknKSwNCisgCSgnSEcx MjAnLCAnVGhlIERpbm5lciBHYW1lJywgMTQwLCAnMTk5OC0xMC0xMicsICdD b21lZHknKTsNCisgPC9wcm9ncmFtbGlzdGluZz4NCisgICA8L3BhcmE+DQor IA0KKyAgIDxwYXJhPg0KICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSA8bGl0 ZXJhbD5sZW48L2xpdGVyYWw+IGNvbHVtbiBpcw0KICAgICBvbWl0dGVkIGFu ZCB0aGVyZWZvcmUgaXQgd2lsbCBoYXZlIHRoZSBkZWZhdWx0IHZhbHVlOg0K ICANCkluZGV4OiBkb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3Vzci9sb2NhbC9jdnNy b290L3Bnc3FsL2RvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwsdg0KcmV0 cmlldmluZyByZXZpc2lvbiAxLjkxDQpkaWZmIC1jIC1wIC1yMS45MSBzZWxl Y3Quc2dtbA0KKioqIGRvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwJMzAg QXByIDIwMDYgMTg6MzA6MzggLTAwMDAJMS45MQ0KLS0tIGRvYy9zcmMvc2dt bC9yZWYvc2VsZWN0LnNnbWwJMiBBdWcgMjAwNiAyMjo0MDoxMiAtMDAwMA0K KioqKioqKioqKioqKioqIFNFTEVDVCBbIEFMTCB8IERJU1RJTkNUIFsgT04g KCA8cmVwbGFjZWENCioqKiAzNSw0MCAqKioqDQotLS0gMzUsNDEgLS0tLQ0K ICB3aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnJvbV9p dGVtPC9yZXBsYWNlYWJsZT4gY2FuIGJlIG9uZSBvZjoNCiAgDQogICAgICBb IE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf bmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgWyBBUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+IFsgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2FsaWFzPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gXQ0KKyAgICAgKCBWQUxVRVMgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkgWywgKCAuLi4gKSBdIFsgQVMgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWxpYXM8L3JlcGxhY2VhYmxl PiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9h bGlhczwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdDQogICAgICAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZWxlY3Q8L3JlcGxhY2VhYmxl PiApIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWxp YXM8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9hbGlhczwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBd DQogICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnVuY3Rp b25fbmFtZTwvcmVwbGFjZWFibGU+ICggWyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+YXJndW1lbnQ8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0g KSBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFsaWFz PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2x1bW5fYWxpYXM8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIHwgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9kZWZpbml0aW9u PC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0NCiAgICAgIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5mdW5jdGlvbl9uYW1lPC9yZXBsYWNlYWJs ZT4gKCBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmd1bWVu dDwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSApIEFTICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9kZWZpbml0aW9uPC9yZXBsYWNl YWJsZT4gWywgLi4uXSApDQoqKioqKioqKioqKioqKiogd2hlcmUgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZybw0KKioqIDE5NywyMDIgKioq Kg0KLS0tIDE5OCwyMTQgLS0tLQ0KICAgICAgICAgPC9wYXJhPg0KICAgICAg ICA8L2xpc3RpdGVtPg0KICAgICAgIDwvdmFybGlzdGVudHJ5Pg0KKyANCisg ICAgICA8dmFybGlzdGVudHJ5Pg0KKyAgICAgICA8dGVybT48bGl0ZXJhbD5W QUxVRVMoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBbLCAuLi5dPC9saXRlcmFsPjwv dGVybT4NCisgICAgICAgPGxpc3RpdGVtPg0KKyAgICAgICAgPHBhcmE+DQor ICAgICAgICAgT25lIG9yIG1vcmUgcm93cyBtYXkgYmUgY29uc3RydWN0ZWQg aW4gdGhlIGZyb20gY2xhdXNlLiBFYWNoDQorICAgICAgICAgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248Lz4gd2lsbCBiZSBl dmFsdWF0ZWQgYW5kDQorICAgICAgICAgYXNzaWduZWQgdG8gdGhlIGNvcnJl c3BvbmRpbmcgY29sdW1uLg0KKyAgICAgICAgPC9wYXJhPg0KKyAgICAgICA8 L2xpc3RpdGVtPg0KKyAgICAgIDwvdmFybGlzdGVudHJ5Pg0KICAgICAgIA0K ICAgICAgIDx2YXJsaXN0ZW50cnk+DQogICAgICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+PC90 ZXJtPg0KKioqKioqKioqKioqKioqIFNFTEVDVCBmLnRpdGxlLCBmLmRpZCwg ZC5uYW1lLCBmLmRhdGVfcHINCioqKiA5MTYsOTIxICoqKioNCi0tLSA5Mjgs OTQ3IC0tLS0NCiAgICA8L3BhcmE+DQogIA0KICAgIDxwYXJhPg0KKyAgICBU byBqb2luIHRoZSB0YWJsZSA8bGl0ZXJhbD5maWxtczwvPiB3aXRoIGEgPGxp dGVyYWw+VkFMVUVTPC8+IGxpc3Q6DQorIDxwcm9ncmFtbGlzdGluZz4NCisg U0VMRUNUIGYudGl0bGUsIGYuZGlkLCBmLmRhdGVfcHJvZCwgZi5raW5kDQor ICAgICBGUk9NIGZpbG1zIGYsIChWQUxVRVMoJ0hvcnJvcicpLCAoJ1NjaS1G aScpKSBhcyBrIChraW5kKQ0KKyAgICAgV0hFUkUgZi5raW5kID0gay5raW5k Ow0KKyAgICAgICAgICAgICB0aXRsZSAgICAgICAgICAgICB8IGRpZCB8IGRh dGVfcHJvZCAgfCAga2luZA0KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tDQorICBUaGUgVGV4 YXMgQ2hhaW4gU2F3IE1hc3NhY3JlIHwgMTkwIHwgMTk3NC0wNi0xMSB8IEhv cnJvcg0KKyAgMjAwMTogQSBTcGFjZSBPZHlzc2V5ICAgICAgICB8IDIxMCB8 IDE5NjgtMDgtMjQgfCBTY2ktRmkNCisgIC4uLg0KKyA8L3Byb2dyYW1saXN0 aW5nPg0KKyAgIDwvcGFyYT4NCisgDQorICAgPHBhcmE+DQogICAgIFRvIHN1 bSB0aGUgY29sdW1uIDxsaXRlcmFsPmxlbjwvbGl0ZXJhbD4gb2YgYWxsIGZp bG1zIGFuZCBncm91cA0KICAgICB0aGUgcmVzdWx0cyBieSA8bGl0ZXJhbD5r aW5kPC9saXRlcmFsPjoNCiAgDQpJbmRleDogZG9jL3NyYy9zZ21sL3JlZi91 cGRhdGUuc2dtbA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6 IC91c3IvbG9jYWwvY3Zzcm9vdC9wZ3NxbC9kb2Mvc3JjL3NnbWwvcmVmL3Vw ZGF0ZS5zZ21sLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNw0KZGlmZiAt YyAtcCAtcjEuMzcgdXBkYXRlLnNnbWwNCioqKiBkb2Mvc3JjL3NnbWwvcmVm L3VwZGF0ZS5zZ21sCTggTWFyIDIwMDYgMjI6NTk6MDkgLTAwMDAJMS4zNw0K LS0tIGRvYy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwJMyBBdWcgMjAwNiAw MzoyNzowNyAtMDAwMA0KKioqKioqKioqKioqKioqIFVQREFURSBbIE9OTFkg XSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkENCioqKiAxMzQsMTM5ICoqKioN Ci0tLSAxMzQsMTQ1IC0tLS0NCiAgICAgICAgPHJlcGxhY2VhYmxlPmZyb21s aXN0PC8+LCB1bmxlc3MgeW91IGludGVuZCBhIHNlbGYtam9pbiAoaW4gd2hp Y2gNCiAgICAgICAgY2FzZSBpdCBtdXN0IGFwcGVhciB3aXRoIGFuIGFsaWFz IGluIHRoZSA8cmVwbGFjZWFibGU+ZnJvbWxpc3Q8Lz4pLg0KICAgICAgIDwv cGFyYT4NCisgDQorIAkgPHBhcmE+DQorIAkgIFRoZSA8cmVwbGFjZWFibGUg Y2xhc3M9IlBBUkFNRVRFUiI+ZnJvbV9saXN0PC8+IG1heSBhbHNvIGNvbnRh aW4gYQ0KKyAJICA8bGl0ZXJhbD5WQUxVRVM8Lz4gbGlzdCwgZXZhbHVhdGlu ZyB0byBvbmUgb3IgbW9yZSByb3dzLiBUaGVzZQ0KKyAJICByb3dzIG1heSBh bHNvIGJlIHJlZmVyZW5jZWQgaW4gdGhlIDxsaXRlcmFsPldIRVJFPC8+IGNs YXVzZS4NCisgICAgICA8L3BhcmE+DQogICAgICA8L2xpc3RpdGVtPg0KICAg ICA8L3Zhcmxpc3RlbnRyeT4NCiAgDQoqKioqKioqKioqKioqKiogVVBEQVRF IGVtcGxveWVlcyBTRVQgc2FsZXNfY291bnQgPSBzYWxlcw0KKioqIDIzMywy MzggKioqKg0KLS0tIDIzOSwyNTUgLS0tLQ0KICAgIDwvcGFyYT4NCiAgDQog ICAgPHBhcmE+DQorICAgIFBlcmZvcm0gYW4gdXBkYXRlIG9uIDxsaXRlcmFs PmVtcGxveWVlczwvPiB3aXRoIGEgam9pbiBhZ2FpbnN0IGEgDQorICAgIDxs aXRlcmFsPlZBTFVFUzwvPiBsaXN0Og0KKyA8cHJvZ3JhbWxpc3Rpbmc+DQor IFVQREFURSBlbXBsb3llZXMgU0VUIHNhbGFyeSA9IHNhbGFyeSAqIGluY3Jl YXNlDQorICAgIEZST00gKFZBTFVFUygxLCAyMDAwMDAsIDEuMiksICgyLCA0 MDAwMDAsIDEuNCkpIA0KKyAgICBhcyBwcm9mIChkZXBubywgdGFyZ2V0LCBp bmNyZWFzZSkNCisgICAgV0hFUkUgZW1wbG95ZWVzLnNhbGVzICZndDs9IHBy b2YudGFyZ2V0IGFuZCBlbXBsb3llZXMuZGVwbm8gPSBwcm9mLmRlcG5vOw0K KyA8L3Byb2dyYW1saXN0aW5nPg0KKyAgIDwvcGFyYT4NCisgDQorICAgPHBh cmE+DQogICAgIEF0dGVtcHQgdG8gaW5zZXJ0IGEgbmV3IHN0b2NrIGl0ZW0g YWxvbmcgd2l0aCB0aGUgcXVhbnRpdHkgb2Ygc3RvY2suIElmDQogICAgIHRo ZSBpdGVtIGFscmVhZHkgZXhpc3RzLCBpbnN0ZWFkIHVwZGF0ZSB0aGUgc3Rv Y2sgY291bnQgb2YgdGhlIGV4aXN0aW5nDQogICAgIGl0ZW0uIFRvIGRvIHRo aXMgd2l0aG91dCBmYWlsaW5nIHRoZSBlbnRpcmUgdHJhbnNhY3Rpb24sIHVz ZSBzYXZlcG9pbnRzLg0KSW5kZXg6IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2lu c2VydC5zcWwNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAv dXNyL2xvY2FsL2N2c3Jvb3QvcGdzcWwvc3JjL3Rlc3QvcmVncmVzcy9zcWwv aW5zZXJ0LnNxbCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMg0KZGlmZiAt YyAtcCAtcjEuMiBpbnNlcnQuc3FsDQoqKiogc3JjL3Rlc3QvcmVncmVzcy9z cWwvaW5zZXJ0LnNxbAkyNCBBcHIgMjAwMiAwMjoyMjo1NCAtMDAwMAkxLjIN Ci0tLSBzcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnNlcnQuc3FsCTMgQXVnIDIw MDYgMDU6MTM6NTcgLTAwMDANCioqKioqKioqKioqKioqKiBpbnNlcnQgaW50 byBpbnNlcnR0ZXN0IChjb2wxLCBjb2wyLCBjb2wzDQoqKiogMTgsMjIgKioq Kg0KLS0tIDE4LDI5IC0tLS0NCiAgaW5zZXJ0IGludG8gaW5zZXJ0dGVzdCAo Y29sMSkgdmFsdWVzICgxLCAyKTsNCiAgaW5zZXJ0IGludG8gaW5zZXJ0dGVz dCAoY29sMSkgdmFsdWVzIChERUZBVUxULCBERUZBVUxUKTsNCiAgDQorIC0t DQorIC0tIFZBTFVFUyB0ZXN0DQorIC0tDQorIA0KKyBpbnNlcnQgaW50byBp bnNlcnR0ZXN0IHZhbHVlcygxMCwgMjAsICc0MCcpLCAoLTEsIDIsIERFRkFV TFQpLA0KKyAJKChzZWxlY3QgMiksIChzZWxlY3QgaSBmcm9tICh2YWx1ZXMo MykpIGFzIGZvbyAoaSkpLCAndmFsdWVzIGFyZSBmdW4hJyk7DQorIA0KICBz ZWxlY3QgKiBmcm9tIGluc2VydHRlc3Q7DQogIGRyb3AgdGFibGUgaW5zZXJ0 dGVzdDsNCkluZGV4OiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zZWxlY3Quc3Fs DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3Vzci9sb2Nh bC9jdnNyb290L3Bnc3FsL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NlbGVjdC5z cWwsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEwDQpkaWZmIC1jIC1wIC1y MS4xMCBzZWxlY3Quc3FsDQoqKiogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2Vs ZWN0LnNxbAkxNCBEZWMgMjAwNSAxNjoyODozMiAtMDAwMAkxLjEwDQotLS0g c3JjL3Rlc3QvcmVncmVzcy9zcWwvc2VsZWN0LnNxbAkzIEF1ZyAyMDA2IDA1 OjA0OjE1IC0wMDAwDQoqKioqKioqKioqKioqKiogU0VMRUNUIHAubmFtZSwg cC5hZ2UgRlJPTSBwZXJzb24qIHAgT1JERQ0KKioqIDExMCwxMTIgKioqKg0K LS0tIDExMCwxMjUgLS0tLQ0KICBzZWxlY3QgZm9vIGZyb20gKHNlbGVjdCAx KSBhcyBmb287DQogIHNlbGVjdCBmb28gZnJvbSAoc2VsZWN0IG51bGwpIGFz IGZvbzsNCiAgc2VsZWN0IGZvbyBmcm9tIChzZWxlY3QgJ3h5enp5JywxLG51 bGwpIGFzIGZvbzsNCisgDQorIC0tDQorIC0tIFRlc3QgVkFMVUVTIGxpc3Rz DQorIC0tDQorIHNlbGVjdCAqIGZyb20gb25laywgKHZhbHVlcygxNDcsICdS RkFBQUEnKSwgKDkzMSwgJ1ZKQUFBQScpKSBhcyB2IChpLCBqKSBXSEVSRQ0K KyAJb25lay51bmlxdWUxID0gdi5pIGFuZCBvbmVrLnN0cmluZ3UxID0gdi5q Ow0KKyANCisgLS0gYSBtb3JlIGNvbXBsZXggY2FzZQ0KKyAtLSBsb29rcyBs aWtlIHdlJ3JlIGNvZGluZyBsaXNwIDotKQ0KKyBzZWxlY3QgKiBmcm9tIG9u ZWssICh2YWx1ZXMoKHNlbGVjdCBpIGZyb20gDQorIAkodmFsdWVzKDEwMDAw KSwgKDIpLCAoMzg5KSwgKDEwMDApLCAoMjAwMCksICgoc2VsZWN0IDEwMDI5 KSkpIGFzIGZvbyhpKQ0KKyAJb3JkZXIgYnkgaSBhc2MgbGltaXQgMSkpKSBi YXIgKGkpDQorIAl3aGVyZSBvbmVrLnVuaXF1ZTEgPSBiYXIuaTsNCkluZGV4 OiBzcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGUuc3FsDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQpSQ1MgZmlsZTogL3Vzci9sb2NhbC9jdnNyb290L3Bn c3FsL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0ZS5zcWwsdg0KcmV0cmll dmluZyByZXZpc2lvbiAxLjMNCmRpZmYgLWMgLXAgLXIxLjMgdXBkYXRlLnNx bA0KKioqIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0ZS5zcWwJMjIgSmFu IDIwMDYgMDU6MjA6MzUgLTAwMDAJMS4zDQotLS0gc3JjL3Rlc3QvcmVncmVz cy9zcWwvdXBkYXRlLnNxbAkzIEF1ZyAyMDA2IDA0OjMyOjAzIC0wMDAwDQoq KioqKioqKioqKioqKiogU0VMRUNUICogRlJPTSB1cGRhdGVfdGVzdDsNCioq KiAyMywyOCAqKioqDQotLS0gMjMsMzUgLS0tLQ0KICANCiAgVVBEQVRFIHVw ZGF0ZV90ZXN0IHQgU0VUIGIgPSB0LmIgKyAxMCBXSEVSRSB0LmEgPSAxMDsN CiAgDQorIC0tDQorIC0tIFRlc3QgVkFMVUVTIGluIEZST00NCisgLS0NCisg DQorIFVQREFURSB1cGRhdGVfdGVzdCBTRVQgYT12LmkgRlJPTSAoVkFMVUVT KDEwMCwgMjApKSBBUyB2KGksIGopDQorIAlXSEVSRSB1cGRhdGVfdGVzdC5i ID0gdi5qOw0KKyANCiAgU0VMRUNUICogRlJPTSB1cGRhdGVfdGVzdDsNCiAg DQogIC0tIGlmIGFuIGFsaWFzIGZvciB0aGUgdGFyZ2V0IHRhYmxlIGlzIHNw ZWNpZmllZCwgZG9uJ3QgYWxsb3cgcmVmZXJlbmNlcw0KKioqKioqKioqKioq KioqIFNFVCBMT0NBTCBhZGRfbWlzc2luZ19mcm9tID0gZmFsc2U7DQoqKiog MzIsMzUgKioqKg0KLS0tIDM5LDQzIC0tLS0NCiAgVVBEQVRFIHVwZGF0ZV90 ZXN0IEFTIHQgU0VUIGIgPSB1cGRhdGVfdGVzdC5iICsgMTAgV0hFUkUgdC5h ID0gMTA7DQogIFJPTExCQUNLOw0KICANCisgDQogIERST1AgVEFCTEUgdXBk YXRlX3Rlc3Q7DQpJbmRleDogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9p bnNlcnQub3V0DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog L3Vzci9sb2NhbC9jdnNyb290L3Bnc3FsL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaW5zZXJ0Lm91dCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNw0K ZGlmZiAtYyAtcCAtcjEuNyBpbnNlcnQub3V0DQoqKiogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9pbnNlcnQub3V0CTI1IFNlcCAyMDAzIDA2OjU4OjA2 IC0wMDAwCTEuNw0KLS0tIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5z ZXJ0Lm91dAkzIEF1ZyAyMDA2IDA1OjE5OjAxIC0wMDAwDQoqKioqKioqKioq KioqKiogaW5zZXJ0IGludG8gaW5zZXJ0dGVzdCAoY29sMSkgdmFsdWVzICgx LA0KKioqIDI4LDQwICoqKioNCiAgRVJST1I6ICBJTlNFUlQgaGFzIG1vcmUg ZXhwcmVzc2lvbnMgdGhhbiB0YXJnZXQgY29sdW1ucw0KICBpbnNlcnQgaW50 byBpbnNlcnR0ZXN0IChjb2wxKSB2YWx1ZXMgKERFRkFVTFQsIERFRkFVTFQp Ow0KICBFUlJPUjogIElOU0VSVCBoYXMgbW9yZSBleHByZXNzaW9ucyB0aGFu IHRhcmdldCBjb2x1bW5zDQogIHNlbGVjdCAqIGZyb20gaW5zZXJ0dGVzdDsN CiAgIGNvbDEgfCBjb2wyIHwgIGNvbDMgICANCiEgLS0tLS0tKy0tLS0tLSst LS0tLS0tLS0NCiAgICAgICAgfCAgICAzIHwgdGVzdGluZw0KICAgICAgICB8 ICAgIDUgfCB0ZXN0aW5nDQogICAgICAgIHwgICAgNSB8IHRlc3QNCiAgICAg ICAgfCAgICA3IHwgdGVzdGluZw0KISAoNCByb3dzKQ0KICANCiAgZHJvcCB0 YWJsZSBpbnNlcnR0ZXN0Ow0KLS0tIDI4LDQ4IC0tLS0NCiAgRVJST1I6ICBJ TlNFUlQgaGFzIG1vcmUgZXhwcmVzc2lvbnMgdGhhbiB0YXJnZXQgY29sdW1u cw0KICBpbnNlcnQgaW50byBpbnNlcnR0ZXN0IChjb2wxKSB2YWx1ZXMgKERF RkFVTFQsIERFRkFVTFQpOw0KICBFUlJPUjogIElOU0VSVCBoYXMgbW9yZSBl eHByZXNzaW9ucyB0aGFuIHRhcmdldCBjb2x1bW5zDQorIC0tDQorIC0tIFZB TFVFUyB0ZXN0DQorIC0tDQorIGluc2VydCBpbnRvIGluc2VydHRlc3QgdmFs dWVzKDEwLCAyMCwgJzQwJyksICgtMSwgMiwgREVGQVVMVCksDQorIAkoKHNl bGVjdCAyKSwgKHNlbGVjdCBpIGZyb20gKHZhbHVlcygzKSkgYXMgZm9vIChp KSksICd2YWx1ZXMgYXJlIGZ1biEnKTsNCiAgc2VsZWN0ICogZnJvbSBpbnNl cnR0ZXN0Ow0KICAgY29sMSB8IGNvbDIgfCAgY29sMyAgIA0KISAtLS0tLS0r LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tDQogICAgICAgIHwgICAgMyB8IHRl c3RpbmcNCiAgICAgICAgfCAgICA1IHwgdGVzdGluZw0KICAgICAgICB8ICAg IDUgfCB0ZXN0DQogICAgICAgIHwgICAgNyB8IHRlc3RpbmcNCiEgICAgMTAg fCAgIDIwIHwgNDANCiEgICAgLTEgfCAgICAyIHwgdGVzdGluZw0KISAgICAg MiB8ICAgIDMgfCB2YWx1ZXMgYXJlIGZ1biENCiEgKDcgcm93cykNCiAgDQog IGRyb3AgdGFibGUgaW5zZXJ0dGVzdDsNCkluZGV4OiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3NlbGVjdC5vdXQNCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NClJDUyBmaWxlOiAvdXNyL2xvY2FsL2N2c3Jvb3QvcGdzcWwvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3Qub3V0LHYNCnJldHJpZXZpbmcg cmV2aXNpb24gMS4xNA0KZGlmZiAtYyAtcCAtcjEuMTQgc2VsZWN0Lm91dA0K KioqIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0Lm91dAkxNCBE ZWMgMjAwNSAxNjoyODozMiAtMDAwMAkxLjE0DQotLS0gc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zZWxlY3Qub3V0CTMgQXVnIDIwMDYgMDQ6NTA6MzYg LTAwMDANCioqKioqKioqKioqKioqKiBzZWxlY3QgZm9vIGZyb20gKHNlbGVj dCAneHl6enknLDEsbnVsbCkgDQoqKiogNDUyLDQ1NCAqKioqDQotLS0gNDUy LDQ3NiAtLS0tDQogICAoeHl6enksMSwpDQogICgxIHJvdykNCiAgDQorIC0t DQorIC0tIFRlc3QgVkFMVUVTIGxpc3RzDQorIC0tDQorIHNlbGVjdCAqIGZy b20gb25laywgKHZhbHVlcygxNDcsICdSRkFBQUEnKSwgKDkzMSwgJ1ZKQUFB QScpKSBhcyB2IChpLCBqKSBXSEVSRQ0KKyAJb25lay51bmlxdWUxID0gdi5p IGFuZCBvbmVrLnN0cmluZ3UxID0gdi5qOw0KKyAgdW5pcXVlMSB8IHVuaXF1 ZTIgfCB0d28gfCBmb3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8IHRo b3VzYW5kIHwgdHdvdGhvdXNhbmQgfCBmaXZldGhvdXMgfCB0ZW50aG91cyB8 IG9kZCB8IGV2ZW4gfCBzdHJpbmd1MSB8IHN0cmluZ3UyIHwgc3RyaW5nNCB8 ICBpICB8ICAgaiAgICANCisgLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLSst LS0tLS0rLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tKy0tLS0t LS0tDQorICAgICAgMTQ3IHwgICAgICAgMCB8ICAgMSB8ICAgIDMgfCAgIDcg fCAgICAgIDcgfCAgICAgICA3IHwgICAgICAgNDcgfCAgICAgICAgIDE0NyB8 ICAgICAgIDE0NyB8ICAgICAgMTQ3IHwgIDE0IHwgICAxNSB8IFJGQUFBQSAg IHwgQUFBQUFBICAgfCBBQUFBeHggIHwgMTQ3IHwgUkZBQUFBDQorICAgICAg OTMxIHwgICAgICAgMSB8ICAgMSB8ICAgIDMgfCAgIDEgfCAgICAgMTEgfCAg ICAgICAxIHwgICAgICAgMzEgfCAgICAgICAgIDEzMSB8ICAgICAgIDQzMSB8 ICAgICAgOTMxIHwgICAyIHwgICAgMyB8IFZKQUFBQSAgIHwgQkFBQUFBICAg fCBISEhIeHggIHwgOTMxIHwgVkpBQUFBDQorICgyIHJvd3MpDQorIA0KKyAt LSBhIG1vcmUgY29tcGxleCBjYXNlDQorIC0tIGxvb2tzIGxpa2Ugd2UncmUg Y29kaW5nIGxpc3AgOi0pDQorIHNlbGVjdCAqIGZyb20gb25laywgKHZhbHVl cygoc2VsZWN0IGkgZnJvbSANCisgCSh2YWx1ZXMoMTAwMDApLCAoMiksICgz ODkpLCAoMTAwMCksICgyMDAwKSwgKChzZWxlY3QgMTAwMjkpKSkgYXMgZm9v KGkpDQorIAlvcmRlciBieSBpIGFzYyBsaW1pdCAxKSkpIGJhciAoaSkNCisg CXdoZXJlIG9uZWsudW5pcXVlMSA9IGJhci5pOw0KKyAgdW5pcXVlMSB8IHVu aXF1ZTIgfCB0d28gfCBmb3VyIHwgdGVuIHwgdHdlbnR5IHwgaHVuZHJlZCB8 IHRob3VzYW5kIHwgdHdvdGhvdXNhbmQgfCBmaXZldGhvdXMgfCB0ZW50aG91 cyB8IG9kZCB8IGV2ZW4gfCBzdHJpbmd1MSB8IHN0cmluZ3UyIHwgc3RyaW5n NCB8IGkgDQorIC0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0rLS0tLS0tKy0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0NCisgICAgICAgIDIgfCAg ICAgMzI2IHwgICAwIHwgICAgMiB8ICAgMiB8ICAgICAgMiB8ICAgICAgIDIg fCAgICAgICAgMiB8ICAgICAgICAgICAyIHwgICAgICAgICAyIHwgICAgICAg IDIgfCAgIDQgfCAgICA1IHwgQ0FBQUFBICAgfCBPTUFBQUEgICB8IE9PT094 eCAgfCAyDQorICgxIHJvdykNCisgDQpJbmRleDogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC91cGRhdGUub3V0DQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQpSQ1MgZmlsZTogL3Vzci9sb2NhbC9jdnNyb290L3Bnc3FsL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRlLm91dCx2DQpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMw0KZGlmZiAtYyAtcCAtcjEuMyB1cGRhdGUub3V0DQoqKiog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGUub3V0CTE0IE1hciAy MDA2IDIyOjQ4OjI1IC0wMDAwCTEuMw0KLS0tIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdXBkYXRlLm91dAkzIEF1ZyAyMDA2IDA0OjUwOjQ4IC0wMDAw DQoqKioqKioqKioqKioqKiogU0VMRUNUICogRlJPTSB1cGRhdGVfdGVzdDsN CioqKiAzMiw0MiAqKioqDQogICgyIHJvd3MpDQogIA0KICBVUERBVEUgdXBk YXRlX3Rlc3QgdCBTRVQgYiA9IHQuYiArIDEwIFdIRVJFIHQuYSA9IDEwOw0K ICBTRUxFQ1QgKiBGUk9NIHVwZGF0ZV90ZXN0Ow0KICAgYSAgfCBiICANCiEg LS0tLSstLS0tDQohICAxMCB8IDIwDQohICAxMCB8IDIwDQogICgyIHJvd3Mp DQogIA0KICAtLSBpZiBhbiBhbGlhcyBmb3IgdGhlIHRhcmdldCB0YWJsZSBp cyBzcGVjaWZpZWQsIGRvbid0IGFsbG93IHJlZmVyZW5jZXMNCi0tLSAzMiw0 NyAtLS0tDQogICgyIHJvd3MpDQogIA0KICBVUERBVEUgdXBkYXRlX3Rlc3Qg dCBTRVQgYiA9IHQuYiArIDEwIFdIRVJFIHQuYSA9IDEwOw0KKyAtLQ0KKyAt LSBUZXN0IFZBTFVFUyBpbiBGUk9NDQorIC0tDQorIFVQREFURSB1cGRhdGVf dGVzdCBTRVQgYT12LmkgRlJPTSAoVkFMVUVTKDEwMCwgMjApKSBBUyB2KGks IGopDQorIAlXSEVSRSB1cGRhdGVfdGVzdC5iID0gdi5qOw0KICBTRUxFQ1Qg KiBGUk9NIHVwZGF0ZV90ZXN0Ow0KICAgYSAgfCBiICANCiEgLS0tLS0rLS0t LQ0KISAgMTAwIHwgMjANCiEgIDEwMCB8IDIwDQogICgyIHJvd3MpDQogIA0K ICAtLSBpZiBhbiBhbGlhcyBmb3IgdGhlIHRhcmdldCB0YWJsZSBpcyBzcGVj aWZpZWQsIGRvbid0IGFsbG93IHJlZmVyZW5jZXMNCg== --583741998-539135385-1154582918=:4590--