cgi-session-user Mailing List for CGI-Session (Page 9)
Brought to you by:
sherzodr
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
|
Feb
|
Mar
(13) |
Apr
(6) |
May
(2) |
Jun
(3) |
Jul
(2) |
Aug
(10) |
Sep
(9) |
Oct
(15) |
Nov
(1) |
Dec
(4) |
2004 |
Jan
|
Feb
|
Mar
(7) |
Apr
|
May
(1) |
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2005 |
Jan
(1) |
Feb
(8) |
Mar
(1) |
Apr
(1) |
May
(9) |
Jun
|
Jul
(14) |
Aug
(32) |
Sep
(34) |
Oct
(16) |
Nov
(6) |
Dec
(15) |
2006 |
Jan
(5) |
Feb
(27) |
Mar
(60) |
Apr
(12) |
May
(17) |
Jun
(24) |
Jul
(27) |
Aug
(16) |
Sep
(13) |
Oct
(19) |
Nov
(22) |
Dec
(29) |
2007 |
Jan
(23) |
Feb
(33) |
Mar
(42) |
Apr
(30) |
May
(14) |
Jun
(5) |
Jul
(12) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2008 |
Jan
(6) |
Feb
(9) |
Mar
(48) |
Apr
(20) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(2) |
Nov
(9) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(11) |
Oct
(2) |
Nov
|
Dec
|
2010 |
Jan
(9) |
Feb
(28) |
Mar
|
Apr
(12) |
May
(13) |
Jun
|
Jul
(3) |
Aug
|
Sep
(1) |
Oct
(3) |
Nov
|
Dec
(9) |
2011 |
Jan
|
Feb
|
Mar
(6) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(8) |
2015 |
Jan
|
Feb
(4) |
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2024 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Mark S. <ma...@su...> - 2007-07-26 21:32:35
|
On Thursday 26 July 2007 17:18, Jahangir Mohammed wrote: > Hello , > > I have a weird problem. > > Problem : The session doesnt expire at all in my cgi script. > > Purpose : To expire the session and show the user login form > after the user is idle for 2 minutes. > > Details: > I am using CGI::Session's 4.20 version. Did you remember to call "$session->flush()" before your script exits? Mark |
From: Jahangir M. <md....@gm...> - 2007-07-26 21:20:25
|
IyMjIyBURVNUSU5HICMjIyMjDQoNCllvdSBhcmUgZW5jb3VyYWdlZCB0byBydW4gdGVzdHMgZm9y IHRoZSBiYWNrZW5kIHlvdSB3aWxsIGJlIHVzaW5nLiBUaGUNCmRhdGFiYXNlIGJhY2tlbmRzIHRo YXQgbmVlZCBhIGN1c3RvbWl6ZWQgY29ubmVjdGlvbiBzdHJpbmcgd29uJ3QgcnVuIGJ5DQpkZWZh dWx0LiBUbyBydW4gdGhlbSwgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbXVzdCBiZSBzZXQu DQoNClRoZSBzaW1wbGVzdCBtZXRob2QgaXMgdG8gdXNlIHRoZSBzdGFuZGFyZCAiREJJX0RTTi9E QklfVVNFUi9EQklfUEFTUyINCmVudmlyb25tZW50IHZhcmlhYmxlcy4NCg0KT3RoZXJ3aXNlLCB5 b3UgY2FuIHNldCB0aGVzZSB2YXJpYWJsZXM6IA0KRm9yIFBvc3RncmVTUUw6DQogICAgQ0dJU0VT U19QR19EU04NCiAgICBDR0lTRVNTX1BHX1VTRVINCiAgICBDR0lTRVNTX1BHX1BBU1MNCg0KRm9y IE15U1FMOg0KICAgIENHSVNFU1NfTVlTUUxfRFNODQogICAgQ0dJU0VTU19NWVNRTF9VU0VSDQog ICAgQ0dJU0VTU19NWVNRTF9QQVNTDQogICAgQ0dJU0VTU19NWVNRTF9TT0NLRVQNCg0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQ2hlY2tpbmcgaWYgeW91ciBraXQg aXMgY29tcGxldGUuLi4NCkxvb2tzIGdvb2QNCldyaXRpbmcgTWFrZWZpbGUgZm9yIENHSTo6U2Vz c2lvbg0KY3AgbGliL0NHSS9TZXNzaW9uL1Rlc3QvRGVmYXVsdC5wbSBibGliL2xpYi9DR0kvU2Vz c2lvbi9UZXN0L0RlZmF1bHQucG0NCmNwIGxpYi9DR0kvU2Vzc2lvbi9Ecml2ZXIvcG9zdGdyZXNx bC5wbSBibGliL2xpYi9DR0kvU2Vzc2lvbi9Ecml2ZXIvcG9zdGdyZXNxbC5wbQ0KY3AgbGliL0NH SS9TZXNzaW9uL0RyaXZlci9zcWxpdGUucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL3Nx bGl0ZS5wbQ0KY3AgbGliL0NHSS9TZXNzaW9uL0RyaXZlci5wbSBibGliL2xpYi9DR0kvU2Vzc2lv bi9Ecml2ZXIucG0NCmNwIGxpYi9DR0kvU2Vzc2lvbi9TZXJpYWxpemUvc3RvcmFibGUucG0gYmxp Yi9saWIvQ0dJL1Nlc3Npb24vU2VyaWFsaXplL3N0b3JhYmxlLnBtDQpjcCBsaWIvQ0dJL1Nlc3Np b24vU2VyaWFsaXplL2pzb24ucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vU2VyaWFsaXplL2pzb24u cG0NCmNwIGxpYi9DR0kvU2Vzc2lvbi9JRC9zdGF0aWMucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24v SUQvc3RhdGljLnBtDQpjcCBsaWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0gYmxpYi9s aWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0NCmNwIGxpYi9DR0kvU2Vzc2lvbi9Ecml2 ZXIvbXlzcWwucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL215c3FsLnBtDQpjcCBsaWIv Q0dJL1Nlc3Npb24ucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24ucG0NCmNwIGxpYi9DR0kvU2Vzc2lv bi9Ecml2ZXIvREJJLnBtIGJsaWIvbGliL0NHSS9TZXNzaW9uL0RyaXZlci9EQkkucG0NCmNwIGxp Yi9DR0kvU2Vzc2lvbi9UdXRvcmlhbC5wbSBibGliL2xpYi9DR0kvU2Vzc2lvbi9UdXRvcmlhbC5w bQ0KY3AgbGliL0NHSS9TZXNzaW9uL0lEL2luY3IucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vSUQv aW5jci5wbQ0KY3AgbGliL0NHSS9TZXNzaW9uL1NlcmlhbGl6ZS9mcmVlemV0aGF3LnBtIGJsaWIv bGliL0NHSS9TZXNzaW9uL1NlcmlhbGl6ZS9mcmVlemV0aGF3LnBtDQpjcCBsaWIvQ0dJL1Nlc3Np b24vU2VyaWFsaXplL3lhbWwucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vU2VyaWFsaXplL3lhbWwu cG0NCmNwIGxpYi9DR0kvU2Vzc2lvbi9FcnJvckhhbmRsZXIucG0gYmxpYi9saWIvQ0dJL1Nlc3Np b24vRXJyb3JIYW5kbGVyLnBtDQpjcCBsaWIvQ0dJL1Nlc3Npb24vU2VyaWFsaXplL2RlZmF1bHQu cG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vU2VyaWFsaXplL2RlZmF1bHQucG0NCmNwIGxpYi9DR0kv U2Vzc2lvbi9Ecml2ZXIvZmlsZS5wbSBibGliL2xpYi9DR0kvU2Vzc2lvbi9Ecml2ZXIvZmlsZS5w bQ0KY3AgbGliL0NHSS9TZXNzaW9uL0lEL21kNS5wbSBibGliL2xpYi9DR0kvU2Vzc2lvbi9JRC9t ZDUucG0NCk1hbmlmeWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpUZXN0OjpEZWZhdWx0LjNw bQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OkRyaXZlcjo6cG9zdGdyZXNxbC4z cG0NCk1hbmlmeWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpEcml2ZXI6OnNxbGl0ZS4zcG0N Ck1hbmlmeWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpEcml2ZXIuM3BtDQpNYW5pZnlpbmcg YmxpYi9tYW4zL0NHSTo6U2Vzc2lvbjo6SUQ6OnN0YXRpYy4zcG0NCk1hbmlmeWluZyBibGliL21h bjMvQ0dJOjpTZXNzaW9uOjpTZXJpYWxpemU6Ompzb24uM3BtDQpNYW5pZnlpbmcgYmxpYi9tYW4z L0NHSTo6U2Vzc2lvbjo6U2VyaWFsaXplOjpzdG9yYWJsZS4zcG0NCk1hbmlmeWluZyBibGliL21h bjMvQ0dJOjpTZXNzaW9uOjpEcml2ZXI6Om15c3FsLjNwbQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9D R0k6OlNlc3Npb246OkRyaXZlcjo6ZGJfZmlsZS4zcG0NCk1hbmlmeWluZyBibGliL21hbjMvQ0dJ OjpTZXNzaW9uLjNwbQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OkRyaXZlcjo6 REJJLjNwbQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OlR1dG9yaWFsLjNwbQ0K TWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OklEOjppbmNyLjNwbQ0KTWFuaWZ5aW5n IGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OlNlcmlhbGl6ZTo6ZnJlZXpldGhhdy4zcG0NCk1hbmlm eWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpTZXJpYWxpemU6OnlhbWwuM3BtDQpNYW5pZnlp bmcgYmxpYi9tYW4zL0NHSTo6U2Vzc2lvbjo6RXJyb3JIYW5kbGVyLjNwbQ0KTWFuaWZ5aW5nIGJs aWIvbWFuMy9DR0k6OlNlc3Npb246OlNlcmlhbGl6ZTo6ZGVmYXVsdC4zcG0NCk1hbmlmeWluZyBi bGliL21hbjMvQ0dJOjpTZXNzaW9uOjpEcml2ZXI6OmZpbGUuM3BtDQpNYW5pZnlpbmcgYmxpYi9t YW4zL0NHSTo6U2Vzc2lvbjo6SUQ6Om1kNS4zcG0NCiAgL3Vzci9iaW4vbWFrZSAgLS0gT0sNClJ1 bm5pbmcgbWFrZSB0ZXN0DQpQRVJMX0RMX05PTkxBWlk9MSAvdXNyL2Jpbi9wZXJsICItTUV4dFV0 aWxzOjpDb21tYW5kOjpNTSIgIi1lIiAidGVzdF9oYXJuZXNzKDAsICdibGliL2xpYicsICdibGli L2FyY2gnKSIgdC8qLnQNCnQvYXBpM19kYl9maWxlLi4uLi4uLi4uLi4uLi4uLi4ub2sgMS8xNGNv dWxkbid0IGxvY2sgJ3QvY2dpc2Vzcy5kYi5sY2snOiBObyBsb2NrcyBhdmFpbGFibGUgYXQgL2hv bWUvbWFzd2FwbmEvLmNwYW4vYnVpbGQvQ0dJLVNlc3Npb24tNC4yMC9ibGliL2xpYi9DR0kvU2Vz c2lvbi9Ecml2ZXIvZGJfZmlsZS5wbSBsaW5lIDEwMS4NCiAgICAgICAgKGluIGNsZWFudXApIGNv dWxkbid0IGxvY2sgJ3QvY2dpc2Vzcy5kYi5sY2snOiBObyBsb2NrcyBhdmFpbGFibGUgYXQgL2hv bWUvbWFzd2FwbmEvLmNwYW4vYnVpbGQvQ0dJLVNlc3Npb24tNC4yMC9ibGliL2xpYi9DR0kvU2Vz c2lvbi9Ecml2ZXIvZGJfZmlsZS5wbSBsaW5lIDEwMS4NCiMgTG9va3MgbGlrZSB5b3UgcGxhbm5l ZCAxNCB0ZXN0cyBidXQgb25seSByYW4gOS4NCiMgTG9va3MgbGlrZSB5b3VyIHRlc3QgZGllZCBq dXN0IGFmdGVyIDkuDQp0L2FwaTNfZGJfZmlsZS4uLi4uLi4uLi4uLi4uLi4uLmR1YmlvdXMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICBUZXN0IHJldHVybmVk IHN0YXR1cyAyNTUgKHdzdGF0IDY1MjgwLCAweGZmMDApDQpESUVELiBGQUlMRUQgdGVzdHMgMTAt MTQNCiAgICAgICAgRmFpbGVkIDUvMTQgdGVzdHMsIDY0LjI5JSBva2F5DQp0L2FwaTNfZGJfZmls ZV9mcmVlemV0aGF3Li4uLi4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IEZyZWV6ZVRo YXcgbm90IGF2YWlsYWJsZQ0KdC9hcGkzX2RiX2ZpbGVfc3RvcmFibGUuLi4uLi4uLi5vayAxLzE0 Y291bGRuJ3QgbG9jayAndC9jZ2lzZXNzLmRiLmxjayc6IE5vIGxvY2tzIGF2YWlsYWJsZSBhdCAv aG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2JsaWIvbGliL0NHSS9T ZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgMTAxLg0KICAgICAgICAoaW4gY2xlYW51cCkg Y291bGRuJ3QgbG9jayAndC9jZ2lzZXNzLmRiLmxjayc6IE5vIGxvY2tzIGF2YWlsYWJsZSBhdCAv aG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2JsaWIvbGliL0NHSS9T ZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgMTAxLg0KIyBMb29rcyBsaWtlIHlvdSBwbGFu bmVkIDE0IHRlc3RzIGJ1dCBvbmx5IHJhbiA5Lg0KIyBMb29rcyBsaWtlIHlvdXIgdGVzdCBkaWVk IGp1c3QgYWZ0ZXIgOS4NCnQvYXBpM19kYl9maWxlX3N0b3JhYmxlLi4uLi4uLi4uZHViaW91cyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3QgcmV0dXJu ZWQgc3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyAx MC0xNA0KICAgICAgICBGYWlsZWQgNS8xNCB0ZXN0cywgNjQuMjklIG9rYXkNCnQvYXBpM19kYl9m aWxlX3N0b3JhYmxlX2luY3IuLi4ub2sgMS8xNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgDQojICAgICBGYWlsZWQgdGVzdCAodC9hcGkzX2RiX2ZpbGVfc3RvcmFibGVfaW5j ci50IGF0IGxpbmUgMjYpDQpDYW4ndCBjYWxsIG1ldGhvZCAiaWQiIG9uIGFuIHVuZGVmaW5lZCB2 YWx1ZSBhdCB0L2FwaTNfZGJfZmlsZV9zdG9yYWJsZV9pbmNyLnQgbGluZSAyNy4NCnQvYXBpM19k Yl9maWxlX3N0b3JhYmxlX2luY3IuLi4uTk9LIDMjIExvb2tzIGxpa2UgeW91IHBsYW5uZWQgMTUg dGVzdHMgYnV0IG9ubHkgcmFuIDMuDQojIExvb2tzIGxpa2UgeW91ciB0ZXN0IGRpZWQganVzdCBh ZnRlciAzLg0KdC9hcGkzX2RiX2ZpbGVfc3RvcmFibGVfaW5jci4uLi5kdWJpb3VzICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVzdCByZXR1cm5lZCBzdGF0 dXMgMjU1ICh3c3RhdCA2NTI4MCwgMHhmZjAwKQ0KRElFRC4gRkFJTEVEIHRlc3RzIDMtMTUNCiAg ICAgICAgRmFpbGVkIDEzLzE1IHRlc3RzLCAxMy4zMyUgb2theQ0KdC9hcGkzX2ZpbGUuLi4uLi4u Li4uLi4uLi4uLi4uLi5vayAxLzE3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICANCiMgICAgIEZhaWxlZCB0ZXN0ICh0L2FwaTNfZmlsZS50IGF0IGxpbmUgNDIpDQpDYW4ndCBj YWxsIG1ldGhvZCAiaWQiIG9uIGFuIHVuZGVmaW5lZCB2YWx1ZSBhdCB0L2FwaTNfZmlsZS50IGxp bmUgNDQuDQp0L2FwaTNfZmlsZS4uLi4uLi4uLi4uLi4uLi4uLi4uLk5PSyAxMCMgTG9va3MgbGlr ZSB5b3UgcGxhbm5lZCAxNyB0ZXN0cyBidXQgb25seSByYW4gMTAuDQojIExvb2tzIGxpa2UgeW91 ciB0ZXN0IGRpZWQganVzdCBhZnRlciAxMC4NCnQvYXBpM19maWxlLi4uLi4uLi4uLi4uLi4uLi4u Li4uZHViaW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg IFRlc3QgcmV0dXJuZWQgc3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZB SUxFRCB0ZXN0cyAxMC0xNw0KICAgICAgICBGYWlsZWQgOC8xNyB0ZXN0cywgNTIuOTQlIG9rYXkN CnQvYXBpM19maWxlX2ZyZWV6ZXRoYXcuLi4uLi4uLi4uc2tpcHBlZA0KICAgICAgICBhbGwgc2tp cHBlZDogRnJlZXplVGhhdyBub3QgYXZhaWxhYmxlDQp0L2FwaTNfZmlsZV9mcmVlemV0aGF3X2lu Y3IuLi4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IEZyZWV6ZVRoYXcgbm90IGF2YWls YWJsZQ0KdC9hcGkzX2ZpbGVfc3RvcmFibGUuLi4uLi4uLi4uLi5vayAxLzE0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICANCiMgICAgIEZhaWxlZCB0ZXN0ICh0L2FwaTNfZmls ZV9zdG9yYWJsZS50IGF0IGxpbmUgNDYpDQpDYW4ndCBjYWxsIG1ldGhvZCAiaWQiIG9uIGFuIHVu ZGVmaW5lZCB2YWx1ZSBhdCB0L2FwaTNfZmlsZV9zdG9yYWJsZS50IGxpbmUgNDguDQp0L2FwaTNf ZmlsZV9zdG9yYWJsZS4uLi4uLi4uLi4uLk5PSyAxMCMgTG9va3MgbGlrZSB5b3UgcGxhbm5lZCAx NCB0ZXN0cyBidXQgb25seSByYW4gMTAuDQojIExvb2tzIGxpa2UgeW91ciB0ZXN0IGRpZWQganVz dCBhZnRlciAxMC4NCnQvYXBpM19maWxlX3N0b3JhYmxlLi4uLi4uLi4uLi4uZHViaW91cyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3QgcmV0dXJuZWQg c3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyAxMC0x NA0KICAgICAgICBGYWlsZWQgNS8xNCB0ZXN0cywgNjQuMjklIG9rYXkNCnQvYXBpM19maWxlX3N0 b3JhYmxlX2luY3IuLi4uLi4ub2sgMS8xNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgDQojICAgICBGYWlsZWQgdGVzdCAodC9hcGkzX2ZpbGVfc3RvcmFibGVfaW5jci50IGF0 IGxpbmUgMjMpDQpDYW4ndCBjYWxsIG1ldGhvZCAiaWQiIG9uIGFuIHVuZGVmaW5lZCB2YWx1ZSBh dCB0L2FwaTNfZmlsZV9zdG9yYWJsZV9pbmNyLnQgbGluZSAyNC4NCnQvYXBpM19maWxlX3N0b3Jh YmxlX2luY3IuLi4uLi4uTk9LIDMjIExvb2tzIGxpa2UgeW91IHBsYW5uZWQgMTUgdGVzdHMgYnV0 IG9ubHkgcmFuIDMuDQojIExvb2tzIGxpa2UgeW91ciB0ZXN0IGRpZWQganVzdCBhZnRlciAzLg0K dC9hcGkzX2ZpbGVfc3RvcmFibGVfaW5jci4uLi4uLi5kdWJpb3VzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVzdCByZXR1cm5lZCBzdGF0dXMgMjU1ICh3 c3RhdCA2NTI4MCwgMHhmZjAwKQ0KRElFRC4gRkFJTEVEIHRlc3RzIDMtMTUNCiAgICAgICAgRmFp bGVkIDEzLzE1IHRlc3RzLCAxMy4zMyUgb2theQ0KdC9hcGkzX2luY3IuLi4uLi4uLi4uLi4uLi4u Li4uLi5vayAxLzE0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiMgICAg IEZhaWxlZCB0ZXN0ICh0L2FwaTNfaW5jci50IGF0IGxpbmUgMjcpDQpDYW4ndCBjYWxsIG1ldGhv ZCAiaWQiIG9uIGFuIHVuZGVmaW5lZCB2YWx1ZSBhdCB0L2FwaTNfaW5jci50IGxpbmUgMjguDQp0 L2FwaTNfaW5jci4uLi4uLi4uLi4uLi4uLi4uLi4uLk5PSyAyIyBMb29rcyBsaWtlIHlvdSBwbGFu bmVkIDE0IHRlc3RzIGJ1dCBvbmx5IHJhbiAyLg0KIyBMb29rcyBsaWtlIHlvdXIgdGVzdCBkaWVk IGp1c3QgYWZ0ZXIgMi4NCnQvYXBpM19pbmNyLi4uLi4uLi4uLi4uLi4uLi4uLi4uZHViaW91cyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3QgcmV0dXJu ZWQgc3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyAy LTE0DQogICAgICAgIEZhaWxlZCAxMy8xNCB0ZXN0cywgNy4xNCUgb2theQ0KdC9hcGkzX29ial9z dG9yZS4uLi4uLi4uLi4uLi4uLi4jVXNpbmcgU3RvcmFibGUgYXMgb2JqZWN0IHNlcmlhbGl6ZXIN CkNhbid0IGNhbGwgbWV0aG9kICJpZCIgb24gYW4gdW5kZWZpbmVkIHZhbHVlIGF0IHQvYXBpM19v Ympfc3RvcmUudCBsaW5lIDU0ICgjMSkNCiAgICAoRikgWW91IHVzZWQgdGhlIHN5bnRheCBvZiBh IG1ldGhvZCBjYWxsLCBidXQgdGhlIHNsb3QgZmlsbGVkIGJ5IHRoZQ0KICAgIG9iamVjdCByZWZl cmVuY2Ugb3IgcGFja2FnZSBuYW1lIGNvbnRhaW5zIGFuIHVuZGVmaW5lZCB2YWx1ZS4gIFNvbWV0 aGluZw0KICAgIGxpa2UgdGhpcyB3aWxsIHJlcHJvZHVjZSB0aGUgZXJyb3I6DQogICAgDQogICAg ICAgICRCQURSRUYgPSB1bmRlZjsNCiAgICAgICAgcHJvY2VzcyAkQkFEUkVGIDEsMiwzOw0KICAg ICAgICAkQkFEUkVGLT5wcm9jZXNzKDEsMiwzKTsNCiAgICANClVuY2F1Z2h0IGV4Y2VwdGlvbiBm cm9tIHVzZXIgY29kZToNCiAgICAgICAgQ2FuJ3QgY2FsbCBtZXRob2QgImlkIiBvbiBhbiB1bmRl ZmluZWQgdmFsdWUgYXQgdC9hcGkzX29ial9zdG9yZS50IGxpbmUgNTQuDQogYXQgdC9hcGkzX29i al9zdG9yZS50IGxpbmUgNTQNCnQvYXBpM19vYmpfc3RvcmUuLi4uLi4uLi4uLi4uLi4uZHViaW91 cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3QgcmV0 dXJuZWQgc3RhdHVzIDM3ICh3c3RhdCA5NDcyLCAweDI1MDApDQpESUVELiBGQUlMRUQgdGVzdHMg NS04DQogICAgICAgIEZhaWxlZCA0LzggdGVzdHMsIDUwLjAwJSBva2F5DQp0L2FwaTNfb2JqX3N0 b3JlX2RiX2ZpbGUuLi4uLi4uLlVuY2F1Z2h0IGV4Y2VwdGlvbiBmcm9tIHVzZXIgY29kZToNCiAg ICAgICAgY291bGRuJ3QgbG9jayAndC9jZ2lzZXNzLmRiLmxjayc6IE5vIGxvY2tzIGF2YWlsYWJs ZSBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2JsaWIvbGli L0NHSS9TZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgMTAxLg0KIGF0IC9ob21lL21hc3dh cG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJp dmVyL2RiX2ZpbGUucG0gbGluZSAxMDENCiAgICAgICAgQ0dJOjpTZXNzaW9uOjpEcml2ZXI6OmRi X2ZpbGU6Ol9sb2NrKCdDR0k6OlNlc3Npb246OkRyaXZlcjo6ZGJfZmlsZT1IQVNIKDB4YTMwM2Mw KScsICd0L2NnaXNlc3MuZGInLCAyKSBjYWxsZWQgYXQgL2hvbWUvbWFzd2FwbmEvLmNwYW4vYnVp bGQvQ0dJLVNlc3Npb24tNC4yMC9ibGliL2xpYi9DR0kvU2Vzc2lvbi9Ecml2ZXIvZGJfZmlsZS5w bSBsaW5lIDEyMw0KICAgICAgICBDR0k6OlNlc3Npb246OkRyaXZlcjo6ZGJfZmlsZTo6X3RpZV9k Yl9maWxlKCdDR0k6OlNlc3Npb246OkRyaXZlcjo6ZGJfZmlsZT1IQVNIKDB4YTMwM2MwKScsIDIs IDIpIGNhbGxlZCBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIw L2JsaWIvbGliL0NHSS9TZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgNjANCiAgICAgICAg Q0dJOjpTZXNzaW9uOjpEcml2ZXI6OmRiX2ZpbGU6OnN0b3JlKCdDR0k6OlNlc3Npb246OkRyaXZl cjo6ZGJfZmlsZT1IQVNIKDB4YTMwM2MwKScsICcxNTI5YWNjZTA3OTNkOWRjNDIxNjg2MGFiYWNl NmQzYycsICdceHs0fVx4ezZ9XHh7OH0xMjM0NTY3OFx4ezR9XHh7OH1ceHs4fVx4ezh9XHh7M31c eHs1fVx4ezB9XHh7MH1ceHswfVx4ezR9XHh7MTF9XHh7M31DR0lceHszfVx4ezV9XHh7MH1ceHsw fVx4ezB9XHh7NH1ceHsyfVx4ezF9XHh7MH1ceHswfVx4ezB9XHh7YX1ceHs0fW5hbWVceHtifVx4 ezB9XHh7MH1ceHswfS5wYXJhbWV0ZXJzXHh7YX1ceHthfUkuLi4nKSBjYWxsZWQgYXQgL2hvbWUv bWFzd2FwbmEvLmNwYW4vYnVpbGQvQ0dJLVNlc3Npb24tNC4yMC9ibGliL2xpYi9DR0kvU2Vzc2lv bi5wbSBsaW5lIDI0NA0KICAgICAgICBDR0k6OlNlc3Npb246OmZsdXNoKCdDR0k6OlNlc3Npb249 SEFTSCgweDlhZGQ1MCknKSBjYWxsZWQgYXQgdC9hcGkzX29ial9zdG9yZV9kYl9maWxlLnQgbGlu ZSA1MA0KICAgICAgICAoaW4gY2xlYW51cCkgY291bGRuJ3QgbG9jayAndC9jZ2lzZXNzLmRiLmxj ayc6IE5vIGxvY2tzIGF2YWlsYWJsZSBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0kt U2Vzc2lvbi00LjIwL2JsaWIvbGliL0NHSS9TZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUg MTAxLg0KdC9hcGkzX29ial9zdG9yZV9kYl9maWxlLi4uLi4uLi5kdWJpb3VzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVzdCByZXR1cm5lZCBzdGF0dXMg MiAod3N0YXQgNTEyLCAweDIwMCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyA1LTgNCiAgICAgICAgRmFp bGVkIDQvOCB0ZXN0cywgNTAuMDAlIG9rYXkNCnQvYnVnMjE5NTIuLi4uLi4uLi4uLi4uLi4uLi4u Li4ub2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp0L2NnaV9z aW1wbGUuLi4uLi4uLi4uLi4uLi4uLi4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IENH STo6U2ltcGxlIG5vdCBpbnN0YWxsZWQsIHNvIHNraXBwaW5nIHJlbGF0ZWQgdGVzdHMuDQp0L2Nv bXBsZXhfZHMuLi4uLi4uLi4uLi4uLi4uLi4uLm9rIDEvMTBuZXcoKTogZmFpbGVkOiBsb2FkKCk6 IGNvdWxkbid0IHJldHJpZXZlIGRhdGE6IHJldHJpZXZlKCk6IGNvdWxkbid0IGxvY2sgJ3QvY2dp c2Vzc18xZTYxOTkwOGQ4Mzc2NmFkYmUyY2Y4YWM0NDA3NWEyZSc6IE5vIGxvY2tzIGF2YWlsYWJs ZSBhdCB0L2NvbXBsZXhfZHMudCBsaW5lIDQyLg0KIyBMb29rcyBsaWtlIHlvdSBwbGFubmVkIDEw IHRlc3RzIGJ1dCBvbmx5IHJhbiA2Lg0KdC9jb21wbGV4X2RzLi4uLi4uLi4uLi4uLi4uLi4uLi5k dWJpb3VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVz dCByZXR1cm5lZCBzdGF0dXMgNCAod3N0YXQgMTAyNCwgMHg0MDApDQpESUVELiBGQUlMRUQgdGVz dHMgNy0xMA0KICAgICAgICBGYWlsZWQgNC8xMCB0ZXN0cywgNjAuMDAlIG9rYXkNCnQvZHJpdmVy X2RiaS4uLi4uLi4uLi4uLi4uLi4uLi4ub2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgDQp0L2V4cGlyZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLm9rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KdC9maW5kLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi5vayAxLzggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN CiMgICAgIEZhaWxlZCB0ZXN0ICh0L2ZpbmQudCBhdCBsaW5lIDY2KQ0KIyAgICAgICAgICBnb3Q6 ICdmaW5kKCk6IGNvdWxkbid0IGxvYWQgc2Vzc2lvbiAnNDdmNzU0NzI4ZTE4NTE4OWM3OWRiNzMw M2ViZWQ0OWInLiBsb2FkKCk6IGNvdWxkbid0IHJldHJpZXZlIGRhdGE6IHJldHJpZXZlKCk6IGNv dWxkbid0IGxvY2sgJ3QvY2dpc2Vzc180N2Y3NTQ3MjhlMTg1MTg5Yzc5ZGI3MzAzZWJlZDQ5Yic6 IE5vIGxvY2tzIGF2YWlsYWJsZScNCiMgICAgIGV4cGVjdGVkOiAnJw0KdC9maW5kLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi5OT0sgNCMgTG9va3MgbGlrZSB5b3UgcGxhbm5lZCA4IHRlc3RzIGJ1 dCBvbmx5IHJhbiA0Lg0KdC9maW5kLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5kdWJpb3VzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVzdCByZXR1cm5l ZCBzdGF0dXMgNSAod3N0YXQgMTI4MCwgMHg1MDApDQpESUVELiBGQUlMRUQgdGVzdHMgNC04DQog ICAgICAgIEZhaWxlZCA1LzggdGVzdHMsIDM3LjUwJSBva2F5DQp0L2ZsdXNoLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLm9rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IA0KdC9nNC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5vayA3OS8xMDFsb2FkKCk6IGNvdWxk bid0IHJldHJpZXZlIGRhdGE6IHJldHJpZXZlKCk6IGNvdWxkbid0IGxvY2sgJ3Qvc2Vzc2lvbmRh dGEvY2dpc2Vzc182OGIyZjBmYTBlYTRiNTE0ZWVkYmRhODRlODMwOTk1OSc6IE5vIGxvY2tzIGF2 YWlsYWJsZSBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2Js aWIvbGliL0NHSS9TZXNzaW9uL1Rlc3QvRGVmYXVsdC5wbSBsaW5lIDE5OC4NCiMgTG9va3MgbGlr ZSB5b3UgcGxhbm5lZCAxMDEgdGVzdHMgYnV0IG9ubHkgcmFuIDc5Lg0KIyBMb29rcyBsaWtlIHlv dXIgdGVzdCBkaWVkIGp1c3QgYWZ0ZXIgNzkuDQp0L2c0Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLmR1YmlvdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAg ICBUZXN0IHJldHVybmVkIHN0YXR1cyAyNTUgKHdzdGF0IDY1MjgwLCAweGZmMDApDQpESUVELiBG QUlMRUQgdGVzdHMgODAtMTAxDQogICAgICAgIEZhaWxlZCAyMi8xMDEgdGVzdHMsIDc4LjIyJSBv a2F5IChsZXNzIDU2IHNraXBwZWQgdGVzdHM6IDIzIG9rYXksIDIyLjc3JSkNCnQvZzRfZGJmaWxl Li4uLi4uLi4uLi4uLi4uLi4uLi4ub2sgMS8xMDFjb3VsZG4ndCBsb2NrICd0L3Nlc3Npb25kYXRh L2NnaXNlc3MuZGIubGNrJzogTm8gbG9ja3MgYXZhaWxhYmxlIGF0IC9ob21lL21hc3dhcG5hLy5j cGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2Ri X2ZpbGUucG0gbGluZSAxMDEuDQogICAgICAgIChpbiBjbGVhbnVwKSBjb3VsZG4ndCBsb2NrICd0 L3Nlc3Npb25kYXRhL2NnaXNlc3MuZGIubGNrJzogTm8gbG9ja3MgYXZhaWxhYmxlIGF0IC9ob21l L21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxpYi9saWIvQ0dJL1Nlc3Np b24vRHJpdmVyL2RiX2ZpbGUucG0gbGluZSAxMDEuDQojIExvb2tzIGxpa2UgeW91IHBsYW5uZWQg MTAxIHRlc3RzIGJ1dCBvbmx5IHJhbiAyMS4NCiMgTG9va3MgbGlrZSB5b3VyIHRlc3QgZGllZCBq dXN0IGFmdGVyIDIxLg0KdC9nNF9kYmZpbGUuLi4uLi4uLi4uLi4uLi4uLi4uLi5kdWJpb3VzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVzdCByZXR1cm5l ZCBzdGF0dXMgMjU1ICh3c3RhdCA2NTI4MCwgMHhmZjAwKQ0KRElFRC4gRkFJTEVEIHRlc3RzIDIy LTEwMQ0KICAgICAgICBGYWlsZWQgODAvMTAxIHRlc3RzLCAyMC43OSUgb2theQ0KdC9nNF9kYmZp bGVfZnJlZXpldGhhdy4uLi4uLi4uLi5za2lwcGVkDQogICAgICAgIGFsbCBza2lwcGVkOiBGcmVl emVUaGF3IGlzIE5PVCBhdmFpbGFibGUNCnQvZzRfZGJmaWxlX2pzb24uLi4uLi4uLi4uLi4uLi4u IyBKU09OOjpTeWNrDQp0L2c0X2RiZmlsZV9qc29uLi4uLi4uLi4uLi4uLi4uLm9rIDEvMTAxY291 bGRuJ3QgbG9jayAndC9zZXNzaW9uZGF0YS9jZ2lzZXNzLmRiLmxjayc6IE5vIGxvY2tzIGF2YWls YWJsZSBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2JsaWIv bGliL0NHSS9TZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgMTAxLg0KICAgICAgICAoaW4g Y2xlYW51cCkgY291bGRuJ3QgbG9jayAndC9zZXNzaW9uZGF0YS9jZ2lzZXNzLmRiLmxjayc6IE5v IGxvY2tzIGF2YWlsYWJsZSBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lv bi00LjIwL2JsaWIvbGliL0NHSS9TZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgMTAxLg0K IyBMb29rcyBsaWtlIHlvdSBwbGFubmVkIDEwMSB0ZXN0cyBidXQgb25seSByYW4gMjEuDQojIExv b2tzIGxpa2UgeW91ciB0ZXN0IGRpZWQganVzdCBhZnRlciAyMS4NCnQvZzRfZGJmaWxlX2pzb24u Li4uLi4uLi4uLi4uLi4uZHViaW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgDQogICAgICAgIFRlc3QgcmV0dXJuZWQgc3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYw MCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyAyMi0xMDENCiAgICAgICAgRmFpbGVkIDgwLzEwMSB0ZXN0 cywgMjAuNzklIG9rYXkNCnQvZzRfZGJmaWxlX3N0b3JhYmxlLi4uLi4uLi4uLi4ub2sgMS8xMDFj b3VsZG4ndCBsb2NrICd0L3Nlc3Npb25kYXRhL2NnaXNlc3MuZGIubGNrJzogTm8gbG9ja3MgYXZh aWxhYmxlIGF0IC9ob21lL21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxp Yi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0gbGluZSAxMDEuDQogICAgICAgIChp biBjbGVhbnVwKSBjb3VsZG4ndCBsb2NrICd0L3Nlc3Npb25kYXRhL2NnaXNlc3MuZGIubGNrJzog Tm8gbG9ja3MgYXZhaWxhYmxlIGF0IC9ob21lL21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNz aW9uLTQuMjAvYmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0gbGluZSAxMDEu DQojIExvb2tzIGxpa2UgeW91IHBsYW5uZWQgMTAxIHRlc3RzIGJ1dCBvbmx5IHJhbiAyMS4NCiMg TG9va3MgbGlrZSB5b3VyIHRlc3QgZGllZCBqdXN0IGFmdGVyIDIxLg0KdC9nNF9kYmZpbGVfc3Rv cmFibGUuLi4uLi4uLi4uLi5kdWJpb3VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICANCiAgICAgICAgVGVzdCByZXR1cm5lZCBzdGF0dXMgMjU1ICh3c3RhdCA2NTI4MCwgMHhm ZjAwKQ0KRElFRC4gRkFJTEVEIHRlc3RzIDIyLTEwMQ0KICAgICAgICBGYWlsZWQgODAvMTAxIHRl c3RzLCAyMC43OSUgb2theQ0KdC9nNF9kYmZpbGVfeWFtbC4uLi4uLi4uLi4uLi4uLi4jIFlBTUw6 OlN5Y2sNCnQvZzRfZGJmaWxlX3lhbWwuLi4uLi4uLi4uLi4uLi4ub2sgMS8xMDFjb3VsZG4ndCBs b2NrICd0L3Nlc3Npb25kYXRhL2NnaXNlc3MuZGIubGNrJzogTm8gbG9ja3MgYXZhaWxhYmxlIGF0 IC9ob21lL21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxpYi9saWIvQ0dJ L1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0gbGluZSAxMDEuDQogICAgICAgIChpbiBjbGVhbnVw KSBjb3VsZG4ndCBsb2NrICd0L3Nlc3Npb25kYXRhL2NnaXNlc3MuZGIubGNrJzogTm8gbG9ja3Mg YXZhaWxhYmxlIGF0IC9ob21lL21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAv YmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0gbGluZSAxMDEuDQojIExvb2tz IGxpa2UgeW91IHBsYW5uZWQgMTAxIHRlc3RzIGJ1dCBvbmx5IHJhbiAyMS4NCiMgTG9va3MgbGlr ZSB5b3VyIHRlc3QgZGllZCBqdXN0IGFmdGVyIDIxLg0KdC9nNF9kYmZpbGVfeWFtbC4uLi4uLi4u Li4uLi4uLi5kdWJpb3VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAg ICAgICAgVGVzdCByZXR1cm5lZCBzdGF0dXMgMjU1ICh3c3RhdCA2NTI4MCwgMHhmZjAwKQ0KRElF RC4gRkFJTEVEIHRlc3RzIDIyLTEwMQ0KICAgICAgICBGYWlsZWQgODAvMTAxIHRlc3RzLCAyMC43 OSUgb2theQ0KdC9nNF9mcmVlemV0aGF3Li4uLi4uLi4uLi4uLi4uLi5za2lwcGVkDQogICAgICAg IGFsbCBza2lwcGVkOiBGcmVlemVUaGF3IGlzIE5PVCBhdmFpbGFibGUNCnQvZzRfbXlzcWwuLi4u Li4uLi4uLi4uLi4uLi4uLi4uc2tpcHBlZA0KICAgICAgICBhbGwgc2tpcHBlZDogQ291bGRuJ3Qg ZXN0YWJsaXNoIGNvbm5lY3Rpb24gd2l0aCB0aGUgTXlTUUwgc2VydmVyOiBDYW4ndCBjb25uZWN0 IHRvIGRhdGEgc291cmNlICwgbm8gZGF0YWJhc2UgZHJpdmVyIHNwZWNpZmllZCBhbmQgREJJX0RT TiBlbnYgdmFyIG5vdCBzZXQgYXQgdC9nNF9teXNxbC50IGxpbmUgNDQNCnQvZzRfbXlzcWxfZnJl ZXpldGhhdy4uLi4uLi4uLi4uc2tpcHBlZA0KICAgICAgICBhbGwgc2tpcHBlZDogRnJlZXplVGhh dyBpcyBOT1QgYXZhaWxhYmxlDQp0L2c0X215c3FsX3N0b3JhYmxlLi4uLi4uLi4uLi4uLnNraXBw ZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IENvdWxkbid0IGVzdGFibGlzaCBjb25uZWN0aW9uIHdp dGggdGhlIE15U1FMIHNlcnZlcjogQ2FuJ3QgY29ubmVjdCB0byBkYXRhIHNvdXJjZSAsIG5vIGRh dGFiYXNlIGRyaXZlciBzcGVjaWZpZWQgYW5kIERCSV9EU04gZW52IHZhciBub3Qgc2V0IGF0IHQv ZzRfbXlzcWxfc3RvcmFibGUudCBsaW5lIDQzDQp0L2c0X3Bvc3RncmVzcWwuLi4uLi4uLi4uLi4u Li4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IERhdGFTb3VyY2UgaXMgbm90IGtub3du DQp0L2c0X3Bvc3RncmVzcWxfZnJlZXpldGhhdy4uLi4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNr aXBwZWQ6IERhdGFTb3VyY2UgaXMgbm90IGtub3duDQp0L2c0X3Bvc3RncmVzcWxfc3RvcmFibGUu Li4uLi4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IERhdGFTb3VyY2UgaXMgbm90IGtu b3duDQp0L2c0X3NxbGl0ZS4uLi4uLi4uLi4uLi4uLi4uLi4uLnNraXBwZWQNCiAgICAgICAgYWxs IHNraXBwZWQ6IERCRDo6U1FMaXRlIGlzIE5PVCBhdmFpbGFibGUNCnQvZzRfc3FsaXRlX2ZyZWV6 ZXRoYXcuLi4uLi4uLi4uc2tpcHBlZA0KICAgICAgICBhbGwgc2tpcHBlZDogREJEOjpTUUxpdGUg aXMgTk9UIGF2YWlsYWJsZQ0KdC9nNF9zcWxpdGVfc3RvcmFibGUuLi4uLi4uLi4uLi5za2lwcGVk DQogICAgICAgIGFsbCBza2lwcGVkOiBEQkQ6OlNRTGl0ZSBpcyBOT1QgYXZhaWxhYmxlDQp0L2c0 X3N0b3JhYmxlLi4uLi4uLi4uLi4uLi4uLi4uLm9rIDc5LzEwMWxvYWQoKTogY291bGRuJ3QgcmV0 cmlldmUgZGF0YTogcmV0cmlldmUoKTogY291bGRuJ3QgbG9jayAndC9zZXNzaW9uZGF0YS9jZ2lz ZXNzXzU3ZjJiN2Y4YmExOTQ5MjAwNTljNDEzMTBiMTQ4MDczJzogTm8gbG9ja3MgYXZhaWxhYmxl IGF0IC9ob21lL21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxpYi9saWIv Q0dJL1Nlc3Npb24vVGVzdC9EZWZhdWx0LnBtIGxpbmUgMTk4Lg0KIyBMb29rcyBsaWtlIHlvdSBw bGFubmVkIDEwMSB0ZXN0cyBidXQgb25seSByYW4gNzkuDQojIExvb2tzIGxpa2UgeW91ciB0ZXN0 IGRpZWQganVzdCBhZnRlciA3OS4NCnQvZzRfc3RvcmFibGUuLi4uLi4uLi4uLi4uLi4uLi4uZHVi aW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3Qg cmV0dXJuZWQgc3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZBSUxFRCB0 ZXN0cyA4MC0xMDENCiAgICAgICAgRmFpbGVkIDIyLzEwMSB0ZXN0cywgNzguMjIlIG9rYXkgKGxl c3MgNTYgc2tpcHBlZCB0ZXN0czogMjMgb2theSwgMjIuNzclKQ0KdC9oZWFkZXIuLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi5vayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICANCnQvaXBfbWF0Y2hlcy4uLi4uLi4uLi4uLi4uLi4uLi4ub2sgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgDQp0L2lzX25ldy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Lm9rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KdC9sb2FkLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi5vayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICANCnQvbmFtZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ub2sgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp0L3BhcnNlX2Rzbi4uLi4uLi4uLi4u Li4uLi4uLi4uLm9rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K dC9yZW1vdGVfYWRkci4uLi4uLi4uLi4uLi4uLi4uLi5vayAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICANCnQvc3RyMnNlY29uZHMuLi4uLi4uLi4uLi4uLi4uLi4ub2sg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp0L3N5bWxpbmtfZGJf ZmlsZS4uLi4uLi4uLi4uLi4uLm9rIDEvMTFjb3VsZG4ndCBsb2NrICd0L2NnaXNlc3Nfc3ltbGlu ay5kYi5sY2snOiBObyBsb2NrcyBhdmFpbGFibGUgYXQgL2hvbWUvbWFzd2FwbmEvLmNwYW4vYnVp bGQvQ0dJLVNlc3Npb24tNC4yMC9ibGliL2xpYi9DR0kvU2Vzc2lvbi9Ecml2ZXIvZGJfZmlsZS5w bSBsaW5lIDEwMS4NCiAgICAgICAgKGluIGNsZWFudXApIGNvdWxkbid0IGxvY2sgJ3QvY2dpc2Vz c19zeW1saW5rLmRiLmxjayc6IE5vIGxvY2tzIGF2YWlsYWJsZSBhdCAvaG9tZS9tYXN3YXBuYS8u Y3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2JsaWIvbGliL0NHSS9TZXNzaW9uL0RyaXZlci9k Yl9maWxlLnBtIGxpbmUgMTAxLg0KIyBMb29rcyBsaWtlIHlvdSBwbGFubmVkIDExIHRlc3RzIGJ1 dCBvbmx5IHJhbiAyLg0KIyBMb29rcyBsaWtlIHlvdXIgdGVzdCBkaWVkIGp1c3QgYWZ0ZXIgMi4N CnQvc3ltbGlua19kYl9maWxlLi4uLi4uLi4uLi4uLi4uZHViaW91cyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3QgcmV0dXJuZWQgc3RhdHVzIDI1NSAo d3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyAzLTExDQogICAgICAgIEZh aWxlZCA5LzExIHRlc3RzLCAxOC4xOCUgb2theQ0KdC9zeW1saW5rX2ZpbGUuLi4uLi4uLi4uLi4u Li4uLi5vayAxLzExc3RvcmUoKTogY291bGRuJ3QgbG9jayAndC9jZ2lzZXNzX3N5bWxpbmtfc2Vz c2lvbic6IE5vIGxvY2tzIGF2YWlsYWJsZSBhdCB0L3N5bWxpbmtfZmlsZS50IGxpbmUgMTUuDQoj IExvb2tzIGxpa2UgeW91IHBsYW5uZWQgMTEgdGVzdHMgYnV0IG9ubHkgcmFuIDIuDQojIExvb2tz IGxpa2UgeW91ciB0ZXN0IGRpZWQganVzdCBhZnRlciAyLg0KdC9zeW1saW5rX2ZpbGUuLi4uLi4u Li4uLi4uLi4uLi5kdWJpb3VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN CiAgICAgICAgVGVzdCByZXR1cm5lZCBzdGF0dXMgMjU1ICh3c3RhdCA2NTI4MCwgMHhmZjAwKQ0K RElFRC4gRkFJTEVEIHRlc3RzIDMtMTENCiAgICAgICAgRmFpbGVkIDkvMTEgdGVzdHMsIDE4LjE4 JSBva2F5DQpGYWlsZWQgVGVzdCAgICAgICAgICAgICAgICAgICAgU3RhdCBXc3RhdCBUb3RhbCBG YWlsICBGYWlsZWQgIExpc3Qgb2YgRmFpbGVkDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp0L2Fw aTNfZGJfZmlsZS50ICAgICAgICAgICAgICAgIDI1NSA2NTI4MCAgICAxNCAgIDEwICA3MS40MyUg IDEwLTE0DQp0L2FwaTNfZGJfZmlsZV9zdG9yYWJsZS50ICAgICAgIDI1NSA2NTI4MCAgICAxNCAg IDEwICA3MS40MyUgIDEwLTE0DQp0L2FwaTNfZGJfZmlsZV9zdG9yYWJsZV9pbmNyLnQgIDI1NSA2 NTI4MCAgICAxNSAgIDI1IDE2Ni42NyUgIDMtMTUNCnQvYXBpM19maWxlLnQgICAgICAgICAgICAg ICAgICAgMjU1IDY1MjgwICAgIDE3ICAgMTUgIDg4LjI0JSAgMTAtMTcNCnQvYXBpM19maWxlX3N0 b3JhYmxlLnQgICAgICAgICAgMjU1IDY1MjgwICAgIDE0ICAgIDkgIDY0LjI5JSAgMTAtMTQNCnQv YXBpM19maWxlX3N0b3JhYmxlX2luY3IudCAgICAgMjU1IDY1MjgwICAgIDE1ICAgMjUgMTY2LjY3 JSAgMy0xNQ0KdC9hcGkzX2luY3IudCAgICAgICAgICAgICAgICAgICAyNTUgNjUyODAgICAgMTQg ICAyNSAxNzguNTclICAyLTE0DQp0L2FwaTNfb2JqX3N0b3JlLnQgICAgICAgICAgICAgICAzNyAg OTQ3MiAgICAgOCAgICA3ICA4Ny41MCUgIDUtOA0KdC9hcGkzX29ial9zdG9yZV9kYl9maWxlLnQg ICAgICAgIDIgICA1MTIgICAgIDggICAgOCAxMDAuMDAlICA1LTgNCnQvY29tcGxleF9kcy50ICAg ICAgICAgICAgICAgICAgICA0ICAxMDI0ICAgIDEwICAgIDggIDgwLjAwJSAgNy0xMA0KdC9maW5k LnQgICAgICAgICAgICAgICAgICAgICAgICAgIDUgIDEyODAgICAgIDggICAgOSAxMTIuNTAlICA0 LTgNCnQvZzQudCAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1IDY1MjgwICAgMTAxICAgNDQg IDQzLjU2JSAgODAtMTAxDQp0L2c0X2RiZmlsZS50ICAgICAgICAgICAgICAgICAgIDI1NSA2NTI4 MCAgIDEwMSAgMTYwIDE1OC40MiUgIDIyLTEwMQ0KdC9nNF9kYmZpbGVfanNvbi50ICAgICAgICAg ICAgICAyNTUgNjUyODAgICAxMDEgIDE2MCAxNTguNDIlICAyMi0xMDENCnQvZzRfZGJmaWxlX3N0 b3JhYmxlLnQgICAgICAgICAgMjU1IDY1MjgwICAgMTAxICAxNjAgMTU4LjQyJSAgMjItMTAxDQp0 L2c0X2RiZmlsZV95YW1sLnQgICAgICAgICAgICAgIDI1NSA2NTI4MCAgIDEwMSAgMTYwIDE1OC40 MiUgIDIyLTEwMQ0KdC9nNF9zdG9yYWJsZS50ICAgICAgICAgICAgICAgICAyNTUgNjUyODAgICAx MDEgICA0NCAgNDMuNTYlICA4MC0xMDENCnQvc3ltbGlua19kYl9maWxlLnQgICAgICAgICAgICAg MjU1IDY1MjgwICAgIDExICAgMTggMTYzLjY0JSAgMy0xMQ0KdC9zeW1saW5rX2ZpbGUudCAgICAg ICAgICAgICAgICAyNTUgNjUyODAgICAgMTEgICAxOCAxNjMuNjQlICAzLTExDQoxNSB0ZXN0cyBh bmQgMTEyIHN1YnRlc3RzIHNraXBwZWQuDQpGYWlsZWQgMTkvNDYgdGVzdCBzY3JpcHRzLCA1OC43 MCUgb2theS4gNDYxLzg0MCBzdWJ0ZXN0cyBmYWlsZWQsIDQ1LjEyJSBva2F5Lg0KbWFrZTogKioq IFt0ZXN0X2R5bmFtaWNdIEVycm9yIDI1NQ0KICAvdXNyL2Jpbi9tYWtlIHRlc3QgLS0gTk9UIE9L DQpSdW5uaW5nIG1ha2UgaW5zdGFsbA0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246 OlRlc3Q6OkRlZmF1bHQuM3BtDQpNYW5pZnlpbmcgYmxpYi9tYW4zL0NHSTo6U2Vzc2lvbjo6RHJp dmVyOjpwb3N0Z3Jlc3FsLjNwbQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OkRy aXZlcjo6c3FsaXRlLjNwbQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OkRyaXZl ci4zcG0NCk1hbmlmeWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpJRDo6c3RhdGljLjNwbQ0K TWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OlNlcmlhbGl6ZTo6anNvbi4zcG0NCk1h bmlmeWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpTZXJpYWxpemU6OnN0b3JhYmxlLjNwbQ0K TWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OkRyaXZlcjo6bXlzcWwuM3BtDQpNYW5p ZnlpbmcgYmxpYi9tYW4zL0NHSTo6U2Vzc2lvbjo6RHJpdmVyOjpkYl9maWxlLjNwbQ0KTWFuaWZ5 aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb24uM3BtDQpNYW5pZnlpbmcgYmxpYi9tYW4zL0NHSTo6 U2Vzc2lvbjo6RHJpdmVyOjpEQkkuM3BtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3Blcmxs aWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uLnBtDQpJbnN0YWxsaW5nIC9ob21lL21h c3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL0RyaXZlci5wbQ0K SW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvc2hhcmUvcGVybC81LjguNy9DR0kv U2Vzc2lvbi9UdXRvcmlhbC5wbQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQv c2hhcmUvcGVybC81LjguNy9DR0kvU2Vzc2lvbi9FcnJvckhhbmRsZXIucG0NCkluc3RhbGxpbmcg L2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L3NoYXJlL3BlcmwvNS44LjcvQ0dJL1Nlc3Npb24vVGVz dC9EZWZhdWx0LnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9w ZXJsLzUuOC43L0NHSS9TZXNzaW9uL0RyaXZlci9wb3N0Z3Jlc3FsLnBtDQpJbnN0YWxsaW5nIC9o b21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL0RyaXZl ci9zcWxpdGUucG0NCkluc3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L3NoYXJlL3Bl cmwvNS44LjcvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0NCkluc3RhbGxpbmcgL2hvbWUv bWFzd2FwbmEvcGVybGxpYjY0L3NoYXJlL3BlcmwvNS44LjcvQ0dJL1Nlc3Npb24vRHJpdmVyL215 c3FsLnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUu OC43L0NHSS9TZXNzaW9uL0RyaXZlci9EQkkucG0NCkluc3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEv cGVybGxpYjY0L3NoYXJlL3BlcmwvNS44LjcvQ0dJL1Nlc3Npb24vRHJpdmVyL2ZpbGUucG0NCklu c3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L3NoYXJlL3BlcmwvNS44LjcvQ0dJL1Nl c3Npb24vU2VyaWFsaXplL3N0b3JhYmxlLnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3Bl cmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL1NlcmlhbGl6ZS9qc29uLnBtDQpJ bnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9T ZXNzaW9uL1NlcmlhbGl6ZS9mcmVlemV0aGF3LnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5h L3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL1NlcmlhbGl6ZS95YW1sLnBt DQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NH SS9TZXNzaW9uL1NlcmlhbGl6ZS9kZWZhdWx0LnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5h L3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL0lEL3N0YXRpYy5wbQ0KSW5z dGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvc2hhcmUvcGVybC81LjguNy9DR0kvU2Vz c2lvbi9JRC9pbmNyLnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFy ZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL0lEL21kNS5wbQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3 YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJOjpTZXNzaW9uOjpUZXN0OjpEZWZhdWx0LjNwbQ0K SW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJOjpTZXNzaW9u OjpEcml2ZXI6OnBvc3RncmVzcWwuM3BtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3Blcmxs aWI2NC9tYW4vbWFuMy9DR0k6OlNlc3Npb246OkRyaXZlcjo6c3FsaXRlLjNwbQ0KSW5zdGFsbGlu ZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJOjpTZXNzaW9uOjpEcml2ZXIu M3BtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9tYW4vbWFuMy9DR0k6OlNl c3Npb246OklEOjpzdGF0aWMuM3BtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2 NC9tYW4vbWFuMy9DR0k6OlNlc3Npb246OlNlcmlhbGl6ZTo6anNvbi4zcG0NCkluc3RhbGxpbmcg L2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L21hbi9tYW4zL0NHSTo6U2Vzc2lvbjo6U2VyaWFsaXpl OjpzdG9yYWJsZS4zcG0NCkluc3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L21hbi9t YW4zL0NHSTo6U2Vzc2lvbjo6RHJpdmVyOjpteXNxbC4zcG0NCkluc3RhbGxpbmcgL2hvbWUvbWFz d2FwbmEvcGVybGxpYjY0L21hbi9tYW4zL0NHSTo6U2Vzc2lvbjo6RHJpdmVyOjpkYl9maWxlLjNw bQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJOjpTZXNz aW9uLjNwbQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJ OjpTZXNzaW9uOjpEcml2ZXI6OkRCSS4zcG0NCkluc3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVy bGxpYjY0L21hbi9tYW4zL0NHSTo6U2Vzc2lvbjo6VHV0b3JpYWwuM3BtDQpJbnN0YWxsaW5nIC9o b21lL21hc3dhcG5hL3BlcmxsaWI2NC9tYW4vbWFuMy9DR0k6OlNlc3Npb246OklEOjppbmNyLjNw bQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJOjpTZXNz aW9uOjpTZXJpYWxpemU6OmZyZWV6ZXRoYXcuM3BtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5h L3BlcmxsaWI2NC9tYW4vbWFuMy9DR0k6OlNlc3Npb246OlNlcmlhbGl6ZTo6eWFtbC4zcG0NCklu c3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L21hbi9tYW4zL0NHSTo6U2Vzc2lvbjo6 RXJyb3JIYW5kbGVyLjNwbQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFu L21hbjMvQ0dJOjpTZXNzaW9uOjpTZXJpYWxpemU6OmRlZmF1bHQuM3BtDQpJbnN0YWxsaW5nIC9o b21lL21hc3dhcG5hL3BlcmxsaWI2NC9tYW4vbWFuMy9DR0k6OlNlc3Npb246OkRyaXZlcjo6Zmls ZS4zcG0NCkluc3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L21hbi9tYW4zL0NHSTo6 U2Vzc2lvbjo6SUQ6Om1kNS4zcG0NCldyaXRpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0Ly9s aWIvcGVybC81LjguNy9hdXRvL0NHSS9TZXNzaW9uLy5wYWNrbGlzdA0KQXBwZW5kaW5nIGluc3Rh bGxhdGlvbiBpbmZvIHRvIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC8vbGliL3BlcmwvNS44Ljcv cGVybGxvY2FsLnBvZA0KICAvdXNyL2Jpbi9tYWtlIGluc3RhbGwgIC0tIE9LDQo= |
From: Jahangir M. <md....@gm...> - 2007-07-26 21:18:29
|
IyMjIyBURVNUSU5HICMjIyMjDQoNCllvdSBhcmUgZW5jb3VyYWdlZCB0byBydW4gdGVzdHMgZm9y IHRoZSBiYWNrZW5kIHlvdSB3aWxsIGJlIHVzaW5nLiBUaGUNCmRhdGFiYXNlIGJhY2tlbmRzIHRo YXQgbmVlZCBhIGN1c3RvbWl6ZWQgY29ubmVjdGlvbiBzdHJpbmcgd29uJ3QgcnVuIGJ5DQpkZWZh dWx0LiBUbyBydW4gdGhlbSwgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbXVzdCBiZSBzZXQu DQoNClRoZSBzaW1wbGVzdCBtZXRob2QgaXMgdG8gdXNlIHRoZSBzdGFuZGFyZCAiREJJX0RTTi9E QklfVVNFUi9EQklfUEFTUyINCmVudmlyb25tZW50IHZhcmlhYmxlcy4NCg0KT3RoZXJ3aXNlLCB5 b3UgY2FuIHNldCB0aGVzZSB2YXJpYWJsZXM6IA0KRm9yIFBvc3RncmVTUUw6DQogICAgQ0dJU0VT U19QR19EU04NCiAgICBDR0lTRVNTX1BHX1VTRVINCiAgICBDR0lTRVNTX1BHX1BBU1MNCg0KRm9y IE15U1FMOg0KICAgIENHSVNFU1NfTVlTUUxfRFNODQogICAgQ0dJU0VTU19NWVNRTF9VU0VSDQog ICAgQ0dJU0VTU19NWVNRTF9QQVNTDQogICAgQ0dJU0VTU19NWVNRTF9TT0NLRVQNCg0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQ2hlY2tpbmcgaWYgeW91ciBraXQg aXMgY29tcGxldGUuLi4NCkxvb2tzIGdvb2QNCldyaXRpbmcgTWFrZWZpbGUgZm9yIENHSTo6U2Vz c2lvbg0KY3AgbGliL0NHSS9TZXNzaW9uL1Rlc3QvRGVmYXVsdC5wbSBibGliL2xpYi9DR0kvU2Vz c2lvbi9UZXN0L0RlZmF1bHQucG0NCmNwIGxpYi9DR0kvU2Vzc2lvbi9Ecml2ZXIvcG9zdGdyZXNx bC5wbSBibGliL2xpYi9DR0kvU2Vzc2lvbi9Ecml2ZXIvcG9zdGdyZXNxbC5wbQ0KY3AgbGliL0NH SS9TZXNzaW9uL0RyaXZlci9zcWxpdGUucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL3Nx bGl0ZS5wbQ0KY3AgbGliL0NHSS9TZXNzaW9uL0RyaXZlci5wbSBibGliL2xpYi9DR0kvU2Vzc2lv bi9Ecml2ZXIucG0NCmNwIGxpYi9DR0kvU2Vzc2lvbi9TZXJpYWxpemUvc3RvcmFibGUucG0gYmxp Yi9saWIvQ0dJL1Nlc3Npb24vU2VyaWFsaXplL3N0b3JhYmxlLnBtDQpjcCBsaWIvQ0dJL1Nlc3Np b24vU2VyaWFsaXplL2pzb24ucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vU2VyaWFsaXplL2pzb24u cG0NCmNwIGxpYi9DR0kvU2Vzc2lvbi9JRC9zdGF0aWMucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24v SUQvc3RhdGljLnBtDQpjcCBsaWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0gYmxpYi9s aWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0NCmNwIGxpYi9DR0kvU2Vzc2lvbi9Ecml2 ZXIvbXlzcWwucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL215c3FsLnBtDQpjcCBsaWIv Q0dJL1Nlc3Npb24ucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24ucG0NCmNwIGxpYi9DR0kvU2Vzc2lv bi9Ecml2ZXIvREJJLnBtIGJsaWIvbGliL0NHSS9TZXNzaW9uL0RyaXZlci9EQkkucG0NCmNwIGxp Yi9DR0kvU2Vzc2lvbi9UdXRvcmlhbC5wbSBibGliL2xpYi9DR0kvU2Vzc2lvbi9UdXRvcmlhbC5w bQ0KY3AgbGliL0NHSS9TZXNzaW9uL0lEL2luY3IucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vSUQv aW5jci5wbQ0KY3AgbGliL0NHSS9TZXNzaW9uL1NlcmlhbGl6ZS9mcmVlemV0aGF3LnBtIGJsaWIv bGliL0NHSS9TZXNzaW9uL1NlcmlhbGl6ZS9mcmVlemV0aGF3LnBtDQpjcCBsaWIvQ0dJL1Nlc3Np b24vU2VyaWFsaXplL3lhbWwucG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vU2VyaWFsaXplL3lhbWwu cG0NCmNwIGxpYi9DR0kvU2Vzc2lvbi9FcnJvckhhbmRsZXIucG0gYmxpYi9saWIvQ0dJL1Nlc3Np b24vRXJyb3JIYW5kbGVyLnBtDQpjcCBsaWIvQ0dJL1Nlc3Npb24vU2VyaWFsaXplL2RlZmF1bHQu cG0gYmxpYi9saWIvQ0dJL1Nlc3Npb24vU2VyaWFsaXplL2RlZmF1bHQucG0NCmNwIGxpYi9DR0kv U2Vzc2lvbi9Ecml2ZXIvZmlsZS5wbSBibGliL2xpYi9DR0kvU2Vzc2lvbi9Ecml2ZXIvZmlsZS5w bQ0KY3AgbGliL0NHSS9TZXNzaW9uL0lEL21kNS5wbSBibGliL2xpYi9DR0kvU2Vzc2lvbi9JRC9t ZDUucG0NCk1hbmlmeWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpUZXN0OjpEZWZhdWx0LjNw bQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OkRyaXZlcjo6cG9zdGdyZXNxbC4z cG0NCk1hbmlmeWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpEcml2ZXI6OnNxbGl0ZS4zcG0N Ck1hbmlmeWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpEcml2ZXIuM3BtDQpNYW5pZnlpbmcg YmxpYi9tYW4zL0NHSTo6U2Vzc2lvbjo6SUQ6OnN0YXRpYy4zcG0NCk1hbmlmeWluZyBibGliL21h bjMvQ0dJOjpTZXNzaW9uOjpTZXJpYWxpemU6Ompzb24uM3BtDQpNYW5pZnlpbmcgYmxpYi9tYW4z L0NHSTo6U2Vzc2lvbjo6U2VyaWFsaXplOjpzdG9yYWJsZS4zcG0NCk1hbmlmeWluZyBibGliL21h bjMvQ0dJOjpTZXNzaW9uOjpEcml2ZXI6Om15c3FsLjNwbQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9D R0k6OlNlc3Npb246OkRyaXZlcjo6ZGJfZmlsZS4zcG0NCk1hbmlmeWluZyBibGliL21hbjMvQ0dJ OjpTZXNzaW9uLjNwbQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OkRyaXZlcjo6 REJJLjNwbQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OlR1dG9yaWFsLjNwbQ0K TWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OklEOjppbmNyLjNwbQ0KTWFuaWZ5aW5n IGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OlNlcmlhbGl6ZTo6ZnJlZXpldGhhdy4zcG0NCk1hbmlm eWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpTZXJpYWxpemU6OnlhbWwuM3BtDQpNYW5pZnlp bmcgYmxpYi9tYW4zL0NHSTo6U2Vzc2lvbjo6RXJyb3JIYW5kbGVyLjNwbQ0KTWFuaWZ5aW5nIGJs aWIvbWFuMy9DR0k6OlNlc3Npb246OlNlcmlhbGl6ZTo6ZGVmYXVsdC4zcG0NCk1hbmlmeWluZyBi bGliL21hbjMvQ0dJOjpTZXNzaW9uOjpEcml2ZXI6OmZpbGUuM3BtDQpNYW5pZnlpbmcgYmxpYi9t YW4zL0NHSTo6U2Vzc2lvbjo6SUQ6Om1kNS4zcG0NCiAgL3Vzci9iaW4vbWFrZSAgLS0gT0sNClJ1 bm5pbmcgbWFrZSB0ZXN0DQpQRVJMX0RMX05PTkxBWlk9MSAvdXNyL2Jpbi9wZXJsICItTUV4dFV0 aWxzOjpDb21tYW5kOjpNTSIgIi1lIiAidGVzdF9oYXJuZXNzKDAsICdibGliL2xpYicsICdibGli L2FyY2gnKSIgdC8qLnQNCnQvYXBpM19kYl9maWxlLi4uLi4uLi4uLi4uLi4uLi4ub2sgMS8xNGNv dWxkbid0IGxvY2sgJ3QvY2dpc2Vzcy5kYi5sY2snOiBObyBsb2NrcyBhdmFpbGFibGUgYXQgL2hv bWUvbWFzd2FwbmEvLmNwYW4vYnVpbGQvQ0dJLVNlc3Npb24tNC4yMC9ibGliL2xpYi9DR0kvU2Vz c2lvbi9Ecml2ZXIvZGJfZmlsZS5wbSBsaW5lIDEwMS4NCiAgICAgICAgKGluIGNsZWFudXApIGNv dWxkbid0IGxvY2sgJ3QvY2dpc2Vzcy5kYi5sY2snOiBObyBsb2NrcyBhdmFpbGFibGUgYXQgL2hv bWUvbWFzd2FwbmEvLmNwYW4vYnVpbGQvQ0dJLVNlc3Npb24tNC4yMC9ibGliL2xpYi9DR0kvU2Vz c2lvbi9Ecml2ZXIvZGJfZmlsZS5wbSBsaW5lIDEwMS4NCiMgTG9va3MgbGlrZSB5b3UgcGxhbm5l ZCAxNCB0ZXN0cyBidXQgb25seSByYW4gOS4NCiMgTG9va3MgbGlrZSB5b3VyIHRlc3QgZGllZCBq dXN0IGFmdGVyIDkuDQp0L2FwaTNfZGJfZmlsZS4uLi4uLi4uLi4uLi4uLi4uLmR1YmlvdXMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICBUZXN0IHJldHVybmVk IHN0YXR1cyAyNTUgKHdzdGF0IDY1MjgwLCAweGZmMDApDQpESUVELiBGQUlMRUQgdGVzdHMgMTAt MTQNCiAgICAgICAgRmFpbGVkIDUvMTQgdGVzdHMsIDY0LjI5JSBva2F5DQp0L2FwaTNfZGJfZmls ZV9mcmVlemV0aGF3Li4uLi4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IEZyZWV6ZVRo YXcgbm90IGF2YWlsYWJsZQ0KdC9hcGkzX2RiX2ZpbGVfc3RvcmFibGUuLi4uLi4uLi5vayAxLzE0 Y291bGRuJ3QgbG9jayAndC9jZ2lzZXNzLmRiLmxjayc6IE5vIGxvY2tzIGF2YWlsYWJsZSBhdCAv aG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2JsaWIvbGliL0NHSS9T ZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgMTAxLg0KICAgICAgICAoaW4gY2xlYW51cCkg Y291bGRuJ3QgbG9jayAndC9jZ2lzZXNzLmRiLmxjayc6IE5vIGxvY2tzIGF2YWlsYWJsZSBhdCAv aG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2JsaWIvbGliL0NHSS9T ZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgMTAxLg0KIyBMb29rcyBsaWtlIHlvdSBwbGFu bmVkIDE0IHRlc3RzIGJ1dCBvbmx5IHJhbiA5Lg0KIyBMb29rcyBsaWtlIHlvdXIgdGVzdCBkaWVk IGp1c3QgYWZ0ZXIgOS4NCnQvYXBpM19kYl9maWxlX3N0b3JhYmxlLi4uLi4uLi4uZHViaW91cyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3QgcmV0dXJu ZWQgc3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyAx MC0xNA0KICAgICAgICBGYWlsZWQgNS8xNCB0ZXN0cywgNjQuMjklIG9rYXkNCnQvYXBpM19kYl9m aWxlX3N0b3JhYmxlX2luY3IuLi4ub2sgMS8xNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgDQojICAgICBGYWlsZWQgdGVzdCAodC9hcGkzX2RiX2ZpbGVfc3RvcmFibGVfaW5j ci50IGF0IGxpbmUgMjYpDQpDYW4ndCBjYWxsIG1ldGhvZCAiaWQiIG9uIGFuIHVuZGVmaW5lZCB2 YWx1ZSBhdCB0L2FwaTNfZGJfZmlsZV9zdG9yYWJsZV9pbmNyLnQgbGluZSAyNy4NCnQvYXBpM19k Yl9maWxlX3N0b3JhYmxlX2luY3IuLi4uTk9LIDMjIExvb2tzIGxpa2UgeW91IHBsYW5uZWQgMTUg dGVzdHMgYnV0IG9ubHkgcmFuIDMuDQojIExvb2tzIGxpa2UgeW91ciB0ZXN0IGRpZWQganVzdCBh ZnRlciAzLg0KdC9hcGkzX2RiX2ZpbGVfc3RvcmFibGVfaW5jci4uLi5kdWJpb3VzICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVzdCByZXR1cm5lZCBzdGF0 dXMgMjU1ICh3c3RhdCA2NTI4MCwgMHhmZjAwKQ0KRElFRC4gRkFJTEVEIHRlc3RzIDMtMTUNCiAg ICAgICAgRmFpbGVkIDEzLzE1IHRlc3RzLCAxMy4zMyUgb2theQ0KdC9hcGkzX2ZpbGUuLi4uLi4u Li4uLi4uLi4uLi4uLi5vayAxLzE3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICANCiMgICAgIEZhaWxlZCB0ZXN0ICh0L2FwaTNfZmlsZS50IGF0IGxpbmUgNDIpDQpDYW4ndCBj YWxsIG1ldGhvZCAiaWQiIG9uIGFuIHVuZGVmaW5lZCB2YWx1ZSBhdCB0L2FwaTNfZmlsZS50IGxp bmUgNDQuDQp0L2FwaTNfZmlsZS4uLi4uLi4uLi4uLi4uLi4uLi4uLk5PSyAxMCMgTG9va3MgbGlr ZSB5b3UgcGxhbm5lZCAxNyB0ZXN0cyBidXQgb25seSByYW4gMTAuDQojIExvb2tzIGxpa2UgeW91 ciB0ZXN0IGRpZWQganVzdCBhZnRlciAxMC4NCnQvYXBpM19maWxlLi4uLi4uLi4uLi4uLi4uLi4u Li4uZHViaW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg IFRlc3QgcmV0dXJuZWQgc3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZB SUxFRCB0ZXN0cyAxMC0xNw0KICAgICAgICBGYWlsZWQgOC8xNyB0ZXN0cywgNTIuOTQlIG9rYXkN CnQvYXBpM19maWxlX2ZyZWV6ZXRoYXcuLi4uLi4uLi4uc2tpcHBlZA0KICAgICAgICBhbGwgc2tp cHBlZDogRnJlZXplVGhhdyBub3QgYXZhaWxhYmxlDQp0L2FwaTNfZmlsZV9mcmVlemV0aGF3X2lu Y3IuLi4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IEZyZWV6ZVRoYXcgbm90IGF2YWls YWJsZQ0KdC9hcGkzX2ZpbGVfc3RvcmFibGUuLi4uLi4uLi4uLi5vayAxLzE0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICANCiMgICAgIEZhaWxlZCB0ZXN0ICh0L2FwaTNfZmls ZV9zdG9yYWJsZS50IGF0IGxpbmUgNDYpDQpDYW4ndCBjYWxsIG1ldGhvZCAiaWQiIG9uIGFuIHVu ZGVmaW5lZCB2YWx1ZSBhdCB0L2FwaTNfZmlsZV9zdG9yYWJsZS50IGxpbmUgNDguDQp0L2FwaTNf ZmlsZV9zdG9yYWJsZS4uLi4uLi4uLi4uLk5PSyAxMCMgTG9va3MgbGlrZSB5b3UgcGxhbm5lZCAx NCB0ZXN0cyBidXQgb25seSByYW4gMTAuDQojIExvb2tzIGxpa2UgeW91ciB0ZXN0IGRpZWQganVz dCBhZnRlciAxMC4NCnQvYXBpM19maWxlX3N0b3JhYmxlLi4uLi4uLi4uLi4uZHViaW91cyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3QgcmV0dXJuZWQg c3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyAxMC0x NA0KICAgICAgICBGYWlsZWQgNS8xNCB0ZXN0cywgNjQuMjklIG9rYXkNCnQvYXBpM19maWxlX3N0 b3JhYmxlX2luY3IuLi4uLi4ub2sgMS8xNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgDQojICAgICBGYWlsZWQgdGVzdCAodC9hcGkzX2ZpbGVfc3RvcmFibGVfaW5jci50IGF0 IGxpbmUgMjMpDQpDYW4ndCBjYWxsIG1ldGhvZCAiaWQiIG9uIGFuIHVuZGVmaW5lZCB2YWx1ZSBh dCB0L2FwaTNfZmlsZV9zdG9yYWJsZV9pbmNyLnQgbGluZSAyNC4NCnQvYXBpM19maWxlX3N0b3Jh YmxlX2luY3IuLi4uLi4uTk9LIDMjIExvb2tzIGxpa2UgeW91IHBsYW5uZWQgMTUgdGVzdHMgYnV0 IG9ubHkgcmFuIDMuDQojIExvb2tzIGxpa2UgeW91ciB0ZXN0IGRpZWQganVzdCBhZnRlciAzLg0K dC9hcGkzX2ZpbGVfc3RvcmFibGVfaW5jci4uLi4uLi5kdWJpb3VzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVzdCByZXR1cm5lZCBzdGF0dXMgMjU1ICh3 c3RhdCA2NTI4MCwgMHhmZjAwKQ0KRElFRC4gRkFJTEVEIHRlc3RzIDMtMTUNCiAgICAgICAgRmFp bGVkIDEzLzE1IHRlc3RzLCAxMy4zMyUgb2theQ0KdC9hcGkzX2luY3IuLi4uLi4uLi4uLi4uLi4u Li4uLi5vayAxLzE0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiMgICAg IEZhaWxlZCB0ZXN0ICh0L2FwaTNfaW5jci50IGF0IGxpbmUgMjcpDQpDYW4ndCBjYWxsIG1ldGhv ZCAiaWQiIG9uIGFuIHVuZGVmaW5lZCB2YWx1ZSBhdCB0L2FwaTNfaW5jci50IGxpbmUgMjguDQp0 L2FwaTNfaW5jci4uLi4uLi4uLi4uLi4uLi4uLi4uLk5PSyAyIyBMb29rcyBsaWtlIHlvdSBwbGFu bmVkIDE0IHRlc3RzIGJ1dCBvbmx5IHJhbiAyLg0KIyBMb29rcyBsaWtlIHlvdXIgdGVzdCBkaWVk IGp1c3QgYWZ0ZXIgMi4NCnQvYXBpM19pbmNyLi4uLi4uLi4uLi4uLi4uLi4uLi4uZHViaW91cyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3QgcmV0dXJu ZWQgc3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyAy LTE0DQogICAgICAgIEZhaWxlZCAxMy8xNCB0ZXN0cywgNy4xNCUgb2theQ0KdC9hcGkzX29ial9z dG9yZS4uLi4uLi4uLi4uLi4uLi4jVXNpbmcgU3RvcmFibGUgYXMgb2JqZWN0IHNlcmlhbGl6ZXIN CkNhbid0IGNhbGwgbWV0aG9kICJpZCIgb24gYW4gdW5kZWZpbmVkIHZhbHVlIGF0IHQvYXBpM19v Ympfc3RvcmUudCBsaW5lIDU0ICgjMSkNCiAgICAoRikgWW91IHVzZWQgdGhlIHN5bnRheCBvZiBh IG1ldGhvZCBjYWxsLCBidXQgdGhlIHNsb3QgZmlsbGVkIGJ5IHRoZQ0KICAgIG9iamVjdCByZWZl cmVuY2Ugb3IgcGFja2FnZSBuYW1lIGNvbnRhaW5zIGFuIHVuZGVmaW5lZCB2YWx1ZS4gIFNvbWV0 aGluZw0KICAgIGxpa2UgdGhpcyB3aWxsIHJlcHJvZHVjZSB0aGUgZXJyb3I6DQogICAgDQogICAg ICAgICRCQURSRUYgPSB1bmRlZjsNCiAgICAgICAgcHJvY2VzcyAkQkFEUkVGIDEsMiwzOw0KICAg ICAgICAkQkFEUkVGLT5wcm9jZXNzKDEsMiwzKTsNCiAgICANClVuY2F1Z2h0IGV4Y2VwdGlvbiBm cm9tIHVzZXIgY29kZToNCiAgICAgICAgQ2FuJ3QgY2FsbCBtZXRob2QgImlkIiBvbiBhbiB1bmRl ZmluZWQgdmFsdWUgYXQgdC9hcGkzX29ial9zdG9yZS50IGxpbmUgNTQuDQogYXQgdC9hcGkzX29i al9zdG9yZS50IGxpbmUgNTQNCnQvYXBpM19vYmpfc3RvcmUuLi4uLi4uLi4uLi4uLi4uZHViaW91 cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3QgcmV0 dXJuZWQgc3RhdHVzIDM3ICh3c3RhdCA5NDcyLCAweDI1MDApDQpESUVELiBGQUlMRUQgdGVzdHMg NS04DQogICAgICAgIEZhaWxlZCA0LzggdGVzdHMsIDUwLjAwJSBva2F5DQp0L2FwaTNfb2JqX3N0 b3JlX2RiX2ZpbGUuLi4uLi4uLlVuY2F1Z2h0IGV4Y2VwdGlvbiBmcm9tIHVzZXIgY29kZToNCiAg ICAgICAgY291bGRuJ3QgbG9jayAndC9jZ2lzZXNzLmRiLmxjayc6IE5vIGxvY2tzIGF2YWlsYWJs ZSBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2JsaWIvbGli L0NHSS9TZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgMTAxLg0KIGF0IC9ob21lL21hc3dh cG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJp dmVyL2RiX2ZpbGUucG0gbGluZSAxMDENCiAgICAgICAgQ0dJOjpTZXNzaW9uOjpEcml2ZXI6OmRi X2ZpbGU6Ol9sb2NrKCdDR0k6OlNlc3Npb246OkRyaXZlcjo6ZGJfZmlsZT1IQVNIKDB4YTMwM2Mw KScsICd0L2NnaXNlc3MuZGInLCAyKSBjYWxsZWQgYXQgL2hvbWUvbWFzd2FwbmEvLmNwYW4vYnVp bGQvQ0dJLVNlc3Npb24tNC4yMC9ibGliL2xpYi9DR0kvU2Vzc2lvbi9Ecml2ZXIvZGJfZmlsZS5w bSBsaW5lIDEyMw0KICAgICAgICBDR0k6OlNlc3Npb246OkRyaXZlcjo6ZGJfZmlsZTo6X3RpZV9k Yl9maWxlKCdDR0k6OlNlc3Npb246OkRyaXZlcjo6ZGJfZmlsZT1IQVNIKDB4YTMwM2MwKScsIDIs IDIpIGNhbGxlZCBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIw L2JsaWIvbGliL0NHSS9TZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgNjANCiAgICAgICAg Q0dJOjpTZXNzaW9uOjpEcml2ZXI6OmRiX2ZpbGU6OnN0b3JlKCdDR0k6OlNlc3Npb246OkRyaXZl cjo6ZGJfZmlsZT1IQVNIKDB4YTMwM2MwKScsICcxNTI5YWNjZTA3OTNkOWRjNDIxNjg2MGFiYWNl NmQzYycsICdceHs0fVx4ezZ9XHh7OH0xMjM0NTY3OFx4ezR9XHh7OH1ceHs4fVx4ezh9XHh7M31c eHs1fVx4ezB9XHh7MH1ceHswfVx4ezR9XHh7MTF9XHh7M31DR0lceHszfVx4ezV9XHh7MH1ceHsw fVx4ezB9XHh7NH1ceHsyfVx4ezF9XHh7MH1ceHswfVx4ezB9XHh7YX1ceHs0fW5hbWVceHtifVx4 ezB9XHh7MH1ceHswfS5wYXJhbWV0ZXJzXHh7YX1ceHthfUkuLi4nKSBjYWxsZWQgYXQgL2hvbWUv bWFzd2FwbmEvLmNwYW4vYnVpbGQvQ0dJLVNlc3Npb24tNC4yMC9ibGliL2xpYi9DR0kvU2Vzc2lv bi5wbSBsaW5lIDI0NA0KICAgICAgICBDR0k6OlNlc3Npb246OmZsdXNoKCdDR0k6OlNlc3Npb249 SEFTSCgweDlhZGQ1MCknKSBjYWxsZWQgYXQgdC9hcGkzX29ial9zdG9yZV9kYl9maWxlLnQgbGlu ZSA1MA0KICAgICAgICAoaW4gY2xlYW51cCkgY291bGRuJ3QgbG9jayAndC9jZ2lzZXNzLmRiLmxj ayc6IE5vIGxvY2tzIGF2YWlsYWJsZSBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0kt U2Vzc2lvbi00LjIwL2JsaWIvbGliL0NHSS9TZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUg MTAxLg0KdC9hcGkzX29ial9zdG9yZV9kYl9maWxlLi4uLi4uLi5kdWJpb3VzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVzdCByZXR1cm5lZCBzdGF0dXMg MiAod3N0YXQgNTEyLCAweDIwMCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyA1LTgNCiAgICAgICAgRmFp bGVkIDQvOCB0ZXN0cywgNTAuMDAlIG9rYXkNCnQvYnVnMjE5NTIuLi4uLi4uLi4uLi4uLi4uLi4u Li4ub2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp0L2NnaV9z aW1wbGUuLi4uLi4uLi4uLi4uLi4uLi4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IENH STo6U2ltcGxlIG5vdCBpbnN0YWxsZWQsIHNvIHNraXBwaW5nIHJlbGF0ZWQgdGVzdHMuDQp0L2Nv bXBsZXhfZHMuLi4uLi4uLi4uLi4uLi4uLi4uLm9rIDEvMTBuZXcoKTogZmFpbGVkOiBsb2FkKCk6 IGNvdWxkbid0IHJldHJpZXZlIGRhdGE6IHJldHJpZXZlKCk6IGNvdWxkbid0IGxvY2sgJ3QvY2dp c2Vzc18xZTYxOTkwOGQ4Mzc2NmFkYmUyY2Y4YWM0NDA3NWEyZSc6IE5vIGxvY2tzIGF2YWlsYWJs ZSBhdCB0L2NvbXBsZXhfZHMudCBsaW5lIDQyLg0KIyBMb29rcyBsaWtlIHlvdSBwbGFubmVkIDEw IHRlc3RzIGJ1dCBvbmx5IHJhbiA2Lg0KdC9jb21wbGV4X2RzLi4uLi4uLi4uLi4uLi4uLi4uLi5k dWJpb3VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVz dCByZXR1cm5lZCBzdGF0dXMgNCAod3N0YXQgMTAyNCwgMHg0MDApDQpESUVELiBGQUlMRUQgdGVz dHMgNy0xMA0KICAgICAgICBGYWlsZWQgNC8xMCB0ZXN0cywgNjAuMDAlIG9rYXkNCnQvZHJpdmVy X2RiaS4uLi4uLi4uLi4uLi4uLi4uLi4ub2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgDQp0L2V4cGlyZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLm9rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KdC9maW5kLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi5vayAxLzggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN CiMgICAgIEZhaWxlZCB0ZXN0ICh0L2ZpbmQudCBhdCBsaW5lIDY2KQ0KIyAgICAgICAgICBnb3Q6 ICdmaW5kKCk6IGNvdWxkbid0IGxvYWQgc2Vzc2lvbiAnNDdmNzU0NzI4ZTE4NTE4OWM3OWRiNzMw M2ViZWQ0OWInLiBsb2FkKCk6IGNvdWxkbid0IHJldHJpZXZlIGRhdGE6IHJldHJpZXZlKCk6IGNv dWxkbid0IGxvY2sgJ3QvY2dpc2Vzc180N2Y3NTQ3MjhlMTg1MTg5Yzc5ZGI3MzAzZWJlZDQ5Yic6 IE5vIGxvY2tzIGF2YWlsYWJsZScNCiMgICAgIGV4cGVjdGVkOiAnJw0KdC9maW5kLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi5OT0sgNCMgTG9va3MgbGlrZSB5b3UgcGxhbm5lZCA4IHRlc3RzIGJ1 dCBvbmx5IHJhbiA0Lg0KdC9maW5kLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5kdWJpb3VzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVzdCByZXR1cm5l ZCBzdGF0dXMgNSAod3N0YXQgMTI4MCwgMHg1MDApDQpESUVELiBGQUlMRUQgdGVzdHMgNC04DQog ICAgICAgIEZhaWxlZCA1LzggdGVzdHMsIDM3LjUwJSBva2F5DQp0L2ZsdXNoLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLm9rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IA0KdC9nNC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5vayA3OS8xMDFsb2FkKCk6IGNvdWxk bid0IHJldHJpZXZlIGRhdGE6IHJldHJpZXZlKCk6IGNvdWxkbid0IGxvY2sgJ3Qvc2Vzc2lvbmRh dGEvY2dpc2Vzc182OGIyZjBmYTBlYTRiNTE0ZWVkYmRhODRlODMwOTk1OSc6IE5vIGxvY2tzIGF2 YWlsYWJsZSBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2Js aWIvbGliL0NHSS9TZXNzaW9uL1Rlc3QvRGVmYXVsdC5wbSBsaW5lIDE5OC4NCiMgTG9va3MgbGlr ZSB5b3UgcGxhbm5lZCAxMDEgdGVzdHMgYnV0IG9ubHkgcmFuIDc5Lg0KIyBMb29rcyBsaWtlIHlv dXIgdGVzdCBkaWVkIGp1c3QgYWZ0ZXIgNzkuDQp0L2c0Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLmR1YmlvdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAg ICBUZXN0IHJldHVybmVkIHN0YXR1cyAyNTUgKHdzdGF0IDY1MjgwLCAweGZmMDApDQpESUVELiBG QUlMRUQgdGVzdHMgODAtMTAxDQogICAgICAgIEZhaWxlZCAyMi8xMDEgdGVzdHMsIDc4LjIyJSBv a2F5IChsZXNzIDU2IHNraXBwZWQgdGVzdHM6IDIzIG9rYXksIDIyLjc3JSkNCnQvZzRfZGJmaWxl Li4uLi4uLi4uLi4uLi4uLi4uLi4ub2sgMS8xMDFjb3VsZG4ndCBsb2NrICd0L3Nlc3Npb25kYXRh L2NnaXNlc3MuZGIubGNrJzogTm8gbG9ja3MgYXZhaWxhYmxlIGF0IC9ob21lL21hc3dhcG5hLy5j cGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2Ri X2ZpbGUucG0gbGluZSAxMDEuDQogICAgICAgIChpbiBjbGVhbnVwKSBjb3VsZG4ndCBsb2NrICd0 L3Nlc3Npb25kYXRhL2NnaXNlc3MuZGIubGNrJzogTm8gbG9ja3MgYXZhaWxhYmxlIGF0IC9ob21l L21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxpYi9saWIvQ0dJL1Nlc3Np b24vRHJpdmVyL2RiX2ZpbGUucG0gbGluZSAxMDEuDQojIExvb2tzIGxpa2UgeW91IHBsYW5uZWQg MTAxIHRlc3RzIGJ1dCBvbmx5IHJhbiAyMS4NCiMgTG9va3MgbGlrZSB5b3VyIHRlc3QgZGllZCBq dXN0IGFmdGVyIDIxLg0KdC9nNF9kYmZpbGUuLi4uLi4uLi4uLi4uLi4uLi4uLi5kdWJpb3VzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgVGVzdCByZXR1cm5l ZCBzdGF0dXMgMjU1ICh3c3RhdCA2NTI4MCwgMHhmZjAwKQ0KRElFRC4gRkFJTEVEIHRlc3RzIDIy LTEwMQ0KICAgICAgICBGYWlsZWQgODAvMTAxIHRlc3RzLCAyMC43OSUgb2theQ0KdC9nNF9kYmZp bGVfZnJlZXpldGhhdy4uLi4uLi4uLi5za2lwcGVkDQogICAgICAgIGFsbCBza2lwcGVkOiBGcmVl emVUaGF3IGlzIE5PVCBhdmFpbGFibGUNCnQvZzRfZGJmaWxlX2pzb24uLi4uLi4uLi4uLi4uLi4u IyBKU09OOjpTeWNrDQp0L2c0X2RiZmlsZV9qc29uLi4uLi4uLi4uLi4uLi4uLm9rIDEvMTAxY291 bGRuJ3QgbG9jayAndC9zZXNzaW9uZGF0YS9jZ2lzZXNzLmRiLmxjayc6IE5vIGxvY2tzIGF2YWls YWJsZSBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2JsaWIv bGliL0NHSS9TZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgMTAxLg0KICAgICAgICAoaW4g Y2xlYW51cCkgY291bGRuJ3QgbG9jayAndC9zZXNzaW9uZGF0YS9jZ2lzZXNzLmRiLmxjayc6IE5v IGxvY2tzIGF2YWlsYWJsZSBhdCAvaG9tZS9tYXN3YXBuYS8uY3Bhbi9idWlsZC9DR0ktU2Vzc2lv bi00LjIwL2JsaWIvbGliL0NHSS9TZXNzaW9uL0RyaXZlci9kYl9maWxlLnBtIGxpbmUgMTAxLg0K IyBMb29rcyBsaWtlIHlvdSBwbGFubmVkIDEwMSB0ZXN0cyBidXQgb25seSByYW4gMjEuDQojIExv b2tzIGxpa2UgeW91ciB0ZXN0IGRpZWQganVzdCBhZnRlciAyMS4NCnQvZzRfZGJmaWxlX2pzb24u Li4uLi4uLi4uLi4uLi4uZHViaW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgDQogICAgICAgIFRlc3QgcmV0dXJuZWQgc3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYw MCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyAyMi0xMDENCiAgICAgICAgRmFpbGVkIDgwLzEwMSB0ZXN0 cywgMjAuNzklIG9rYXkNCnQvZzRfZGJmaWxlX3N0b3JhYmxlLi4uLi4uLi4uLi4ub2sgMS8xMDFj b3VsZG4ndCBsb2NrICd0L3Nlc3Npb25kYXRhL2NnaXNlc3MuZGIubGNrJzogTm8gbG9ja3MgYXZh aWxhYmxlIGF0IC9ob21lL21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxp Yi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0gbGluZSAxMDEuDQogICAgICAgIChp biBjbGVhbnVwKSBjb3VsZG4ndCBsb2NrICd0L3Nlc3Npb25kYXRhL2NnaXNlc3MuZGIubGNrJzog Tm8gbG9ja3MgYXZhaWxhYmxlIGF0IC9ob21lL21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNz aW9uLTQuMjAvYmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0gbGluZSAxMDEu DQojIExvb2tzIGxpa2UgeW91IHBsYW5uZWQgMTAxIHRlc3RzIGJ1dCBvbmx5IHJhbiAyMS4NCiMg TG9va3MgbGlrZSB5b3VyIHRlc3QgZGllZCBqdXN0IGFmdGVyIDIxLg0KdC9nNF9kYmZpbGVfc3Rv cmFibGUuLi4uLi4uLi4uLi5kdWJpb3VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICANCiAgICAgICAgVGVzdCByZXR1cm5lZCBzdGF0dXMgMjU1ICh3c3RhdCA2NTI4MCwgMHhm ZjAwKQ0KRElFRC4gRkFJTEVEIHRlc3RzIDIyLTEwMQ0KICAgICAgICBGYWlsZWQgODAvMTAxIHRl c3RzLCAyMC43OSUgb2theQ0KdC9nNF9kYmZpbGVfeWFtbC4uLi4uLi4uLi4uLi4uLi4jIFlBTUw6 OlN5Y2sNCnQvZzRfZGJmaWxlX3lhbWwuLi4uLi4uLi4uLi4uLi4ub2sgMS8xMDFjb3VsZG4ndCBs b2NrICd0L3Nlc3Npb25kYXRhL2NnaXNlc3MuZGIubGNrJzogTm8gbG9ja3MgYXZhaWxhYmxlIGF0 IC9ob21lL21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxpYi9saWIvQ0dJ L1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0gbGluZSAxMDEuDQogICAgICAgIChpbiBjbGVhbnVw KSBjb3VsZG4ndCBsb2NrICd0L3Nlc3Npb25kYXRhL2NnaXNlc3MuZGIubGNrJzogTm8gbG9ja3Mg YXZhaWxhYmxlIGF0IC9ob21lL21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAv YmxpYi9saWIvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0gbGluZSAxMDEuDQojIExvb2tz IGxpa2UgeW91IHBsYW5uZWQgMTAxIHRlc3RzIGJ1dCBvbmx5IHJhbiAyMS4NCiMgTG9va3MgbGlr ZSB5b3VyIHRlc3QgZGllZCBqdXN0IGFmdGVyIDIxLg0KdC9nNF9kYmZpbGVfeWFtbC4uLi4uLi4u Li4uLi4uLi5kdWJpb3VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAg ICAgICAgVGVzdCByZXR1cm5lZCBzdGF0dXMgMjU1ICh3c3RhdCA2NTI4MCwgMHhmZjAwKQ0KRElF RC4gRkFJTEVEIHRlc3RzIDIyLTEwMQ0KICAgICAgICBGYWlsZWQgODAvMTAxIHRlc3RzLCAyMC43 OSUgb2theQ0KdC9nNF9mcmVlemV0aGF3Li4uLi4uLi4uLi4uLi4uLi5za2lwcGVkDQogICAgICAg IGFsbCBza2lwcGVkOiBGcmVlemVUaGF3IGlzIE5PVCBhdmFpbGFibGUNCnQvZzRfbXlzcWwuLi4u Li4uLi4uLi4uLi4uLi4uLi4uc2tpcHBlZA0KICAgICAgICBhbGwgc2tpcHBlZDogQ291bGRuJ3Qg ZXN0YWJsaXNoIGNvbm5lY3Rpb24gd2l0aCB0aGUgTXlTUUwgc2VydmVyOiBDYW4ndCBjb25uZWN0 IHRvIGRhdGEgc291cmNlICwgbm8gZGF0YWJhc2UgZHJpdmVyIHNwZWNpZmllZCBhbmQgREJJX0RT TiBlbnYgdmFyIG5vdCBzZXQgYXQgdC9nNF9teXNxbC50IGxpbmUgNDQNCnQvZzRfbXlzcWxfZnJl ZXpldGhhdy4uLi4uLi4uLi4uc2tpcHBlZA0KICAgICAgICBhbGwgc2tpcHBlZDogRnJlZXplVGhh dyBpcyBOT1QgYXZhaWxhYmxlDQp0L2c0X215c3FsX3N0b3JhYmxlLi4uLi4uLi4uLi4uLnNraXBw ZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IENvdWxkbid0IGVzdGFibGlzaCBjb25uZWN0aW9uIHdp dGggdGhlIE15U1FMIHNlcnZlcjogQ2FuJ3QgY29ubmVjdCB0byBkYXRhIHNvdXJjZSAsIG5vIGRh dGFiYXNlIGRyaXZlciBzcGVjaWZpZWQgYW5kIERCSV9EU04gZW52IHZhciBub3Qgc2V0IGF0IHQv ZzRfbXlzcWxfc3RvcmFibGUudCBsaW5lIDQzDQp0L2c0X3Bvc3RncmVzcWwuLi4uLi4uLi4uLi4u Li4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IERhdGFTb3VyY2UgaXMgbm90IGtub3du DQp0L2c0X3Bvc3RncmVzcWxfZnJlZXpldGhhdy4uLi4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNr aXBwZWQ6IERhdGFTb3VyY2UgaXMgbm90IGtub3duDQp0L2c0X3Bvc3RncmVzcWxfc3RvcmFibGUu Li4uLi4uLnNraXBwZWQNCiAgICAgICAgYWxsIHNraXBwZWQ6IERhdGFTb3VyY2UgaXMgbm90IGtu b3duDQp0L2c0X3NxbGl0ZS4uLi4uLi4uLi4uLi4uLi4uLi4uLnNraXBwZWQNCiAgICAgICAgYWxs IHNraXBwZWQ6IERCRDo6U1FMaXRlIGlzIE5PVCBhdmFpbGFibGUNCnQvZzRfc3FsaXRlX2ZyZWV6 ZXRoYXcuLi4uLi4uLi4uc2tpcHBlZA0KICAgICAgICBhbGwgc2tpcHBlZDogREJEOjpTUUxpdGUg aXMgTk9UIGF2YWlsYWJsZQ0KdC9nNF9zcWxpdGVfc3RvcmFibGUuLi4uLi4uLi4uLi5za2lwcGVk DQogICAgICAgIGFsbCBza2lwcGVkOiBEQkQ6OlNRTGl0ZSBpcyBOT1QgYXZhaWxhYmxlDQp0L2c0 X3N0b3JhYmxlLi4uLi4uLi4uLi4uLi4uLi4uLm9rIDc5LzEwMWxvYWQoKTogY291bGRuJ3QgcmV0 cmlldmUgZGF0YTogcmV0cmlldmUoKTogY291bGRuJ3QgbG9jayAndC9zZXNzaW9uZGF0YS9jZ2lz ZXNzXzU3ZjJiN2Y4YmExOTQ5MjAwNTljNDEzMTBiMTQ4MDczJzogTm8gbG9ja3MgYXZhaWxhYmxl IGF0IC9ob21lL21hc3dhcG5hLy5jcGFuL2J1aWxkL0NHSS1TZXNzaW9uLTQuMjAvYmxpYi9saWIv Q0dJL1Nlc3Npb24vVGVzdC9EZWZhdWx0LnBtIGxpbmUgMTk4Lg0KIyBMb29rcyBsaWtlIHlvdSBw bGFubmVkIDEwMSB0ZXN0cyBidXQgb25seSByYW4gNzkuDQojIExvb2tzIGxpa2UgeW91ciB0ZXN0 IGRpZWQganVzdCBhZnRlciA3OS4NCnQvZzRfc3RvcmFibGUuLi4uLi4uLi4uLi4uLi4uLi4uZHVi aW91cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3Qg cmV0dXJuZWQgc3RhdHVzIDI1NSAod3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZBSUxFRCB0 ZXN0cyA4MC0xMDENCiAgICAgICAgRmFpbGVkIDIyLzEwMSB0ZXN0cywgNzguMjIlIG9rYXkgKGxl c3MgNTYgc2tpcHBlZCB0ZXN0czogMjMgb2theSwgMjIuNzclKQ0KdC9oZWFkZXIuLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi5vayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICANCnQvaXBfbWF0Y2hlcy4uLi4uLi4uLi4uLi4uLi4uLi4ub2sgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgDQp0L2lzX25ldy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Lm9rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KdC9sb2FkLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi5vayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICANCnQvbmFtZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ub2sgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp0L3BhcnNlX2Rzbi4uLi4uLi4uLi4u Li4uLi4uLi4uLm9rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K dC9yZW1vdGVfYWRkci4uLi4uLi4uLi4uLi4uLi4uLi5vayAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICANCnQvc3RyMnNlY29uZHMuLi4uLi4uLi4uLi4uLi4uLi4ub2sg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQp0L3N5bWxpbmtfZGJf ZmlsZS4uLi4uLi4uLi4uLi4uLm9rIDEvMTFjb3VsZG4ndCBsb2NrICd0L2NnaXNlc3Nfc3ltbGlu ay5kYi5sY2snOiBObyBsb2NrcyBhdmFpbGFibGUgYXQgL2hvbWUvbWFzd2FwbmEvLmNwYW4vYnVp bGQvQ0dJLVNlc3Npb24tNC4yMC9ibGliL2xpYi9DR0kvU2Vzc2lvbi9Ecml2ZXIvZGJfZmlsZS5w bSBsaW5lIDEwMS4NCiAgICAgICAgKGluIGNsZWFudXApIGNvdWxkbid0IGxvY2sgJ3QvY2dpc2Vz c19zeW1saW5rLmRiLmxjayc6IE5vIGxvY2tzIGF2YWlsYWJsZSBhdCAvaG9tZS9tYXN3YXBuYS8u Y3Bhbi9idWlsZC9DR0ktU2Vzc2lvbi00LjIwL2JsaWIvbGliL0NHSS9TZXNzaW9uL0RyaXZlci9k Yl9maWxlLnBtIGxpbmUgMTAxLg0KIyBMb29rcyBsaWtlIHlvdSBwbGFubmVkIDExIHRlc3RzIGJ1 dCBvbmx5IHJhbiAyLg0KIyBMb29rcyBsaWtlIHlvdXIgdGVzdCBkaWVkIGp1c3QgYWZ0ZXIgMi4N CnQvc3ltbGlua19kYl9maWxlLi4uLi4uLi4uLi4uLi4uZHViaW91cyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgIFRlc3QgcmV0dXJuZWQgc3RhdHVzIDI1NSAo d3N0YXQgNjUyODAsIDB4ZmYwMCkNCkRJRUQuIEZBSUxFRCB0ZXN0cyAzLTExDQogICAgICAgIEZh aWxlZCA5LzExIHRlc3RzLCAxOC4xOCUgb2theQ0KdC9zeW1saW5rX2ZpbGUuLi4uLi4uLi4uLi4u Li4uLi5vayAxLzExc3RvcmUoKTogY291bGRuJ3QgbG9jayAndC9jZ2lzZXNzX3N5bWxpbmtfc2Vz c2lvbic6IE5vIGxvY2tzIGF2YWlsYWJsZSBhdCB0L3N5bWxpbmtfZmlsZS50IGxpbmUgMTUuDQoj IExvb2tzIGxpa2UgeW91IHBsYW5uZWQgMTEgdGVzdHMgYnV0IG9ubHkgcmFuIDIuDQojIExvb2tz IGxpa2UgeW91ciB0ZXN0IGRpZWQganVzdCBhZnRlciAyLg0KdC9zeW1saW5rX2ZpbGUuLi4uLi4u Li4uLi4uLi4uLi5kdWJpb3VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAN CiAgICAgICAgVGVzdCByZXR1cm5lZCBzdGF0dXMgMjU1ICh3c3RhdCA2NTI4MCwgMHhmZjAwKQ0K RElFRC4gRkFJTEVEIHRlc3RzIDMtMTENCiAgICAgICAgRmFpbGVkIDkvMTEgdGVzdHMsIDE4LjE4 JSBva2F5DQpGYWlsZWQgVGVzdCAgICAgICAgICAgICAgICAgICAgU3RhdCBXc3RhdCBUb3RhbCBG YWlsICBGYWlsZWQgIExpc3Qgb2YgRmFpbGVkDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQp0L2Fw aTNfZGJfZmlsZS50ICAgICAgICAgICAgICAgIDI1NSA2NTI4MCAgICAxNCAgIDEwICA3MS40MyUg IDEwLTE0DQp0L2FwaTNfZGJfZmlsZV9zdG9yYWJsZS50ICAgICAgIDI1NSA2NTI4MCAgICAxNCAg IDEwICA3MS40MyUgIDEwLTE0DQp0L2FwaTNfZGJfZmlsZV9zdG9yYWJsZV9pbmNyLnQgIDI1NSA2 NTI4MCAgICAxNSAgIDI1IDE2Ni42NyUgIDMtMTUNCnQvYXBpM19maWxlLnQgICAgICAgICAgICAg ICAgICAgMjU1IDY1MjgwICAgIDE3ICAgMTUgIDg4LjI0JSAgMTAtMTcNCnQvYXBpM19maWxlX3N0 b3JhYmxlLnQgICAgICAgICAgMjU1IDY1MjgwICAgIDE0ICAgIDkgIDY0LjI5JSAgMTAtMTQNCnQv YXBpM19maWxlX3N0b3JhYmxlX2luY3IudCAgICAgMjU1IDY1MjgwICAgIDE1ICAgMjUgMTY2LjY3 JSAgMy0xNQ0KdC9hcGkzX2luY3IudCAgICAgICAgICAgICAgICAgICAyNTUgNjUyODAgICAgMTQg ICAyNSAxNzguNTclICAyLTE0DQp0L2FwaTNfb2JqX3N0b3JlLnQgICAgICAgICAgICAgICAzNyAg OTQ3MiAgICAgOCAgICA3ICA4Ny41MCUgIDUtOA0KdC9hcGkzX29ial9zdG9yZV9kYl9maWxlLnQg ICAgICAgIDIgICA1MTIgICAgIDggICAgOCAxMDAuMDAlICA1LTgNCnQvY29tcGxleF9kcy50ICAg ICAgICAgICAgICAgICAgICA0ICAxMDI0ICAgIDEwICAgIDggIDgwLjAwJSAgNy0xMA0KdC9maW5k LnQgICAgICAgICAgICAgICAgICAgICAgICAgIDUgIDEyODAgICAgIDggICAgOSAxMTIuNTAlICA0 LTgNCnQvZzQudCAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1IDY1MjgwICAgMTAxICAgNDQg IDQzLjU2JSAgODAtMTAxDQp0L2c0X2RiZmlsZS50ICAgICAgICAgICAgICAgICAgIDI1NSA2NTI4 MCAgIDEwMSAgMTYwIDE1OC40MiUgIDIyLTEwMQ0KdC9nNF9kYmZpbGVfanNvbi50ICAgICAgICAg ICAgICAyNTUgNjUyODAgICAxMDEgIDE2MCAxNTguNDIlICAyMi0xMDENCnQvZzRfZGJmaWxlX3N0 b3JhYmxlLnQgICAgICAgICAgMjU1IDY1MjgwICAgMTAxICAxNjAgMTU4LjQyJSAgMjItMTAxDQp0 L2c0X2RiZmlsZV95YW1sLnQgICAgICAgICAgICAgIDI1NSA2NTI4MCAgIDEwMSAgMTYwIDE1OC40 MiUgIDIyLTEwMQ0KdC9nNF9zdG9yYWJsZS50ICAgICAgICAgICAgICAgICAyNTUgNjUyODAgICAx MDEgICA0NCAgNDMuNTYlICA4MC0xMDENCnQvc3ltbGlua19kYl9maWxlLnQgICAgICAgICAgICAg MjU1IDY1MjgwICAgIDExICAgMTggMTYzLjY0JSAgMy0xMQ0KdC9zeW1saW5rX2ZpbGUudCAgICAg ICAgICAgICAgICAyNTUgNjUyODAgICAgMTEgICAxOCAxNjMuNjQlICAzLTExDQoxNSB0ZXN0cyBh bmQgMTEyIHN1YnRlc3RzIHNraXBwZWQuDQpGYWlsZWQgMTkvNDYgdGVzdCBzY3JpcHRzLCA1OC43 MCUgb2theS4gNDYxLzg0MCBzdWJ0ZXN0cyBmYWlsZWQsIDQ1LjEyJSBva2F5Lg0KbWFrZTogKioq IFt0ZXN0X2R5bmFtaWNdIEVycm9yIDI1NQ0KICAvdXNyL2Jpbi9tYWtlIHRlc3QgLS0gTk9UIE9L DQpSdW5uaW5nIG1ha2UgaW5zdGFsbA0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246 OlRlc3Q6OkRlZmF1bHQuM3BtDQpNYW5pZnlpbmcgYmxpYi9tYW4zL0NHSTo6U2Vzc2lvbjo6RHJp dmVyOjpwb3N0Z3Jlc3FsLjNwbQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OkRy aXZlcjo6c3FsaXRlLjNwbQ0KTWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OkRyaXZl ci4zcG0NCk1hbmlmeWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpJRDo6c3RhdGljLjNwbQ0K TWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OlNlcmlhbGl6ZTo6anNvbi4zcG0NCk1h bmlmeWluZyBibGliL21hbjMvQ0dJOjpTZXNzaW9uOjpTZXJpYWxpemU6OnN0b3JhYmxlLjNwbQ0K TWFuaWZ5aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb246OkRyaXZlcjo6bXlzcWwuM3BtDQpNYW5p ZnlpbmcgYmxpYi9tYW4zL0NHSTo6U2Vzc2lvbjo6RHJpdmVyOjpkYl9maWxlLjNwbQ0KTWFuaWZ5 aW5nIGJsaWIvbWFuMy9DR0k6OlNlc3Npb24uM3BtDQpNYW5pZnlpbmcgYmxpYi9tYW4zL0NHSTo6 U2Vzc2lvbjo6RHJpdmVyOjpEQkkuM3BtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3Blcmxs aWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uLnBtDQpJbnN0YWxsaW5nIC9ob21lL21h c3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL0RyaXZlci5wbQ0K SW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvc2hhcmUvcGVybC81LjguNy9DR0kv U2Vzc2lvbi9UdXRvcmlhbC5wbQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQv c2hhcmUvcGVybC81LjguNy9DR0kvU2Vzc2lvbi9FcnJvckhhbmRsZXIucG0NCkluc3RhbGxpbmcg L2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L3NoYXJlL3BlcmwvNS44LjcvQ0dJL1Nlc3Npb24vVGVz dC9EZWZhdWx0LnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9w ZXJsLzUuOC43L0NHSS9TZXNzaW9uL0RyaXZlci9wb3N0Z3Jlc3FsLnBtDQpJbnN0YWxsaW5nIC9o b21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL0RyaXZl ci9zcWxpdGUucG0NCkluc3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L3NoYXJlL3Bl cmwvNS44LjcvQ0dJL1Nlc3Npb24vRHJpdmVyL2RiX2ZpbGUucG0NCkluc3RhbGxpbmcgL2hvbWUv bWFzd2FwbmEvcGVybGxpYjY0L3NoYXJlL3BlcmwvNS44LjcvQ0dJL1Nlc3Npb24vRHJpdmVyL215 c3FsLnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUu OC43L0NHSS9TZXNzaW9uL0RyaXZlci9EQkkucG0NCkluc3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEv cGVybGxpYjY0L3NoYXJlL3BlcmwvNS44LjcvQ0dJL1Nlc3Npb24vRHJpdmVyL2ZpbGUucG0NCklu c3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L3NoYXJlL3BlcmwvNS44LjcvQ0dJL1Nl c3Npb24vU2VyaWFsaXplL3N0b3JhYmxlLnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3Bl cmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL1NlcmlhbGl6ZS9qc29uLnBtDQpJ bnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9T ZXNzaW9uL1NlcmlhbGl6ZS9mcmVlemV0aGF3LnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5h L3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL1NlcmlhbGl6ZS95YW1sLnBt DQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NH SS9TZXNzaW9uL1NlcmlhbGl6ZS9kZWZhdWx0LnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5h L3BlcmxsaWI2NC9zaGFyZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL0lEL3N0YXRpYy5wbQ0KSW5z dGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvc2hhcmUvcGVybC81LjguNy9DR0kvU2Vz c2lvbi9JRC9pbmNyLnBtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9zaGFy ZS9wZXJsLzUuOC43L0NHSS9TZXNzaW9uL0lEL21kNS5wbQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3 YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJOjpTZXNzaW9uOjpUZXN0OjpEZWZhdWx0LjNwbQ0K SW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJOjpTZXNzaW9u OjpEcml2ZXI6OnBvc3RncmVzcWwuM3BtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3Blcmxs aWI2NC9tYW4vbWFuMy9DR0k6OlNlc3Npb246OkRyaXZlcjo6c3FsaXRlLjNwbQ0KSW5zdGFsbGlu ZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJOjpTZXNzaW9uOjpEcml2ZXIu M3BtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC9tYW4vbWFuMy9DR0k6OlNl c3Npb246OklEOjpzdGF0aWMuM3BtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2 NC9tYW4vbWFuMy9DR0k6OlNlc3Npb246OlNlcmlhbGl6ZTo6anNvbi4zcG0NCkluc3RhbGxpbmcg L2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L21hbi9tYW4zL0NHSTo6U2Vzc2lvbjo6U2VyaWFsaXpl OjpzdG9yYWJsZS4zcG0NCkluc3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L21hbi9t YW4zL0NHSTo6U2Vzc2lvbjo6RHJpdmVyOjpteXNxbC4zcG0NCkluc3RhbGxpbmcgL2hvbWUvbWFz d2FwbmEvcGVybGxpYjY0L21hbi9tYW4zL0NHSTo6U2Vzc2lvbjo6RHJpdmVyOjpkYl9maWxlLjNw bQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJOjpTZXNz aW9uLjNwbQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJ OjpTZXNzaW9uOjpEcml2ZXI6OkRCSS4zcG0NCkluc3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVy bGxpYjY0L21hbi9tYW4zL0NHSTo6U2Vzc2lvbjo6VHV0b3JpYWwuM3BtDQpJbnN0YWxsaW5nIC9o b21lL21hc3dhcG5hL3BlcmxsaWI2NC9tYW4vbWFuMy9DR0k6OlNlc3Npb246OklEOjppbmNyLjNw bQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFuL21hbjMvQ0dJOjpTZXNz aW9uOjpTZXJpYWxpemU6OmZyZWV6ZXRoYXcuM3BtDQpJbnN0YWxsaW5nIC9ob21lL21hc3dhcG5h L3BlcmxsaWI2NC9tYW4vbWFuMy9DR0k6OlNlc3Npb246OlNlcmlhbGl6ZTo6eWFtbC4zcG0NCklu c3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L21hbi9tYW4zL0NHSTo6U2Vzc2lvbjo6 RXJyb3JIYW5kbGVyLjNwbQ0KSW5zdGFsbGluZyAvaG9tZS9tYXN3YXBuYS9wZXJsbGliNjQvbWFu L21hbjMvQ0dJOjpTZXNzaW9uOjpTZXJpYWxpemU6OmRlZmF1bHQuM3BtDQpJbnN0YWxsaW5nIC9o b21lL21hc3dhcG5hL3BlcmxsaWI2NC9tYW4vbWFuMy9DR0k6OlNlc3Npb246OkRyaXZlcjo6Zmls ZS4zcG0NCkluc3RhbGxpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0L21hbi9tYW4zL0NHSTo6 U2Vzc2lvbjo6SUQ6Om1kNS4zcG0NCldyaXRpbmcgL2hvbWUvbWFzd2FwbmEvcGVybGxpYjY0Ly9s aWIvcGVybC81LjguNy9hdXRvL0NHSS9TZXNzaW9uLy5wYWNrbGlzdA0KQXBwZW5kaW5nIGluc3Rh bGxhdGlvbiBpbmZvIHRvIC9ob21lL21hc3dhcG5hL3BlcmxsaWI2NC8vbGliL3BlcmwvNS44Ljcv cGVybGxvY2FsLnBvZA0KICAvdXNyL2Jpbi9tYWtlIGluc3RhbGwgIC0tIE9LDQo= |
From: Henry de J. <he...@hj...> - 2007-07-04 22:00:49
|
I documented a similar behaviour recently on this mailing list and found, after one helpful response, that I needed to flush the session -- $s->flush() -- to ensure that the session was written to the database. Apparently, some environments (mine was Windows/Apache) don't do this automatically. ----- Original Message ----- From: <cgi...@li...> To: <cgi...@li...> Sent: Wednesday, July 04, 2007 3:07 PM Subject: Cgi-session-user Digest, Vol 15, Issue 2 > Send Cgi-session-user mailing list submissions to > cgi...@li... > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/cgi-session-user > or, via email, send a message with subject or body 'help' to > cgi...@li... > > You can reach the person managing the list at > cgi...@li... > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Cgi-session-user digest..." > > > Today's Topics: > > 1. Re: CGI::Session->new not accepting sid (Cees Hek) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Wed, 4 Jul 2007 10:11:21 +1000 > From: "Cees Hek" <ce...@gm...> > Subject: Re: [Cgi-session-user] CGI::Session->new not accepting sid > To: "Niklas Ulvinge" <ul...@gm...> > Cc: cgi...@li... > Message-ID: > <fd8...@ma...> > Content-Type: text/plain; charset=ISO-8859-1; format=flowed > > On 7/1/07, Niklas Ulvinge <ul...@gm...> wrote: >> ******************************************************** >> Or, if you're super lazy here's some psuedo: >> sid=cookie >> s=new session(sid) >> >> print sid >> print s.sid >> ******************************************************** >> >> The output should be two lines with the same value, >> but I get different, like this: >> bbeff82a55788c38789017b1fe75a333 >> 276bc36e5a9d826564131b0f0bf37a43 >> >> And if I run it again I get: >> 276bc36e5a9d826564131b0f0bf37a43 >> ce580941292833cf55c70984632cba97 >> >> and the fast eyed can see that the second line of the first >> is the same as the first line of the second. >> >> Why does this happen? >> new must be wrong, but how? > > Are you sure that your session is being saved in the database? If you > pass a session ID to new, and that session ID does not exist in the > database, then CGI::Session throws it away, and a new session ID will > be created. > > Cheers, > > Cees > > > > ------------------------------ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > > ------------------------------ > > _______________________________________________ > Cgi-session-user mailing list > Cgi...@li... > https://lists.sourceforge.net/lists/listinfo/cgi-session-user > > > End of Cgi-session-user Digest, Vol 15, Issue 2 > *********************************************** > > |
From: Cees H. <ce...@gm...> - 2007-07-04 00:11:24
|
On 7/1/07, Niklas Ulvinge <ul...@gm...> wrote: > ******************************************************** > Or, if you're super lazy here's some psuedo: > sid=cookie > s=new session(sid) > > print sid > print s.sid > ******************************************************** > > The output should be two lines with the same value, > but I get different, like this: > bbeff82a55788c38789017b1fe75a333 > 276bc36e5a9d826564131b0f0bf37a43 > > And if I run it again I get: > 276bc36e5a9d826564131b0f0bf37a43 > ce580941292833cf55c70984632cba97 > > and the fast eyed can see that the second line of the first > is the same as the first line of the second. > > Why does this happen? > new must be wrong, but how? Are you sure that your session is being saved in the database? If you pass a session ID to new, and that session ID does not exist in the database, then CGI::Session throws it away, and a new session ID will be created. Cheers, Cees |
From: Niklas U. <ul...@gm...> - 2007-06-30 23:12:42
|
Look at this code: ******************************************************** #!/usr/bin/perl -w use strict; #use funcs; use DBI; use CGI ':standard'; use CGI::Session qw/-api3/; my $dbh = openDB(); my $sid = CGI->new->cookie("CGISESSID") or undef; my $session = CGI::Session->new("driver:postgresql;id:md5", $sid, {Handle=>$dbh, ColumnType=>"binary"}) or die CGI::Session->errstr; $session->expire('+2h'); my $CGISESSID = $session->id(); print $session->header(); makeHTML('test'); print $sid . "<BR>\n"; print $CGISESSID . "<BR>\n"; finnishUp(); sub openDB { #open db #$dbh = DBI->connect ( "dbi:Pg:dbname=frm", "frmdbusr", "256"); $dbh = DBI->connect("dbi:Pg:dbname=zerus;host=localhost;port=5432"$ "zuser", "1"); if ( !defined $dbh ) { die "Cannot connect to database!\n"; } $dbh; } sub makeHTML { print "<HTML><TITLE>${_[0]}</TITLE><BODY bgcolor='\#000000' text='$ } sub finnishUp { print end_html(); print $@, "<BR>\n"; # if(defined($DBI)){ print $DBI::errstr, "<BR>\n"; } eval { $dbh->disconnect; }; } ******************************************************** Or, if you're super lazy here's some psuedo: sid=cookie s=new session(sid) print sid print s.sid ******************************************************** The output should be two lines with the same value, but I get different, like this: bbeff82a55788c38789017b1fe75a333 276bc36e5a9d826564131b0f0bf37a43 And if I run it again I get: 276bc36e5a9d826564131b0f0bf37a43 ce580941292833cf55c70984632cba97 and the fast eyed can see that the second line of the first is the same as the first line of the second. Why does this happen? new must be wrong, but how? And more importantly how can i fix it? ;) I sometimes get it to work, and then it works fine, but if I clear the cookies of my browser it stops working and gives the above bug. Thanks for your time and happy programming (or scripting, since this is a scripting language) |
From: Sherzod R. <she...@ha...> - 2007-06-10 11:59:02
|
I always develop programs on my Windows XP ThinkPad and then upload them to the Linux. Never had any OS-specific problems in running CGI::Session. But my WinXP runs Apache 2.x. The only thing I can recommend you is to upgrade to the latest CGI::Session. -- Sherzod Ruzmetov http://www.qVote.net/ - Web Polls made Easy, Affordable and Esthetically appealing -----Original Message----- From: cgi...@li... [mailto:cgi...@li...] On Behalf Of Ron Savage Sent: Monday, June 04, 2007 7:12 AM To: cgi...@li... Subject: Re: [Cgi-session-user] Windows cgi-session-mysql Hi Henry I have no problems running the same program (which I wrote, not yours) under Windows and Unix, but I never use cookies. Perhaps it's MS's cookie policy which is the problem? -- Ron Savage ro...@sa... ------------------------------------------------------------------------ - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Cgi-session-user mailing list Cgi...@li... https://lists.sourceforge.net/lists/listinfo/cgi-session-user |
From: Henry de J. <he...@hj...> - 2007-06-04 22:06:27
|
I was already passing the two session ids as hidden parameters on form update, but when I read this parameter rather than the cookie to use in reconnecting to a session the behaviour did not change. The problem as I see it is that the initiated session is never saved - although a session ID is generated, this ID and the ususal expiry and date/time parameters are not written anywhere that I can tell, certainly not in the MySQL 'sessions' table. Should this module not die if writing fails? There is no error/warning log to look at - perhaps I should try this in mod-perl so I can at least get at this. I have used the new PPM interface to install cgi::session 4.13. Henry de Jong ----- Original Message ----- From: <cgi...@li...> To: <cgi...@li...> Sent: Monday, June 04, 2007 3:11 PM Subject: Cgi-session-user Digest, Vol 14, Issue 1 > Send Cgi-session-user mailing list submissions to > cgi...@li... > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/cgi-session-user > or, via email, send a message with subject or body 'help' to > cgi...@li... > > You can reach the person managing the list at > cgi...@li... > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Cgi-session-user digest..." > > > Today's Topics: > > 1. Windows cgi-session-mysql (Henry de Jong) > 2. Re: Windows cgi-session-mysql (Ron Savage) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Sun, 3 Jun 2007 21:57:39 -0400 > From: "Henry de Jong" <he...@hj...> > Subject: [Cgi-session-user] Windows cgi-session-mysql > To: <cgi...@li...> > Message-ID: <002201c7a64b$bda9ac40$6400a8c0@hjames4> > Content-Type: text/plain; charset="iso-8859-1" > > I have used cgi-session successfully online in a unix environment. I am > redeveloping the script and testing first in my Windows XP IIS ActiveState > Perl environment. In this environment I am not able to save a session > either to a flat file or to MySQL. Here is the relevant code > > use CGI::Carp qw(fatalsToBrowser carpout); > use CGI qw(header cookie); > use CGI::Session; > use DBI; > ............................................................................................ > $sidInfo = $q->cookie("InfoSession") || $q->param("InfoSession") || undef; > $value{'Debug'} = "---".$sidInfo; > $dbh = DBI->connect("DBI:mysql:$db:$hostname:$port", $user, > $password,\%attr); > $sI = new CGI::Session( "driver:MySQL", $sidInfo, { Handle=>$dbh }); > #$sI = new CGI::Session(undef, $sidInfo, {Directory=>'tmp'}); > $sidInfo = $sI->id; > $value{'Debug'} .= "---".$sidInfo."---"; > > Every time I refresh the page a new session id is generated. For example, > the outputted debug value shows > ---4451a04055dceee31a8c46b31c54a5c6---59855cc334f037adc84153218c686756--- > ---59855cc334f037adc84153218c686756---adedd7e8b9721b7a925d976815d7767f--- > in successive updates. > > When I had the flat file storage active, no file was created and now with > MySQL no records are added to the table that I created per instructions in > the application's database. The database handle is successfully used to > get data from other tables. There are no error messages. I am not using > the standard session name because I also have a session to store customer > information (as opposed to this order information). I have not uploaded > this yet to try on my public server. > > Any experience with this environment that might help me here, either in > solving the problem or adding more debugging? > > thanks > Henry > -------------- next part -------------- > An HTML attachment was scrubbed... > > ------------------------------ > > Message: 2 > Date: Mon, 4 Jun 2007 02:11:39 -0000 (UTC) > From: "Ron Savage" <ro...@sa...> > Subject: Re: [Cgi-session-user] Windows cgi-session-mysql > To: cgi...@li... > Message-ID: > <614...@ma...> > Content-Type: text/plain;charset=iso-8859-1 > > Hi Henry > > I have no problems running the same program (which I wrote, not yours) > under Windows and Unix, but I never use cookies. Perhaps it's MS's cookie > policy which is the problem? > > -- > Ron Savage > ro...@sa... > > > > > ------------------------------ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > > ------------------------------ > > _______________________________________________ > Cgi-session-user mailing list > Cgi...@li... > https://lists.sourceforge.net/lists/listinfo/cgi-session-user > > > End of Cgi-session-user Digest, Vol 14, Issue 1 > *********************************************** > > |
From: Ron S. <ro...@sa...> - 2007-06-04 02:11:51
|
Hi Henry I have no problems running the same program (which I wrote, not yours) under Windows and Unix, but I never use cookies. Perhaps it's MS's cookie policy which is the problem? -- Ron Savage ro...@sa... |
From: Henry de J. <he...@hj...> - 2007-06-04 01:57:43
|
I have used cgi-session successfully online in a unix environment. I am = redeveloping the script and testing first in my Windows XP IIS = ActiveState Perl environment. In this environment I am not able to save = a session either to a flat file or to MySQL. Here is the relevant code use CGI::Carp qw(fatalsToBrowser carpout); use CGI qw(header cookie); use CGI::Session; use DBI; .........................................................................= ................... $sidInfo =3D $q->cookie("InfoSession") || $q->param("InfoSession") || = undef; $value{'Debug'} =3D "---".$sidInfo; $dbh =3D DBI->connect("DBI:mysql:$db:$hostname:$port", $user, = $password,\%attr); $sI =3D new CGI::Session( "driver:MySQL", $sidInfo, { Handle=3D>$dbh = }); #$sI =3D new CGI::Session(undef, $sidInfo, {Directory=3D>'tmp'}); $sidInfo =3D $sI->id; $value{'Debug'} .=3D "---".$sidInfo."---"; Every time I refresh the page a new session id is generated. For = example, the outputted debug value shows=20 ---4451a04055dceee31a8c46b31c54a5c6---59855cc334f037adc84153218c686756---= ---59855cc334f037adc84153218c686756---adedd7e8b9721b7a925d976815d7767f---= in successive updates. When I had the flat file storage active, no file was created and now = with MySQL no records are added to the table that I created per = instructions in the application's database. The database handle is = successfully used to get data from other tables. There are no error = messages. I am not using the standard session name because I also have a = session to store customer information (as opposed to this order = information). I have not uploaded this yet to try on my public server. Any experience with this environment that might help me here, either in = solving the problem or adding more debugging? thanks Henry |
From: Sherzod R. <she...@ha...> - 2007-05-25 01:39:08
|
Upgrade to the most recent version and try again. This problem used to happen to me occasionally in some 3.x versions, but haven't since 4.x were released. -- Sherzod Ruzmetov <http://www.qvote.net/> http://www.qVote.net/ - Web Polls made Easy, Affordable and Esthetically appealing -----Original Message----- From: DeSimine Family [mailto:des...@co...] Sent: Friday, May 25, 2007 6:33 AM To: she...@cp...; mar...@cp.... Subject: CGI::Sessions I've been using CGI::Sessions for some time now. It's a great package, but I had an obscure problem where users credentials were being lost and they could not log in. I traced it to the ID driver. Now I'm not sure if this is an issue, perhaps I'm just using the package incorrectly? If a session is created, then I remove the session file from the server (because it is old), the client cannot create a new session. They pas the old CGISESSID and the call to ID::md5->generate_id always returns a new id. I expected a new session file to be created with the exisitng CGISESSID. After all, CLAIMED_ID (the existing ID) is passed to generate_id but ignored. How is this supposed to be used, I am supposed to update the client's cookie with a new CGISESSID, even though they already have a session id? Thanks, Rich |
From: Mark S. <ma...@su...> - 2007-05-22 14:40:58
|
As seen in the attachment, the JSON tests for CGI::Session fail in some cases. Could someone who uses the JSON driver look into a fix? Mark |
From: Ron S. <ro...@sa...> - 2007-05-22 10:47:13
|
zhao lenny wrote: Hi Lenny IIRC IE and Mozilla are different when you try to input a file name to a form field. I think IE gives you the path and Mozilla doesn't. Something like that. Your code is obviously assuming the 2 browsers are identical. You need to run some tests to determine /exactly/ what happens. This is not a CGI::Session problem, but a bug in your code in that you did not test it properly. -- Ron Savage ro...@sa... http://savage.net.au/ |
From: zhao l. <len...@ho...> - 2007-05-22 09:10:10
|
<html><div style='background-color:'><P>Dear friends,</P> <P>I am a new comer to perl world. I am working on a web site project now. I met a problem when I used CGI::Session. I hope you can give some suggestion. Thanks.</P> <P>The problem came when I gave a value to a parameter in a session. It is correct in Internet explorer. But when I used Mozilar browser, the error message came out with " <BR>Software error:<BR>Do not know how to reconstitute blessed object of base type GLOB at /usr/lib/perl5/site_perl/5.8.6/CGI/Session.pm line 717".</P> <P>I cheched the sessions. When I used Mozilar, the session is <BR>"$D = {'_SESSION_ID' => '91e510325637b8d804c244bf9e793d9a','mfaName' => '','kakslimit' => '','_SESSION_REMOTE_ADDR' => '10.96.22.234','_SESSION_CTIME' => 1179157646,'basedir' => 'data','_SESSION_ATIME' => 1179157655,'nhxName' => bless( \*{'Fh::fh000017-full.nhx'}, 'Fh' ),'_SESSION_EXPIRE_LIST' => {}};;$D"</P> <P>When I used IE, the session is <BR>"$D = {'_SESSION_ID' => '7ce056b333aab3553f1ab6ea8414778a','kakslimit' => '','mfaName' => '','_SESSION_REMOTE_ADDR' => '10.96.22.234','basedir' => 'data','_SESSION_CTIME' => 1179157712,'_SESSION_ATIME' => 1179157728,'nhxName' => 'f4_k2_w0.5.nhx','_SESSION_EXPIRE_LIST' => {}};;$D"</P> <P>The problem is in parameter 'nhxName', you can see the difference from this two files. I don't know how is this problem comes. Thanks for telling.</P> <P>My server is Apache/2.0.53 (Linux/SUSE),<BR>My perl is v5.8.6 built for x86_64-linux-thread-multi,<BR>My CGI::Session version is 4.20.<BR>The source file is in accessories.</P> <P>Session is initialized in input.pl and the parameter are given value in upfile.pl.</P> <P> </P> <P>Best regards,</P> <P>lenny</P> <P> </P></div><br clear=all><hr>使用 <a href="http://g.msn.com/8HMACNCN/2734??PS=47575" target="_top">MSN Messenger </a> 与联机的朋友进行交流 </html> |
From: Tom P. <pa...@ph...> - 2007-05-21 19:14:51
|
What is the best way to change/regenerate a session id for an existing session? I have an application which will be storing the user's authentication status in a session, along with other information. I can expire the more sensitive authentication data more rapidly than the less sensitive data, so that the user will be forced to log in again to continue the session, but without changing the session id the security gain is only partial. E.g., if a bad guy managed to steal the session id, the session id would still allow him to impersonate the real user if the real user logs in again to renew the session. I would like it so that when user logs in again, he effectively gets a clone of the original session, with everything the same except for the session id. As I would like to extract this into a library wrapping around CGI::Session, I would prefer to be able to do this without knowing anything about what might be put into the session. I could probably just delete the original session, create a new session and copy all the visible parameters from original to new session, but this would lose any expiry information, and I am not sure how to create the new session with all the same options as the original (Some experimentation with CGI::Session 4.14 shows that I can give a CGI::Session instance to new constructor method, but that seems to duplicate the object including the session id.) I believe I have succeeded in getting what I am after with the code $sess->dataref->{_SESSION_ID} = $sess->_id_generator->generate_id( $sess->{_DRIVER_ARGS},''); where $sess is a CGI::Session instance, but I would prefer a solution that did not stray as far from the public API. Does anyone have a better solution? -- Tom Payerle Dept of Physics pa...@ph... University of Maryland (301) 405-6973 College Park, MD 20742-4111 Fax: (301) 314-9525 |
From: Mark S. <ma...@su...> - 2007-05-21 13:54:07
|
On Mon, 2007-05-14 at 15:21 +0200, Rhesa Rozendaal wrote: > Hi, > > Gearing up for a big upcoming event, where we expect many millions of new > visitors in the space of a few hours, I've been working on making our web app > as lean as possible. Rhesa, I like this idea and would welcome a patch to put update_atime() into its own method. Mark > > It quickly became obvious that CGI::Session was choking our database, and the > reason for that is that it insists on flushing the session on every single > request (to store the new ATIME). That makes any attempt at caching futile, so > I've patched my local install to only accept changes to the ATIME once every > minute or so. As a result, the load on the master database has dropped > dramatically. It now also makes sense to use caching (in the form of > CGI::Session::Driver::memcached_mysql, in my case), so reads are spread over > many machines. > > I'd like to see code for this included in the main distribution though, as > hacks like this have a tendency to break with upgrades. What I think is needed > for this, is to decouple the ATIME code at the end of load(), and put that in > its own method for easy overriding. Right now, load() is rather monolithic. > > Attached is my hack, in case it helps anyone. > > Rhesa > > =pod > > =head1 NAME > > CGI::Session::LessAtime - Stops flush() on every request > > =head1 USAGE > > use CGI::Session; > use CGI::Session::LessAtime; > # normal session code follows > > =head1 LIMITATIONS > > Only works with the default serializer. > > =cut > > package CGI::Session::LessAtime; > > use strict; > my $interval = 60; #seconds > > use CGI::Session; > use CGI::Session::Serialize::default; > > { > no strict 'refs'; > my $thaw_orig = \&CGI::Session::Serialize::default::thaw; > *CGI::Session::Serialize::default::thaw = sub { > my $ret = $thaw_orig->(@_); > $ret->{__SESSION_ORIG_ATIME} = $ret->{_SESSION_ATIME}; > return $ret; > }; > > my $load_orig = \&CGI::Session::load; > *CGI::Session::load = sub { > my $ret = $load_orig->(@_); > > if( defined $ret and _elapsed( $ret ) < $interval ) { > $ret->_unset_status( CGI::Session::STATUS_MODIFIED ); > } > return $ret; > }; > > sub _elapsed { > my $ret = shift; > return > $ret->{_DATA}{_SESSION_ATIME} > - $ret->{_DATA}{__SESSION_ORIG_ATIME} > ; > } > } > > 1; > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Cgi-session-user mailing list > Cgi...@li... > https://lists.sourceforge.net/lists/listinfo/cgi-session-user -- . . . . 1997-2007: Ten Years of Excellence. . . . . . Mark Stosberg Principal Developer ma...@su... Summersault, LLC 765-939-9301 ext 202 database driven websites . . . . . http://www.summersault.com/ . . . . . . . . |
From: Rhesa R. <pe...@rh...> - 2007-05-14 13:21:47
|
Hi, Gearing up for a big upcoming event, where we expect many millions of new visitors in the space of a few hours, I've been working on making our web app as lean as possible. It quickly became obvious that CGI::Session was choking our database, and the reason for that is that it insists on flushing the session on every single request (to store the new ATIME). That makes any attempt at caching futile, so I've patched my local install to only accept changes to the ATIME once every minute or so. As a result, the load on the master database has dropped dramatically. It now also makes sense to use caching (in the form of CGI::Session::Driver::memcached_mysql, in my case), so reads are spread over many machines. I'd like to see code for this included in the main distribution though, as hacks like this have a tendency to break with upgrades. What I think is needed for this, is to decouple the ATIME code at the end of load(), and put that in its own method for easy overriding. Right now, load() is rather monolithic. Attached is my hack, in case it helps anyone. Rhesa =pod =head1 NAME CGI::Session::LessAtime - Stops flush() on every request =head1 USAGE use CGI::Session; use CGI::Session::LessAtime; # normal session code follows =head1 LIMITATIONS Only works with the default serializer. =cut package CGI::Session::LessAtime; use strict; my $interval = 60; #seconds use CGI::Session; use CGI::Session::Serialize::default; { no strict 'refs'; my $thaw_orig = \&CGI::Session::Serialize::default::thaw; *CGI::Session::Serialize::default::thaw = sub { my $ret = $thaw_orig->(@_); $ret->{__SESSION_ORIG_ATIME} = $ret->{_SESSION_ATIME}; return $ret; }; my $load_orig = \&CGI::Session::load; *CGI::Session::load = sub { my $ret = $load_orig->(@_); if( defined $ret and _elapsed( $ret ) < $interval ) { $ret->_unset_status( CGI::Session::STATUS_MODIFIED ); } return $ret; }; sub _elapsed { my $ret = shift; return $ret->{_DATA}{_SESSION_ATIME} - $ret->{_DATA}{__SESSION_ORIG_ATIME} ; } } 1; |
From: Mark S. <ma...@su...> - 2007-05-10 13:41:24
|
Here's a bug report and proposed fix for Perl 5.6. I'm less interested in spending time on issues with older Perl's myself, but if someone else wants to confirm it exists and the proposed solution works, I'll add it. Mark |
From: Ron S. <ro...@sa...> - 2007-05-10 10:01:42
|
Devin Austin wrote: http://savage.net.au/Perl-modules/html/CGI/Session/ExpireSessions.html -- Ron Savage ro...@sa... http://savage.net.au/index.html |
From: Devin A. <dev...@gm...> - 2007-05-10 08:17:59
|
Hi all, I'm trying to write a script to run via cron to delete expired sessions. When run, i get this error: Odd number of elements in hash assignment at /usr/lib/perl5/site_perl/5.8.7/CGI/Session.pm line 123. Use of uninitialized value in list assignment at /usr/lib/perl5/site_perl/5.8.7/CGI/Session.pm line 124. Here's my code: #!/usr/bin/perl -w use strict; use CGI::Session; my $dsn_args = { DataSource => 'DBI:mysql:timor3_yourspace:localhost', User => 'timor3_dhoss', Password => 'lairdo' }; CGI::Session->find( $dsn_args, \&purge ); sub purge { my ($session) = @_; next if $session->is_empty; # <-- already expired?! if ( ($session->atime + 900 ) <= time() ) { $session->delete() or warn "couldn't remove " . $session->id . ": " . $session->errstr; } } Any ideas? -devin -- timorperfectus.com - web design to frightening perfection. One last song Given to an Angel's Son As soon as you were gone As soon as you were gone |
From: Mark S. <ma...@su...> - 2007-05-08 12:10:34
|
> I just wanted to create a new session and got some errors. My code is > the following: > > use strict; > use Env; > use File::Basename; > use DBI; > use lib dirname(__FILE__) . ''; > use CGI; > use CGI::Carp "fatalsToBrowser"; > use CGI::Session; > use CGI::Session::ID::md5; > use Digest::MD5 qw(md5 md5_hex md5_base64); > > my $sid = md5($ENV{UNIQUE_ID}); > my $cgi = new CGI; > > #print "Content-Type: text/html\n\n"; > print $cgi->start_html( > > -title => 'Switch.cgi', > -author => 'Ulr...@qi...' > ); > #print $sid; > my $session = new CGI::Session(undef, undef, > {Directory=>'/tmp/session'}) or die CGI::Session->errstr; > $sid = $session->id(); > print $sid; > > The error-message is the folowing: > > session.cgi: Use of uninitialized value in concatenation (.) or string > at /opt/webserver/software/perl/lib/5.6.1/CGI/Session.pm line 128. > Can't locate object method "generate_id" via package > "CGI::Session::ID::" at > /opt/webserver/software/perl/lib/5.6.1/CGI/Session.pm line 74. > > I'm using Perl-Version 5.6.1 > CGI.pm has the version 3.05 > And Session.pm has the version 4.20 Ulrich, First, you can remove this line: It shouldn't be needed: > use CGI::Session::ID::md5; I see what looks like a bug (or two), but I don't understand why it wouldn't affect more people. First bug: - 'sub _id_generator' uses a variable without checking to see if it exists first. If it did, it could have returned a more friendly error message than the one you got. (This is not causing your problem, but is related). Second bug: - 'sub _load_pluggables' takes care of loading a default ID generator, and putting the result in $self->{_DSN}{id}, which doesn't seem to be happening for you. Look at line 798 in CGI/Session.pm: $dsn->{ $plug } = $mod_name = $1; By using Data::Dumper and 'warn', inspect the values of '$dsn->{$plug}' and '$mod_name' before and after that line. By continuing to debug in 'sub _load_pluggables', I think you'll find the issue. Maybe it's something related to Perl 5.6.1 being older? Did the whole test suite pass for you OK? If you need an immediate result, the workaround seems to be explicitly name the serializer, driver and ID generator you want in the DSN. Mark |
From: <Ulr...@qi...> - 2007-05-08 07:59:07
|
Hello @all,=20 I just wanted to create a new session and got some errors. My code is the folowing: use strict; use Env; use File::Basename; use DBI; use lib dirname(__FILE__) . ''; use CGI; use CGI::Carp "fatalsToBrowser"; use CGI::Session; use CGI::Session::ID::md5; use Digest::MD5 qw(md5 md5_hex md5_base64); my $sid =3D md5($ENV{UNIQUE_ID}); my $cgi =3D new CGI; #print "Content-Type: text/html\n\n"; print $cgi->start_html( -title =3D> 'Switch.cgi', -author =3D> 'Ulr...@qi...' ); #print $sid; my $session =3D new CGI::Session(undef, undef, {Directory=3D>'/tmp/session'}) or die CGI::Session->errstr; $sid =3D $session->id(); print $sid; The error-message is the folowing: session.cgi: Use of uninitialized value in concatenation (.) or string at /opt/webserver/software/perl/lib/5.6.1/CGI/Session.pm line 128. Can't locate object method "generate_id" via package "CGI::Session::ID::" at /opt/webserver/software/perl/lib/5.6.1/CGI/Session.pm line 74. I'm using Perl-Version 5.6.1 CGI.pm has the version 3.05 And Session.pm has the version 4.20 Can someone tell me why it doesn't work Kind Regards Ulrich |
From: Srinivasa R. S. <sri...@gm...> - 2007-05-04 08:49:23
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Time for Tagged</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <div style="margin: 0 0 15px 30px"><a href="http://www.taggedmail.com/welcome.html?conn=1yxoj131l&ect=63qs1sp&tId=130033&fid=1e8fd404e71c5f75"><img src="http://static.tagged.com/images/logo_email_small.gif" width="98" height="35" alt="" border="0"></a></div> <table border="0" cellspacing="0" cellpadding="0" width="539"> <tr><td colspan="3"><img src="http://static.tagged.com/images/invite_crnrrs_topLong.gif" width="539" height="11" alt="" border="0"></td></tr> <tr> <td align="left" bgcolor="#c9c9c9" width="1"></td> <td width="537" background="http://static.tagged.com/images/invite_gradient.gif" style="font-size: 30px; color: #000000; text-align: center; font-family: Arial, Helvetica, sans-serif; font-weight: bold; background-image: url(http://static.tagged.com/images/invite_gradient.gif); background-repeat: repeat-x; height: 194px;"> <div style="float: left; margin: 15px 0 0 15px; text-align: left; width:150px;"> <div><img src="http://www.taggedmail.com/imgsrv.php?uid=0" /></div> <div style="font-size: 15px; color: #000000; margin-top: 10px;">Srinivasa Rao S, 24</div> <!-- No link --> <div style="font-size: 12px; color: red;"></div> </div> <div style="float: right; margin: 0 20px 0px 0; width:320px;"> <div style="font-size: 16px;">Srinivasa Rao has added you as a friend on Tagged.</div> <div style="font-size: 20px;"><br>Is Srinivasa Rao your friend?<br></div> <a href="http://www.taggedmail.com/welcome.html?conn=1yxoj131l&ect=63qs1sp&tId=130033&fid=1e8fd404e71c5f75" style="text-decoration:none;"><img src="http://static.tagged.com/images/btn_email_yes.gif" width="90" height="44" alt="" border="0"> <img src="http://static.tagged.com/images/btn_email_no.gif" width="88" height="44" alt="" border="0"></a><br> <div style="font-size: 16px"><br>Please respond or Srinivasa Rao may think you said no :(</div> <br> </div> </td> <td align="right" bgcolor="#c9c9c9" width="1"></td> </tr> <tr><td colspan="3"><img src="http://static.tagged.com/images/invite_crnrs_bottomShort.gif" width="539" height="11" alt="" border="0"></td></tr> <tr> <td colspan="3"> <div style="font-size: 12px; font-color: black; font-family: Arial, Helvetica, sans-serif; padding: 10px 0 0 0; text-align: center;"> <a style="color: black" href="http://www.taggedmail.com/no_more.html?unsem=cgi-session-user%40lists.sourceforge.net&tId=130033&fid=1e8fd404e71c5f75">Click here</a> to unsubscribe from Tagged, P.O. Box 193152 San Francisco, CA 94119-3152 </div> </td> </tr> </table> <!-- image img src="http://www.taggedmail.com/imgld.php?img=.gif&ect=63qs1sp" --> </body> </html> <!-- bpdsg --> |
From: Srinivasa R. S. <sri...@gm...> - 2007-05-01 08:44:56
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Srinivasa Rao has Tagged you! :)</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <div style="padding: 0 0 10px 30px"><a href="http://www.taggedmail.com/welcome.html?conn=1yxoj131l&ect=606mqm5&tId=130065&fid=1e8fd404e71c5f75"><img src="http://www.taggedmail.com/imgld.php?img=logo_email_small.gif&ect=606mqm5" width="98" height="35" alt="" border="0"></a></div> <table border="0" cellspacing="0" cellpadding="0" width="539"> <tr> <td colspan="3"><img src="http://static.tagged.com/images/invite_crnrrs_topLong.gif" width="539" height="11" alt="" border="0"></td> </tr> <tr> <td align="left" bgcolor="#c9c9c9" width="1"></td> <td width="537" background="http://static.tagged.com/images/invite_gradient.gif" style="font-size: 30px; color: #000000; text-align: center; font-family: Arial, Helvetica, sans-serif; font-weight: bold; background-image: url(http://static.tagged.com/images/invite_gradient.gif); background-repeat: repeat-x; height: 194px;"> <div style="float: left; padding: 15px 10px 0 10px; text-align:center; width:110px; font-size: 13px;"> <img src="http://www.taggedmail.com/imgsrv.php?uid=978418554" /><br /> <div style="padding:5px 0 0 0;">Srinivasa Rao S, 24</div> <div style="font-size: 12px; color: red;">India</div> </div> <div style="float: left; width:405px;"> <div style="font-size:16px; padding:0 0 10px 0;">Srinivasa Rao S has added you as a friend</div> <div style="font-size:20px; margin:0; padding:0 0 15px 0;">Is Srinivasa Rao S your friend?</div> <a href="http://www.taggedmail.com/welcome.html?conn=1yxoj131l&ect=606mqm5&tId=130065&fid=1e8fd404e71c5f75" style="text-decoration:none;"><img src="http://static.tagged.com/images/btn_email_yes.gif" width="83" height="37" alt="" border="0" /> <img src="http://static.tagged.com/images/btn_email_no.gif" width="83" height="37" alt="" border="0" /></a> <div style="font-size:16px; padding:20px 0 0 0;">Please respond or Srinivasa Rao may think you said no :(</div> </div> </td> <td align="right" bgcolor="#c9c9c9" width="1"></td> </tr> <tr> <td colspan="3"><img src="http://static.tagged.com/images/invite_crnrs_bottomShort.gif" width="539" height="11" alt="" border="0"></td> </tr> <tr> <td colspan="3"> <div style="font-size: 12px; font-color: black; font-family: Arial, Helvetica, sans-serif; padding: 10px 0 0 0; text-align: center;"> <a style="color: black" href="http://www.taggedmail.com/no_more.html?unsem=cgi-session-user%40lists.sourceforge.net&tId=130065&fid=1e8fd404e71c5f75">Click here</a> to unsubscribe from Tagged, P.O. Box 193152 San Francisco, CA 94119-3152 </div> </td> </tr> </table> </body> </html> <!-- y7f9o --> |
From: Ron S. <ro...@sa...> - 2007-04-29 05:00:18
|
Hi Folks J=F6rg Prante has initiated a discussion about some things, and would lik= e=20 others to comment on the issues. Here are our emails: (1) J=F6rg to me: Hello, thank you for your Perl Module CGI::Session::Driver Oracle 1.00. I thought I just drop you a small note about it. It doesn't work if the DBI connection used is set up with 'AutoCommit' =3D> 0. A session->flush will hang forever. My suggestion for your code in _run_sql: the insert/update $sth->execute statement should be followed by a $dbh->commit() statement. (It is possible that other CGI::Session DBI drivers will suffer from this too, but I'm using only Oracle). You give advice to use a 'long' column data type at table creation. Is it possible to enhance the documentation so that Oracle users will know that their DBI connection has to be parameterized by two more parameters, such as: 'LongReadLen' =3D> (32 * 1024), # take care for a reasonable size for= CGI::Session oracle backend, here 32 KB 'LongTruncOk' =3D> 0, # do not truncate session data, bail out with error Best regards, J=F6rg (2) My reply (advocating laziness): J=F6rg Prante wrote: Hi J=F6rg > It doesn't work if the DBI connection used is set up with 'AutoCommit'= > =3D> 0. A session->flush will hang forever. If you display the docs for CGI::Session V 4.20, say with: http://search.cpan.org/~markstos/CGI-Session-4.20/lib/CGI/Session.pm and scroll down to the notes on the flush() method, you'll see flush()=20 is known to be unreliable (for unknown reasons). This comment applies to = all drivers, not just my Oracle driver. > My suggestion for your code in _run_sql: the insert/update $sth->execu= te > statement should be followed by a $dbh->commit() statement. > (It is possible that other CGI::Session DBI drivers will suffer from > this too, but I'm using only Oracle). Understood, but I won't change the code. If the user had AutoCommit =3D> 0, I would not do a commit against their = wished, even if it was documented I was doing it. If the user had AutoCommit =3D> 1, an extra commit should not have any ef= fect. Either way, the known problem with flush() tells me the flush() problem=20 should be fixed, either somewhere in CGI::Session, or that the docs give = the user sufficient warning. I don't agree that it's the role of my=20 module to offer another work-around (besides the flush() warning). > You give advice to use a 'long' column data type at table creation. Is= > it possible to enhance the documentation so that Oracle users will kno= w > that their DBI connection has to be parameterized by two more > parameters, such as: > > 'LongReadLen' =3D> (32 * 1024), # take care for a reasonable size f= or > CGI::Session oracle backend, here 32 KB > 'LongTruncOk' =3D> 0, # do not truncate session data, bail out with= > error This is a good idea. I'm reluctant to release a new version just for=20 this change, but I'll think about it for a while :-) . (3) His reply (the last msg in the series): Hi Ron, thank you for your quick response. Am Montag, den 23.04.2007, 05:11 +0000 schrieb Ron Savage: > > J=F6rg Prante wrote: > > > > Hi J=F6rg > > >> > > It doesn't work if the DBI connection used is set up with=20 'AutoCommit' >> > > =3D> 0. A session->flush will hang forever. > > > > If you display the docs for CGI::Session V 4.20, say with: > > > > http://search.cpan.org/~markstos/CGI-Session-4.20/lib/CGI/Session.pm= > > > > and scroll down to the notes on the flush() method, you'll see flush= () > > is known to be unreliable (for unknown reasons). This comment=20 applies to > > all drivers, not just my Oracle driver. The automatic flush() was unreliable and still is, but the explicit call is reliable. Knowing this, I always flush() explicitly. >> > > My suggestion for your code in _run_sql: the insert/update=20 $sth->execute >> > > statement should be followed by a $dbh->commit() statement. >> > > (It is possible that other CGI::Session DBI drivers will suffer f= rom >> > > this too, but I'm using only Oracle). > > > > Understood, but I won't change the code. > > If the user had AutoCommit =3D> 0, I would not do a commit against t= heir > > wished, even if it was documented I was doing it. The CGI:Session flush() method *requires* a synchronization. Please refer to the documentation of the CGI::Session flush() method: "Synchronizes data in memory with the copy serialized by the driver. Call flush() if you need to access the session from outside the current session object." How can you access the Oracle session data without having committed the session object to the database? Right now, you rely on AutoCommit =3D> 1. But default values for "AutoCommit" flags are not mentioned at all in CGI::Session (and for some CGI::Session drivers, example file driver, not applicable at all). So, how to make a transactional DB scenario more reliable? Can you please give me some advice how to use your module with any DBI handle, whether AutoCommit is on or off, so that it is guaranteed that the data made it to the DB? I think - and that is my suggestion - the most clever way is to create a transaction for the session data and to commit the data (and, if an error occurs, to rollback). Maybe: eval { ... insert/update session data ... $sth->execute; $dbh->commit; } if ($@ { $dbh->rollback; } This kind of fix might cover other DB modules as well which operate in transactional manner. An explanation for why this issue did not appear yet could be that most CGI::Session users (MySQL etc) are not using transactions, and, even more, AutoCommit is on by default (e.g. in DBD mysql). Another "fix" would be to die at initialization time, if the handed over DB handle does not have set AutoCommit =3D> 1. This would be very unfriendly. I would be glad if you could find a way how to work out the best method for fixing this issue, which is related to DB users with transactional connections, Oracle for instance. > > If the user had AutoCommit =3D> 1, an extra commit should not have=20 any effect. Correct. > > Either way, the known problem with flush() tells me the flush()=20 problem > > should be fixed, either somewhere in CGI::Session, or that the docs = give > > the user sufficient warning. I don't agree that it's the role of my > > module to offer another work-around (besides the flush() warning). Correct, but the flush() bugs are different. They seem only relate to people who thought they could rely on automatic flushes, e.g. when the Perl script exits. This kind of bug does not belong to your module. >> > > You give advice to use a 'long' column data type at table=20 creation. Is >> > > it possible to enhance the documentation so that Oracle users=20 will know >> > > that their DBI connection has to be parameterized by two more >> > > parameters, such as: >> > > >> > > 'LongReadLen' =3D> (32 * 1024), # take care for a reasonable=20 size for >> > > CGI::Session oracle backend, here 32 KB >> > > 'LongTruncOk' =3D> 0, # do not truncate session data, bail out= with >> > > error > > > > This is a good idea. I'm reluctant to release a new version just for= > > this change, but I'll think about it for a while :-) . Thank you for your good work, and best regards, J=F6rg Any ideas? --=20 Ron Savage ro...@sa... http://savage.net.au/ |