[Date Prev][Date Next] [Chronological] [Thread] [Top]

RE: (ITS#9037) observing crash in mdb_cursor_put()



SGVsbG8gSG93YXJkLA0Kd2UgYXJlIG5vdCBhYmxlIHRvIHJlcHJvZHVjZSB0aGUgaXNzdWUgY29u
c2lzdGVudGx5IHNvIHRlc3QgY29kZSBpcyBub3QgYXZhaWxhYmxlIGF0IHRoaXMgdGltZSwgYW5k
IEkgZG8gYmVsaWV2ZSB0aGlzIGlzc3VlIHdpbGwgYmUgcHJlc2VudCBpbiB0aGUgbGF0ZXN0IGNv
ZGUgYXMgd2VsbCBzaW5jZSBNeWsgYWxzbyByZXBvcnRlZCB0aGUgc2FtZS4uICBBdHRhY2hpbmcg
YW5hbHlzaXMgZnJvbSBvdXIgc2lkZSwgaG9wZSBpdCBoZWxwcy4NCg0KVGhlIGNhbGwgc3RhY2sg
d2hhdCB3ZSBoYXZlIHNlZW4gaXMsDQoNCiAgICAjMCAweDAwMTFiNjJlIGluIG1kYl9jdXJzb3Jf
cHV0IChtYz0weGZmZTUyZDE4LCBrZXk9MHhmZmU1MmU3NCwgZGF0YT0weGZmZTUyZTZjLCBmbGFn
cz0wKSBhdCBtZGIuYzo2Njg4DQogICAgIzEgMHgwMDExYzhlYyBpbiBtZGJfcHV0ICh0eG49MHhk
YzEzZjAwOCwgZGJpPTIsIGtleT0weGZmZTUyZTc0LCBkYXRhPTB4ZmZlNTJlNmMsIGZsYWdzPTAp
IGF0IG1kYi5jOjg3NzENCiAgICAjMiAweDAwYjc5MmI4IGluIExNREI6OkxNREJDb250ZXh0Ojpj
cmVhdGVTZXNzaW9uICh0aGlzPTB4ODBjYTQxOCwgc2lkPTB4ODI5N2JlNCAic2lkZWJmMzcwOGYw
ZmQ5ZmNiOGUwNjI1MjlkYTQ3YWRmNTE0MDJkZmM0NjAwMDAwMDAwKyIpIGF0IGxtZGJpbnQuY2M6
NDYwDQogICAgIzMgMHgwODA1MzU2NCBpbiB1cGRhdGVMTURCIChyZXF1ZXN0PS4uLiwgZm9yd2Fy
ZD1AMHhmZmU1MzE1ZikgYXQgc2Vzc2lvbnNlcnZlci5jYzoxMDc1DQogICAgIzQgcHJvY2Vzc1Jl
cXVlc3RXaXRob3V0UmVzcG9uc2UgKHJlcXVlc3Q9Li4uLCBmb3J3YXJkPUAweGZmZTUzMTVmKSBh
dCBzZXNzaW9uc2VydmVyLmNjOjExNjANCiAgICAjNSAweDA4MDU2YTgwIGluIHByb2Nlc3NSZXF1
ZXN0ICh0aGlzPTB4ODBiMmFjMCwgZmQ9MzMpIGF0IHNlc3Npb25zZXJ2ZXIuY2M6MTE4OQ0KICAg
ICM2IHJlYWRGcm9tU29jayAodGhpcz0weDgwYjJhYzAsIGZkPTMzKSBhdCBzZXNzaW9uc2VydmVy
LmNjOjEzNDINCiAgICAjNyBTb2NrSGFuZGxlcjo6aW9SZWFkeSAodGhpcz0weDgwYjJhYzAsIGZk
PTMzKSBhdCBzZXNzaW9uc2VydmVyLmNjOjE0NTUNCiAgICAjOCAweDAwYmEyNTkyIGluIHJ1bkNv
cmVEaXNwYXRjaGVyIChkZWZhdWx0X3Q9PHZhbHVlIG9wdGltaXplZCBvdXQ+LCBmbGFncz0tMSkg
YXQgZmRzLmNjOjg4OQ0KICAgICM5IDB4MDBiYTJmZjcgaW4gRFNFdm50RmRzOjpydW5EaXNwYXRj
aGVyICgpIGF0IGZkcy5jYzo5NDUNCiAgICAjMTAgMHgwODA1NTljNiBpbiBtYWluICgpIGF0IHNl
c3Npb25zZXJ2ZXIuY2M6MTczOQ0KDQpIZXJlIGl0IGlzIGhlbHBmdWwgdG8gZXhhbWluZSBmcmFt
ZXMgIzAgYW5kICMxIGluIGRldGFpbCBpbiByZWxhdGlvbiB0byB0aGUgcmVsZXZhbnQgc291cmNl
IGNvZGUgL2xpYnJhcmllcy9saWJsbWRiL21kYi5jLg0KDQpGcmFtZSAjMQ0KDQojMSAgMHgwMDEx
YzhlYyBpbiBtZGJfcHV0ICh0eG49MHhkYzEzZjAwOCwgZGJpPTIsIGtleT0weGZmZTUyZTc0LCBk
YXRhPTB4ZmZlNTJlNmMsIGZsYWdzPTApIGF0IG1kYi5jOjg3NzENCiAgICAgICAgbWMgPSB7bWNf
bmV4dCA9IDB4MCwgbWNfYmFja3VwID0gMHgwLCBtY194Y3Vyc29yID0gMHgwLCBtY190eG4gPSAw
eGRjMTNmMDA4LCBtY19kYmkgPSAyLCBtY19kYiA9IDB4ZGMxM2YwODgsIG1jX2RieCA9IDB4ZTEy
MTUwMzgsIG1jX2RiZmxhZyA9IDB4ZGMxY2YwOWEgIlwwMzMiLCAnXDAzMicgPHJlcGVhdHMgNTEg
dGltZXM+LCBtY19zbnVtID0gMCwgbWNfdG9wID0gMCwgbWNfZmxhZ3MgPSAwLCBtY19wZyA9IHsw
eDAsIDB4ODBiMmFjMCwgMHhmZmU1MmQ2OCwgMHgyOGFmY2UsIDB4ZGMxM2YwMDgsIDB4ODBjZTli
MCwgMHhmZmU1MmRjOCwgMHg0YzVmZjQsIDB4MmIsIDB4ODBiMmFjMCwgMHhmZmU1MmQ5OCwgMHg0
OTIwOWEsIDB4MmIsIDB4NGM1ZmY0LCAweDIxMjFjYiwgMHgyMTU3NmMsIDB4ODI5N2QzNCwgMHgz
NDk3YWYsIDB4MjE1NzZjLCAweDIxMzE2YSwgMHg4Mjk3ZDM0LCAweDgwYWM3YjAsIDB4MWUsIDB4
NDZlZWQ2LCAweDJiLCAweDAsIDB4ODBjZTliMCwgMHg0YzVmZjQsIDB4ODBhYzdiMCwgMHg4Mjk3
ZDM0LCAweGZmZTUyZGY4LCAweDQ2ZmI5Nn0sIG1jX2tpID0gezAsIDIwODksIDUxMTIwLCAyMDU4
LCAzMCwgMCwgMTY3OTYsIDE3LCAxMTc2MCwgNjU1MDksIDMsIDAsIDMyMDQwLCAyMDg5LCAzMCwg
MCwgMCwgMCwgMCwgMCwgMywgMCwgMjQ1NjQsIDc2LCA1MTEyMCwgMjA1OCwgMTA5NDQsIDIwNTks
IDExODAwLCA2NTUwOSwgNjQ3NTgsIDcwfX0gPC0tLS0tLS0tDQoJDQogICAgICAgIG14ID0ge214
X2N1cnNvciA9IHttY19uZXh0ID0gMHgzOCwgbWNfYmFja3VwID0gMHgzLCBtY194Y3Vyc29yID0g
MHgwLCBtY190eG4gPSAweDAsIG1jX2RiaSA9IDAsIG1jX2RiID0gMHgyOCwgbWNfZGJ4ID0gMHgw
LCBtY19kYmZsYWcgPSAweDAsIG1jX3NudW0gPSAzLCBtY190b3AgPSAwLCBtY19mbGFncyA9IDE3
LCBtY19wZyA9IHsweDNhOTNkOCwgMHgxMCwgMHgwLCAweDE4LCAweDNhOTNhMCwgMHgwLCAweDNh
OTNkMCwgMHgyODlhYmUsIDB4M2E5M2EwLCAweGZmZTUyZDNmLCAweGZmZTUyYzY4LCAweDI4YWZj
ZSwgMHhmZmU1MmRiYywgMHhmZmU1MmRiNCwgMHgzLCAweDRjNWZmNCwgMHgxMSwgMHgzNmM5OWIs
IDB4NmUsIDB4NzcsIDB4N2MsIDB4NWIsIDB4MzgsIDB4Mjg5YWJlLCAweDAsIDB4MCwgMHgwLCAw
eDI4LCAweDAsIDB4MCwgMHgzLCAweDEwfSwgbWNfa2kgPSB7Mzc4NDgsIDU4LCA1MTYxMSwgNTQs
IDExMCwgMCwgMTE5LCAwLCAxMjQsIDAsIDkxLCAwLCA1OCwgMCwgMzk2MTQsIDQwLCAwLCAwLCAw
LCAwLCAwLCAwLCAxNjAsIDAsIDAsIDAsIDIsIDAsIDE4LCAwLCAxMzYsIDB9fSwgbXhfZGIgPSB7
bWRfcGFkID0gMzgzODkzNiwgbWRfZmxhZ3MgPSA1MTYxMSwgbWRfZGVwdGggPSA1NCwgbWRfYnJh
bmNoX3BhZ2VzID0gMTEwLCBtZF9sZWFmX3BhZ2VzID0gMTE5LCBtZF9vdmVyZmxvd19wYWdlcyA9
IDEyNCwgbWRfZW50cmllcyA9IDkxLCBtZF9yb290ID0gNTZ9LCBteF9kYnggPSB7bWRfbmFtZSA9
IHttdl9zaXplID0gNiwgbXZfZGF0YSA9IDB4MH0sIG1kX2NtcCA9IDAsIG1kX2RjbXAgPSAwLCBt
ZF9yZWwgPSAweDQwLCBtZF9yZWxjdHggPSAweDB9LCBteF9kYmZsYWcgPSAwICdcMDAwJ30NCiAg
ICAgICAgcmMgPSAwIA0KDQpBbmQgc291cmNlIGNvZGUgZm9yIG1kYl9wdXQoKSBpcyBmcm9tIG1k
Yi5jDQoNCmludA0KbWRiX3B1dChNREJfdHhuICp0eG4sIE1EQl9kYmkgZGJpLA0KICAgIE1EQl92
YWwgKmtleSwgTURCX3ZhbCAqZGF0YSwgdW5zaWduZWQgaW50IGZsYWdzKQ0Kew0KCU1EQl9jdXJz
b3IgbWM7DQoJTURCX3hjdXJzb3IgbXg7DQoJaW50IHJjOw0KDQoJaWYgKCFrZXkgfHwgIWRhdGEg
fHwgIVRYTl9EQklfRVhJU1QodHhuLCBkYmksIERCX1VTUlZBTElEKSkNCgkJcmV0dXJuIEVJTlZB
TDsNCg0KCWlmIChmbGFncyAmIH4oTURCX05PT1ZFUldSSVRFfE1EQl9OT0RVUERBVEF8TURCX1JF
U0VSVkV8TURCX0FQUEVORHxNREJfQVBQRU5ERFVQKSkNCgkJcmV0dXJuIEVJTlZBTDsNCg0KCWlm
ICh0eG4tPm10X2ZsYWdzICYgKE1EQl9UWE5fUkRPTkxZfE1EQl9UWE5fQkxPQ0tFRCkpDQoJCXJl
dHVybiAodHhuLT5tdF9mbGFncyAmIE1EQl9UWE5fUkRPTkxZKSA/IEVBQ0NFUyA6IE1EQl9CQURf
VFhOOw0KDQoJbWRiX2N1cnNvcl9pbml0KCZtYywgdHhuLCBkYmksICZteCk7IDwtLS0tLS0tLSBz
ZWUgc291cmNlIGNvZGUgYmVsb3cNCgltYy5tY19uZXh0ID0gdHhuLT5tdF9jdXJzb3JzW2RiaV07
DQoJdHhuLT5tdF9jdXJzb3JzW2RiaV0gPSAmbWM7DQoJcmMgPSBtZGJfY3Vyc29yX3B1dCgmbWMs
IGtleSwgZGF0YSwgZmxhZ3MpOyA8LS0tLS0tLS0gc2VlIEZyYW1lICMwDQoJdHhuLT5tdF9jdXJz
b3JzW2RiaV0gPSBtYy5tY19uZXh0Ow0KCXJldHVybiByYzsNCn0NCg0KDQpTb3VyY2UgQ29kZSBG
b3IgbWRiX2N1cnNvcl9pbml0KCkgRnJvbSBtZGIuYw0KLyoqIEluaXRpYWxpemUgYSBjdXJzb3Ig
Zm9yIGEgZ2l2ZW4gdHJhbnNhY3Rpb24gYW5kIGRhdGFiYXNlLiAqLw0Kc3RhdGljIHZvaWQNCm1k
Yl9jdXJzb3JfaW5pdChNREJfY3Vyc29yICptYywgTURCX3R4biAqdHhuLCBNREJfZGJpIGRiaSwg
TURCX3hjdXJzb3IgKm14KQ0Kew0KCW1jLT5tY19uZXh0ID0gTlVMTDsNCgltYy0+bWNfYmFja3Vw
ID0gTlVMTDsNCgltYy0+bWNfZGJpID0gZGJpOw0KCW1jLT5tY190eG4gPSB0eG47DQoJbWMtPm1j
X2RiID0gJnR4bi0+bXRfZGJzW2RiaV07DQoJbWMtPm1jX2RieCA9ICZ0eG4tPm10X2RieHNbZGJp
XTsNCgltYy0+bWNfZGJmbGFnID0gJnR4bi0+bXRfZGJmbGFnc1tkYmldOw0KCW1jLT5tY19zbnVt
ID0gMDsgPC0tLS0tLS0tIA0KCW1jLT5tY190b3AgPSAwOyA8LS0tLS0tLS0gIA0KCW1jLT5tY19w
Z1swXSA9IDA7IDwtLS0tLS0tLSANCgltYy0+bWNfa2lbMF0gPSAwOw0KCW1jLT5tY19mbGFncyA9
IDA7DQoJaWYgKHR4bi0+bXRfZGJzW2RiaV0ubWRfZmxhZ3MgJiBNREJfRFVQU09SVCkgew0KCQlt
ZGJfdGFzc2VydCh0eG4sIG14ICE9IE5VTEwpOw0KCQltYy0+bWNfeGN1cnNvciA9IG14Ow0KCQlt
ZGJfeGN1cnNvcl9pbml0MChtYyk7DQoJfSBlbHNlIHsNCgkJbWMtPm1jX3hjdXJzb3IgPSBOVUxM
Ow0KCX0NCglpZiAoKm1jLT5tY19kYmZsYWcgJiBEQl9TVEFMRSkgeyA8LS0tLS0tLS0gZmFsc2Ug
Km1jLT5tY19kYmZsYWcgPSAyNywgREJfU1RBTEUgPSAweDAyCQkvKio8IE5hbWVkLURCIHJlY29y
ZCBpcyBvbGRlciB0aGFuIHR4bklEICovDQoJCW1kYl9wYWdlX3NlYXJjaChtYywgTlVMTCwgTURC
X1BTX1JPT1RPTkxZKTsgDQoJfQ0KfQ0KDQpGcm9tIHRoaXMgd2Uga25vdyB0aGF0IHdoZW4gbWRi
X2N1cnNvcl9wdXQoKSBpcyBjYWxsZWQsIHRoZSBmb2xsb3dpbmcgdmFsdWVzIHJlbWFpbiBhc3Np
Z25lZDoNCg0KICAgICAgICAgICAgICBtYy0+bWNfc251bSA9IDA7IDwtLS0tLS0tLQ0KCW1jLT5t
Y190b3AgPSAwOyA8LS0tLS0tLS0gIA0KCW1jLT5tY19wZ1swXSA9IDA7IDwtLS0tLS0tLSANCg0K
YW5kIGl0cyBub3RlZCB0aGVzZSB0d28gdmFsdWVzIHN0aWxsIGhhdmUgdGhlaXIgaW5pdGlhbCB2
YWx1ZXMgYXQgdGhlIHRpbWUgb2YgdGhlIHNlZ21lbnRhdGlvbiBmYXVsdC4NCg0KKGdkYikgZnIg
MA0KIzAgMHgwMDExYjYyZSBpbiBtZGJfY3Vyc29yX3B1dCAobWM9MHhmZmU1MmQxOCwga2V5PTB4
ZmZlNTJlNzQsIGRhdGE9MHhmZmU1MmU2YywgZmxhZ3M9MCkgYXQgbWRiLmM6NjY4OA0KNjY4OCBp
biBtZGIuYw0KKGdkYikgcCBtYy0+bWNfdG9wDQokMSA9IDANCihnZGIpIHAgbWMtPm1jX3BnW21j
LT5tY190b3BdDQokMTkgPSAoTURCX3BhZ2UgKikgMHgwDQoNCkxldCB1cyBjb25zaWRlciBob3cg
dGhlIHBhdGggdGFrZW4gdGhyb3VnaCBtZGJfY3Vyc29yX3B1dCgpIGNvdWxkIGFjY291bnQgZm9y
IHRoZXNlIG51bGwgdmFyaWFibGUgdmFsdWVzIHdoaWNoIHJlc3VsdCBpbiBhIHNlZ21lbnRhdGlv
biBmYXVsdC4NCg0KRnJhbWUgIzANCg0KIzAgIDB4MDAxMWI2MmUgaW4gbWRiX2N1cnNvcl9wdXQg
KG1jPTB4ZmZlNTJkMTgsIGtleT0weGZmZTUyZTc0LCBkYXRhPTB4ZmZlNTJlNmMsIGZsYWdzPTAp
IGF0IG1kYi5jOjY2ODggPC0tLS0tLS0tIGZsYWdzID0gMA0KICAgICAgICBlbnYgPSAweDgwY2U5
YjANCiAgICAgICAgbGVhZiA9IDx2YWx1ZSBvcHRpbWl6ZWQgb3V0Pg0KICAgICAgICBmcCA9IDx2
YWx1ZSBvcHRpbWl6ZWQgb3V0Pg0KICAgICAgICBtcCA9IDB4MzgNCiAgICAgICAgc3ViX3Jvb3Qg
PSAweDAgDQogICAgICAgIGZwX2ZsYWdzID0gPHZhbHVlIG9wdGltaXplZCBvdXQ+DQogICAgICAg
IHhkYXRhID0ge212X3NpemUgPSAzODM4ODgwLCBtdl9kYXRhID0gMHhkYzFjZjA5YX0NCiAgICAg
ICAgcmRhdGEgPSAweGZmZTUyZTZjDQogICAgICAgIGRrZXkgPSB7bXZfc2l6ZSA9IDAsIG12X2Rh
dGEgPSAweDNhOTNjY30NCiAgICAgICAgb2xkZGF0YSA9IHttdl9zaXplID0gMjIsIG12X2RhdGEg
PSAweDM2YzgyMH0NCiAgICAgICAgZHVtbXkgPSB7bWRfcGFkID0gMjIsIG1kX2ZsYWdzID0gMTEx
MjgsIG1kX2RlcHRoID0gNjU1MDksIG1kX2JyYW5jaF9wYWdlcyA9IDE2LCBtZF9sZWFmX3BhZ2Vz
ID0gMTUwNzMyOSwgbWRfb3ZlcmZsb3dfcGFnZXMgPSAwLCBtZF9lbnRyaWVzID0gMzgzODkyOCwg
bWRfcm9vdCA9IDM4MzM4NDR9DQogICAgICAgIGRvX3N1YiA9IDANCiAgICAgICAgaW5zZXJ0X2tl
eSA9IC0zMDc5OCA8LS0tLS0tLS0gI2RlZmluZSBNREJfTk9URk9VTkQJKC0zMDc5OCkNCiAgICAg
ICAgaW5zZXJ0X2RhdGEgPSAtMzA3OTggPC0tLS0tLS0tICNkZWZpbmUgTURCX05PVEZPVU5ECSgt
MzA3OTgpDQogICAgICAgIG1jb3VudCA9IDANCiAgICAgICAgZGNvdW50ID0gMA0KICAgICAgICBu
b3NwaWxsID0gMCA8LS0tLS0tLS0NCiAgICAgICAgbnNpemUgPSA8dmFsdWUgb3B0aW1pemVkIG91
dD4NCiAgICAgICAgcmMgPSAwIA0KICAgICAgICByYzIgPSA8dmFsdWUgb3B0aW1pemVkIG91dD4N
CiAgICAgICAgbmZsYWdzID0gMCA8LS0tLS0tLS0NCiAgICAgICAgX19mdW5jX18gPSAibWRiX2N1
cnNvcl9wdXQiCQ0KDQpXZSBrbm93IHRoYXQgbWMtPm1jX3RvcCBhbmQgbWMtPm1jX3BnWzBdIHdl
cmUgaW5pdGlhbGl6ZWQgdG8gMCBpbiBtZGJfY3Vyc29yX2luaXQoKS4gQXMgbXkgYW5ub3RhdGlv
bnMgb2YgdGhlIHNvdXJjZSBjb2RlIGJlbG93IHN1Z2dlc3QsIGNhcmVmdWwgYW5hbHlzaXMgcmV2
ZWFscyB0aGF0IHRoZSBwYXRocyBhY3R1YWxseSB0YWtlbiB0aHJvdWdoIG1kYl9jdXJzb3JfcHV0
KCkgZG8gbm90IG1vZGlmeSB0aGVzZSBhc3NpZ25tZW50cy4NCg0KRXhjZXJwdGVkIFNvdXJjZSBD
b2RlIEZvciBtZGJfY3Vyc29yX3B1dCgpIEZyb20gbWRiLmMNCg0KaW50DQptZGJfY3Vyc29yX3B1
dChNREJfY3Vyc29yICptYywgTURCX3ZhbCAqa2V5LCBNREJfdmFsICpkYXRhLA0KICAgIHVuc2ln
bmVkIGludCBmbGFncykNCnsNCglNREJfZW52CQkqZW52Ow0KCU1EQl9ub2RlCSpsZWFmID0gTlVM
TDsNCglNREJfcGFnZQkqZnAsICptcCwgKnN1Yl9yb290ID0gTlVMTDsNCgl1aW50MTZfdAlmcF9m
bGFnczsNCglNREJfdmFsCQl4ZGF0YSwgKnJkYXRhLCBka2V5LCBvbGRkYXRhOw0KCU1EQl9kYiBk
dW1teTsNCglpbnQgZG9fc3ViID0gMCwgaW5zZXJ0X2tleSwgaW5zZXJ0X2RhdGE7DQoJdW5zaWdu
ZWQgaW50IG1jb3VudCA9IDAsIGRjb3VudCA9IDAsIG5vc3BpbGw7DQoJc2l6ZV90IG5zaXplOw0K
CWludCByYywgcmMyOw0KCXVuc2lnbmVkIGludCBuZmxhZ3M7DQoJREtCVUY7DQoNCglpZiAobWMg
PT0gTlVMTCB8fCBrZXkgPT0gTlVMTCkNCgkJcmV0dXJuIEVJTlZBTDsNCg0KCWVudiA9IG1jLT5t
Y190eG4tPm10X2VudjsNCg0KCS8qIENoZWNrIHRoaXMgZmlyc3Qgc28gY291bnRlciB3aWxsIGFs
d2F5cyBiZSB6ZXJvIG9uIGFueQ0KCSAqIGVhcmx5IGZhaWx1cmVzLg0KCSAqLw0KCWlmIChmbGFn
cyAmIE1EQl9NVUxUSVBMRSkgew0KCQlkY291bnQgPSBkYXRhWzFdLm12X3NpemU7DQoJCWRhdGFb
MV0ubXZfc2l6ZSA9IDA7DQoJCWlmICghRl9JU1NFVChtYy0+bWNfZGItPm1kX2ZsYWdzLCBNREJf
RFVQRklYRUQpKQ0KCQkJcmV0dXJuIE1EQl9JTkNPTVBBVElCTEU7DQoJfQ0KDQoJbm9zcGlsbCA9
IGZsYWdzICYgTURCX05PU1BJTEw7DQoJZmxhZ3MgJj0gfk1EQl9OT1NQSUxMOw0KDQoJaWYgKG1j
LT5tY190eG4tPm10X2ZsYWdzICYgKE1EQl9UWE5fUkRPTkxZfE1EQl9UWE5fQkxPQ0tFRCkpDQoJ
CXJldHVybiAobWMtPm1jX3R4bi0+bXRfZmxhZ3MgJiBNREJfVFhOX1JET05MWSkgPyBFQUNDRVMg
OiBNREJfQkFEX1RYTjsNCg0KCWlmIChrZXktPm12X3NpemUtMSA+PSBFTlZfTUFYS0VZKGVudikp
DQoJCXJldHVybiBNREJfQkFEX1ZBTFNJWkU7DQoNCiNpZiBTSVpFX01BWCA+IE1BWERBVEFTSVpF
DQoJaWYgKGRhdGEtPm12X3NpemUgPiAoKG1jLT5tY19kYi0+bWRfZmxhZ3MgJiBNREJfRFVQU09S
VCkgPyBFTlZfTUFYS0VZKGVudikgOiBNQVhEQVRBU0laRSkpDQoJCXJldHVybiBNREJfQkFEX1ZB
TFNJWkU7DQojZWxzZQ0KCWlmICgobWMtPm1jX2RiLT5tZF9mbGFncyAmIE1EQl9EVVBTT1JUKSAm
JiBkYXRhLT5tdl9zaXplID4gRU5WX01BWEtFWShlbnYpKQ0KCQlyZXR1cm4gTURCX0JBRF9WQUxT
SVpFOw0KI2VuZGlmDQoNCglEUFJJTlRGKCgiPT0+IHB1dCBkYiAlZCBrZXkgWyVzXSwgc2l6ZSAl
IloidSwgZGF0YSBzaXplICUiWiJ1IiwNCgkJRERCSShtYyksIERLRVkoa2V5KSwga2V5ID8ga2V5
LT5tdl9zaXplIDogMCwgZGF0YS0+bXZfc2l6ZSkpOw0KDQoJZGtleS5tdl9zaXplID0gMDsNCg0K
CWlmIChmbGFncyA9PSBNREJfQ1VSUkVOVCkgeyA8LS0tLS0tLS0gZmFsc2UgZmxhZ3MgPSAwDQoJ
CWlmICghKG1jLT5tY19mbGFncyAmIENfSU5JVElBTElaRUQpKQ0KCQkJcmV0dXJuIEVJTlZBTDsN
CgkJcmMgPSBNREJfU1VDQ0VTUzsNCgl9IGVsc2UgaWYgKG1jLT5tY19kYi0+bWRfcm9vdCA9PSBQ
X0lOVkFMSUQpIHsgPC0tLS0tLS0tIGZhbHNlLCBtYy0+bWNfZGItPm1kX3Jvb3QgPSA2OA0KCQkv
KiBuZXcgZGF0YWJhc2UsIGN1cnNvciBoYXMgbm90aGluZyB0byBwb2ludCB0byAqLw0KCQltYy0+
bWNfc251bSA9IDA7DQoJCW1jLT5tY190b3AgPSAwOw0KCQltYy0+bWNfZmxhZ3MgJj0gfkNfSU5J
VElBTElaRUQ7DQoJCXJjID0gTURCX05PX1JPT1Q7ICANCgl9IGVsc2UgeyA8LS0tLS0tLS0gZXhl
Y3V0ZWQNCgkJaW50IGV4YWN0ID0gMDsNCgkJTURCX3ZhbCBkMjsNCgkJaWYgKGZsYWdzICYgTURC
X0FQUEVORCkgeyA8LS0tLS0tLS0gZmFsc2UgZmxhZ3MgPSAwDQoJCQlNREJfdmFsIGsyOw0KCQkJ
cmMgPSBtZGJfY3Vyc29yX2xhc3QobWMsICZrMiwgJmQyKTsNCgkJCWlmIChyYyA9PSAwKSB7DQoJ
CQkJcmMgPSBtYy0+bWNfZGJ4LT5tZF9jbXAoa2V5LCAmazIpOw0KCQkJCWlmIChyYyA+IDApIHsN
CgkJCQkJcmMgPSBNREJfTk9URk9VTkQ7DQoJCQkJCW1jLT5tY19raVttYy0+bWNfdG9wXSsrOw0K
CQkJCX0gZWxzZSB7DQoJCQkJCS8qIG5ldyBrZXkgaXMgPD0gbGFzdCBrZXkgKi8NCgkJCQkJcmMg
PSBNREJfS0VZRVhJU1Q7DQoJCQkJfQ0KCQkJfQ0KCQl9IGVsc2UgezwtLS0tLS0tLSBleGVjdXRl
ZA0KCQkJcmMgPSBtZGJfY3Vyc29yX3NldChtYywga2V5LCAmZDIsIE1EQl9TRVQsICZleGFjdCk7
IDwtLS0tLS0tLSByZXR1cm5zIC0zMDc5OCB3aGljaCBpcyBNREJfTk9URk9VTkQNCgkJfTwtLS0t
LS0tLSBleGVjdXRlZA0KCQlpZiAoKGZsYWdzICYgTURCX05PT1ZFUldSSVRFKSAmJiByYyA9PSAw
KSB7IDwtLS0tLS0tLSBmYWxzZSBmbGFncyA9IDANCgkJCURQUklOVEYoKCJkdXBsaWNhdGUga2V5
IFslc10iLCBES0VZKGtleSkpKTsNCgkJCSpkYXRhID0gZDI7DQoJCQlyZXR1cm4gTURCX0tFWUVY
SVNUOw0KCQl9DQoJCWlmIChyYyAmJiByYyAhPSBNREJfTk9URk9VTkQpIDwtLS0tLS0tLSBmYWxz
ZSByYyA9IE1EQl9OT1RGT1VORA0KCQkJcmV0dXJuIHJjOw0KCX08LS0tLS0tLS0gZXhlY3V0ZWQN
Cg0KCWlmIChtYy0+bWNfZmxhZ3MgJiBDX0RFTCkNCgkJbWMtPm1jX2ZsYWdzIF49IENfREVMOw0K
DQoJLyogQ3Vyc29yIGlzIHBvc2l0aW9uZWQsIGNoZWNrIGZvciByb29tIGluIHRoZSBkaXJ0eSBs
aXN0ICovDQoJaWYgKCFub3NwaWxsKSB7IDwtLS0tLS0tLSB0cnVlDQoJCWlmIChmbGFncyAmIE1E
Ql9NVUxUSVBMRSkgew0KCQkJcmRhdGEgPSAmeGRhdGE7DQoJCQl4ZGF0YS5tdl9zaXplID0gZGF0
YS0+bXZfc2l6ZSAqIGRjb3VudDsNCgkJfSBlbHNlIHsNCgkJCXJkYXRhID0gZGF0YTsgPC0tLS0t
LS0tIGV4ZWN1dGVkDQoJCX0NCgkJaWYgKChyYzIgPSBtZGJfcGFnZV9zcGlsbChtYywga2V5LCBy
ZGF0YSkpKSA8LS0tLS0tLS0gcmV0dXJuZWQgMCBvciB3b3VsZCBoYXZlIHJldHVybmVkDQoJCQly
ZXR1cm4gcmMyOw0KCX08LS0tLS0tLS0gZXhlY3V0ZWQNCg0KCWlmIChyYyA9PSBNREJfTk9fUk9P
VCkgeyA8LS0tLS0tLS0gZmFsc2UgDQoJCU1EQl9wYWdlICpucDsNCgkJLyogbmV3IGRhdGFiYXNl
LCB3cml0ZSBhIHJvb3QgbGVhZiBwYWdlICovDQoJCURQVVRTKCJhbGxvY2F0aW5nIG5ldyByb290
IGxlYWYgcGFnZSIpOw0KCQlpZiAoKHJjMiA9IG1kYl9wYWdlX25ldyhtYywgUF9MRUFGLCAxLCAm
bnApKSkgew0KCQkJcmV0dXJuIHJjMjsNCgkJfQ0KCQltZGJfY3Vyc29yX3B1c2gobWMsIG5wKTsN
CgkJbWMtPm1jX2RiLT5tZF9yb290ID0gbnAtPm1wX3Bnbm87DQoJCW1jLT5tY19kYi0+bWRfZGVw
dGgrKzsNCgkJKm1jLT5tY19kYmZsYWcgfD0gREJfRElSVFk7DQoJCWlmICgobWMtPm1jX2RiLT5t
ZF9mbGFncyAmIChNREJfRFVQU09SVHxNREJfRFVQRklYRUQpKQ0KCQkJPT0gTURCX0RVUEZJWEVE
KQ0KCQkJbnAtPm1wX2ZsYWdzIHw9IFBfTEVBRjI7DQoJCW1jLT5tY19mbGFncyB8PSBDX0lOSVRJ
QUxJWkVEOw0KCX0gZWxzZSB7DQoJCS8qIG1ha2Ugc3VyZSBhbGwgY3Vyc29yIHBhZ2VzIGFyZSB3
cml0YWJsZSAqLw0KCQlyYzIgPSBtZGJfY3Vyc29yX3RvdWNoKG1jKTsgPC0tLS0tLS0tIGlzIHRo
aXMgY2FsbGVkIGFuZCByZXR1cm5zIDAgYmVjYXVzZSBpdCBkb2VzIG5vdCByZXR1cm4NCgkJaWYg
KHJjMikNCgkJCXJldHVybiByYzI7DQoJfSA8LS0tLS0tLS0gZXhlY3V0ZWQNCg0KCWluc2VydF9r
ZXkgPSBpbnNlcnRfZGF0YSA9IHJjOyA8LS0tLS0tLS0gcmMgPSAtMzA3OTggb3IgTURCX05PVEZP
VU5EIQ0KCWlmIChpbnNlcnRfa2V5KSB7IDwtLS0tLS0tLSB0cnVlDQoJCS8qIFRoZSBrZXkgZG9l
cyBub3QgZXhpc3QgKi8NCgkJRFBSSU5URigoImluc2VydGluZyBrZXkgYXQgaW5kZXggJWkiLCBt
Yy0+bWNfa2lbbWMtPm1jX3RvcF0pKTsNCgkJaWYgKChtYy0+bWNfZGItPm1kX2ZsYWdzICYgTURC
X0RVUFNPUlQpICYmDQoJCQlMRUFGU0laRShrZXksIGRhdGEpID4gZW52LT5tZV9ub2RlbWF4KSA8
LS0tLS0tLS0gZmFsc2Ugc2luY2UgbWMtPm1jX2RiLT5tZF9mbGFncyA9IDANCgkJew0KCQkJLyog
VG9vIGJpZyBmb3IgYSBub2RlLCBpbnNlcnQgaW4gc3ViLURCLiAgU2V0IHVwIGFuIGVtcHR5DQoJ
CQkgKiAib2xkIHN1Yi1wYWdlIiBmb3IgcHJlcF9zdWJEQiB0byBleHBhbmQgdG8gYSBmdWxsIHBh
Z2UuDQoJCQkgKi8NCgkJCWZwX2ZsYWdzID0gUF9MRUFGfFBfRElSVFk7DQoJCQlmcCA9IGVudi0+
bWVfcGJ1ZjsNCgkJCWZwLT5tcF9wYWQgPSBkYXRhLT5tdl9zaXplOyAvKiB1c2VkIGlmIE1EQl9E
VVBGSVhFRCAqLw0KCQkJZnAtPm1wX2xvd2VyID0gZnAtPm1wX3VwcGVyID0gKFBBR0VIRFJTWi1Q
QUdFQkFTRSk7DQoJCQlvbGRkYXRhLm12X3NpemUgPSBQQUdFSERSU1o7DQoJCQlnb3RvIHByZXBf
c3ViREI7DQoJCX0gPC0tLS0tLS0tIHRoaXMgd2FzIG5vdCBleGVjdXRlZCwgYW5kIHRoZSB2ZXJ5
IGxvbmcgZXh0ZXJuYWwgZWxzZSBjb250aW5nZW5jeSBiZWxvdyBzaG91bGQgYmUgc2tpcHBlZCEN
Cgl9IGVsc2Ugew0KCQkvKiB0aGVyZSdzIG9ubHkgYSBrZXkgYW55d2F5LCBzbyB0aGlzIGlzIGEg
bm8tb3AgKi8NCgkJaWYgKElTX0xFQUYyKG1jLT5tY19wZ1ttYy0+bWNfdG9wXSkpIHsNCgkJCWNo
YXIgKnB0cjsNCgkJCXVuc2lnbmVkIGludCBrc2l6ZSA9IG1jLT5tY19kYi0+bWRfcGFkOw0KCQkJ
aWYgKGtleS0+bXZfc2l6ZSAhPSBrc2l6ZSkNCgkJCQlyZXR1cm4gTURCX0JBRF9WQUxTSVpFOw0K
CQkJcHRyID0gTEVBRjJLRVkobWMtPm1jX3BnW21jLT5tY190b3BdLCBtYy0+bWNfa2lbbWMtPm1j
X3RvcF0sIGtzaXplKTsNCgkJCW1lbWNweShwdHIsIGtleS0+bXZfZGF0YSwga3NpemUpOw0KZml4
X3BhcmVudDoNCgkJCS8qIGlmIG92ZXJ3cml0aW5nIHNsb3QgMCBvZiBsZWFmLCBuZWVkIHRvDQoJ
CQkgKiB1cGRhdGUgYnJhbmNoIGtleSBpZiB0aGVyZSBpcyBhIHBhcmVudCBwYWdlDQoJCQkgKi8N
CgkJCWlmIChtYy0+bWNfdG9wICYmICFtYy0+bWNfa2lbbWMtPm1jX3RvcF0pIHsNCgkJCQl1bnNp
Z25lZCBzaG9ydCBkdG9wID0gMTsNCgkJCQltYy0+bWNfdG9wLS07DQoJCQkJLyogc2xvdCAwIGlz
IGFsd2F5cyBhbiBlbXB0eSBrZXksIGZpbmQgcmVhbCBzbG90ICovDQoJCQkJd2hpbGUgKG1jLT5t
Y190b3AgJiYgIW1jLT5tY19raVttYy0+bWNfdG9wXSkgew0KCQkJCQltYy0+bWNfdG9wLS07DQoJ
CQkJCWR0b3ArKzsNCgkJCQl9DQoJCQkJaWYgKG1jLT5tY19raVttYy0+bWNfdG9wXSkNCgkJCQkJ
cmMyID0gbWRiX3VwZGF0ZV9rZXkobWMsIGtleSk7DQoJCQkJZWxzZQ0KCQkJCQlyYzIgPSBNREJf
U1VDQ0VTUzsNCgkJCQltYy0+bWNfdG9wICs9IGR0b3A7DQoJCQkJaWYgKHJjMikNCgkJCQkJcmV0
dXJuIHJjMjsNCgkJCX0NCgkJCXJldHVybiBNREJfU1VDQ0VTUzsNCgkJfQ0KDQptb3JlOg0KCQls
ZWFmID0gTk9ERVBUUihtYy0+bWNfcGdbbWMtPm1jX3RvcF0sIG1jLT5tY19raVttYy0+bWNfdG9w
XSk7DQoJCW9sZGRhdGEubXZfc2l6ZSA9IE5PREVEU1oobGVhZik7DQoJCW9sZGRhdGEubXZfZGF0
YSA9IE5PREVEQVRBKGxlYWYpOw0KDQoJCS8qIERCIGhhcyBkdXBzPyAqLw0KCQlpZiAoRl9JU1NF
VChtYy0+bWNfZGItPm1kX2ZsYWdzLCBNREJfRFVQU09SVCkpIHsgDQoJCQkvKiBQcmVwYXJlIChz
dWItKXBhZ2Uvc3ViLURCIHRvIGFjY2VwdCB0aGUgbmV3IGl0ZW0sDQoJCQkgKiBpZiBuZWVkZWQu
ICBmcDogb2xkIHN1Yi1wYWdlIG9yIGEgaGVhZGVyIGZha2luZw0KCQkJICogaXQuICBtcDogbmV3
IChzdWItKXBhZ2UuICBvZmZzZXQ6IGdyb3d0aCBpbiBwYWdlDQoJCQkgKiBzaXplLiAgeGRhdGE6
IG5vZGUgZGF0YSB3aXRoIG5ldyBwYWdlIG9yIERCLg0KCQkJICovDQoJCQl1bnNpZ25lZAlpLCBv
ZmZzZXQgPSAwOw0KCQkJbXAgPSBmcCA9IHhkYXRhLm12X2RhdGEgPSBlbnYtPm1lX3BidWY7DQoJ
CQltcC0+bXBfcGdubyA9IG1jLT5tY19wZ1ttYy0+bWNfdG9wXS0+bXBfcGdubzsNCg0KCQkJLyog
V2FzIGEgc2luZ2xlIGl0ZW0gYmVmb3JlLCBtdXN0IGNvbnZlcnQgbm93ICovDQoJCQlpZiAoIUZf
SVNTRVQobGVhZi0+bW5fZmxhZ3MsIEZfRFVQREFUQSkpIHsNCgkJCQlNREJfY21wX2Z1bmMgKmRj
bXA7DQoJCQkJLyogSnVzdCBvdmVyd3JpdGUgdGhlIGN1cnJlbnQgaXRlbSAqLw0KCQkJCWlmIChm
bGFncyA9PSBNREJfQ1VSUkVOVCkNCgkJCQkJZ290byBjdXJyZW50Ow0KCQkJCWRjbXAgPSBtYy0+
bWNfZGJ4LT5tZF9kY21wOw0KI2lmIFVJTlRfTUFYIDwgU0laRV9NQVgNCgkJCQlpZiAoZGNtcCA9
PSBtZGJfY21wX2ludCAmJiBvbGRkYXRhLm12X3NpemUgPT0gc2l6ZW9mKHNpemVfdCkpDQoJCQkJ
CWRjbXAgPSBtZGJfY21wX2Nsb25nOw0KI2VuZGlmDQoJCQkJLyogZG9lcyBkYXRhIG1hdGNoPyAq
Lw0KCQkJCWlmICghZGNtcChkYXRhLCAmb2xkZGF0YSkpIHsNCgkJCQkJaWYgKGZsYWdzICYgKE1E
Ql9OT0RVUERBVEF8TURCX0FQUEVORERVUCkpDQoJCQkJCQlyZXR1cm4gTURCX0tFWUVYSVNUOw0K
CQkJCQkvKiBvdmVyd3JpdGUgaXQgKi8NCgkJCQkJZ290byBjdXJyZW50Ow0KCQkJCX0NCg0KCQkJ
CS8qIEJhY2sgdXAgb3JpZ2luYWwgZGF0YSBpdGVtICovDQoJCQkJZGtleS5tdl9zaXplID0gb2xk
ZGF0YS5tdl9zaXplOw0KCQkJCWRrZXkubXZfZGF0YSA9IG1lbWNweShmcCsxLCBvbGRkYXRhLm12
X2RhdGEsIG9sZGRhdGEubXZfc2l6ZSk7DQoNCgkJCQkvKiBNYWtlIHN1Yi1wYWdlIGhlYWRlciBm
b3IgdGhlIGR1cCBpdGVtcywgd2l0aCBkdW1teSBib2R5ICovDQoJCQkJZnAtPm1wX2ZsYWdzID0g
UF9MRUFGfFBfRElSVFl8UF9TVUJQOw0KCQkJCWZwLT5tcF9sb3dlciA9IChQQUdFSERSU1otUEFH
RUJBU0UpOw0KCQkJCXhkYXRhLm12X3NpemUgPSBQQUdFSERSU1ogKyBka2V5Lm12X3NpemUgKyBk
YXRhLT5tdl9zaXplOw0KCQkJCWlmIChtYy0+bWNfZGItPm1kX2ZsYWdzICYgTURCX0RVUEZJWEVE
KSB7DQoJCQkJCWZwLT5tcF9mbGFncyB8PSBQX0xFQUYyOw0KCQkJCQlmcC0+bXBfcGFkID0gZGF0
YS0+bXZfc2l6ZTsNCgkJCQkJeGRhdGEubXZfc2l6ZSArPSAyICogZGF0YS0+bXZfc2l6ZTsJLyog
bGVhdmUgc3BhY2UgZm9yIDIgbW9yZSAqLw0KCQkJCX0gZWxzZSB7DQoJCQkJCXhkYXRhLm12X3Np
emUgKz0gMiAqIChzaXplb2YoaW5keF90KSArIE5PREVTSVpFKSArDQoJCQkJCQkoZGtleS5tdl9z
aXplICYgMSkgKyAoZGF0YS0+bXZfc2l6ZSAmIDEpOw0KCQkJCX0NCgkJCQlmcC0+bXBfdXBwZXIg
PSB4ZGF0YS5tdl9zaXplIC0gUEFHRUJBU0U7DQoJCQkJb2xkZGF0YS5tdl9zaXplID0geGRhdGEu
bXZfc2l6ZTsgLyogcHJldGVuZCBvbGRkYXRhIGlzIGZwICovDQoJCQl9IGVsc2UgaWYgKGxlYWYt
Pm1uX2ZsYWdzICYgRl9TVUJEQVRBKSB7DQoJCQkJLyogRGF0YSBpcyBvbiBzdWItREIsIGp1c3Qg
c3RvcmUgaXQgKi8NCgkJCQlmbGFncyB8PSBGX0RVUERBVEF8Rl9TVUJEQVRBOw0KCQkJCWdvdG8g
cHV0X3N1YjsNCgkJCX0gZWxzZSB7DQoJCQkJLyogRGF0YSBpcyBvbiBzdWItcGFnZSAqLw0KCQkJ
CWZwID0gb2xkZGF0YS5tdl9kYXRhOw0KCQkJCXN3aXRjaCAoZmxhZ3MpIHsNCgkJCQlkZWZhdWx0
Og0KCQkJCQlpZiAoIShtYy0+bWNfZGItPm1kX2ZsYWdzICYgTURCX0RVUEZJWEVEKSkgew0KCQkJ
CQkJb2Zmc2V0ID0gRVZFTihOT0RFU0laRSArIHNpemVvZihpbmR4X3QpICsNCgkJCQkJCQlkYXRh
LT5tdl9zaXplKTsNCgkJCQkJCWJyZWFrOw0KCQkJCQl9DQoJCQkJCW9mZnNldCA9IGZwLT5tcF9w
YWQ7DQoJCQkJCWlmIChTSVpFTEVGVChmcCkgPCBvZmZzZXQpIHsNCgkJCQkJCW9mZnNldCAqPSA0
OyAvKiBzcGFjZSBmb3IgNCBtb3JlICovDQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCQkvKiBG
QUxMVEhSVTogQmlnIGVub3VnaCBNREJfRFVQRklYRUQgc3ViLXBhZ2UgKi8NCgkJCQljYXNlIE1E
Ql9DVVJSRU5UOg0KCQkJCQlmcC0+bXBfZmxhZ3MgfD0gUF9ESVJUWTsNCgkJCQkJQ09QWV9QR05P
KGZwLT5tcF9wZ25vLCBtcC0+bXBfcGdubyk7DQoJCQkJCW1jLT5tY194Y3Vyc29yLT5teF9jdXJz
b3IubWNfcGdbMF0gPSBmcDsNCgkJCQkJZmxhZ3MgfD0gRl9EVVBEQVRBOw0KCQkJCQlnb3RvIHB1
dF9zdWI7DQoJCQkJfQ0KCQkJCXhkYXRhLm12X3NpemUgPSBvbGRkYXRhLm12X3NpemUgKyBvZmZz
ZXQ7DQoJCQl9DQoNCgkJCWZwX2ZsYWdzID0gZnAtPm1wX2ZsYWdzOw0KCQkJaWYgKE5PREVTSVpF
ICsgTk9ERUtTWihsZWFmKSArIHhkYXRhLm12X3NpemUgPiBlbnYtPm1lX25vZGVtYXgpIHsNCgkJ
CQkJLyogVG9vIGJpZyBmb3IgYSBzdWItcGFnZSwgY29udmVydCB0byBzdWItREIgKi8NCgkJCQkJ
ZnBfZmxhZ3MgJj0gflBfU1VCUDsNCnByZXBfc3ViREI6DQoJCQkJCWlmIChtYy0+bWNfZGItPm1k
X2ZsYWdzICYgTURCX0RVUEZJWEVEKSB7DQoJCQkJCQlmcF9mbGFncyB8PSBQX0xFQUYyOw0KCQkJ
CQkJZHVtbXkubWRfcGFkID0gZnAtPm1wX3BhZDsNCgkJCQkJCWR1bW15Lm1kX2ZsYWdzID0gTURC
X0RVUEZJWEVEOw0KCQkJCQkJaWYgKG1jLT5tY19kYi0+bWRfZmxhZ3MgJiBNREJfSU5URUdFUkRV
UCkNCgkJCQkJCQlkdW1teS5tZF9mbGFncyB8PSBNREJfSU5URUdFUktFWTsNCgkJCQkJfSBlbHNl
IHsNCgkJCQkJCWR1bW15Lm1kX3BhZCA9IDA7DQoJCQkJCQlkdW1teS5tZF9mbGFncyA9IDA7DQoJ
CQkJCX0NCgkJCQkJZHVtbXkubWRfZGVwdGggPSAxOw0KCQkJCQlkdW1teS5tZF9icmFuY2hfcGFn
ZXMgPSAwOw0KCQkJCQlkdW1teS5tZF9sZWFmX3BhZ2VzID0gMTsNCgkJCQkJZHVtbXkubWRfb3Zl
cmZsb3dfcGFnZXMgPSAwOw0KCQkJCQlkdW1teS5tZF9lbnRyaWVzID0gTlVNS0VZUyhmcCk7DQoJ
CQkJCXhkYXRhLm12X3NpemUgPSBzaXplb2YoTURCX2RiKTsNCgkJCQkJeGRhdGEubXZfZGF0YSA9
ICZkdW1teTsNCgkJCQkJaWYgKChyYyA9IG1kYl9wYWdlX2FsbG9jKG1jLCAxLCAmbXApKSkNCgkJ
CQkJCXJldHVybiByYzsNCgkJCQkJb2Zmc2V0ID0gZW52LT5tZV9wc2l6ZSAtIG9sZGRhdGEubXZf
c2l6ZTsNCgkJCQkJZmxhZ3MgfD0gRl9EVVBEQVRBfEZfU1VCREFUQTsNCgkJCQkJZHVtbXkubWRf
cm9vdCA9IG1wLT5tcF9wZ25vOw0KCQkJCQlzdWJfcm9vdCA9IG1wOw0KCQkJfQ0KCQkJaWYgKG1w
ICE9IGZwKSB7DQoJCQkJbXAtPm1wX2ZsYWdzID0gZnBfZmxhZ3MgfCBQX0RJUlRZOw0KCQkJCW1w
LT5tcF9wYWQgICA9IGZwLT5tcF9wYWQ7DQoJCQkJbXAtPm1wX2xvd2VyID0gZnAtPm1wX2xvd2Vy
Ow0KCQkJCW1wLT5tcF91cHBlciA9IGZwLT5tcF91cHBlciArIG9mZnNldDsNCgkJCQlpZiAoZnBf
ZmxhZ3MgJiBQX0xFQUYyKSB7DQoJCQkJCW1lbWNweShNRVRBREFUQShtcCksIE1FVEFEQVRBKGZw
KSwgTlVNS0VZUyhmcCkgKiBmcC0+bXBfcGFkKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQltZW1jcHko
KGNoYXIgKiltcCArIG1wLT5tcF91cHBlciArIFBBR0VCQVNFLCAoY2hhciAqKWZwICsgZnAtPm1w
X3VwcGVyICsgUEFHRUJBU0UsDQoJCQkJCQlvbGRkYXRhLm12X3NpemUgLSBmcC0+bXBfdXBwZXIg
LSBQQUdFQkFTRSk7DQoJCQkJCWZvciAoaT0wOyBpPE5VTUtFWVMoZnApOyBpKyspDQoJCQkJCQlt
cC0+bXBfcHRyc1tpXSA9IGZwLT5tcF9wdHJzW2ldICsgb2Zmc2V0Ow0KCQkJCX0NCgkJCX0NCg0K
CQkJcmRhdGEgPSAmeGRhdGE7DQoJCQlmbGFncyB8PSBGX0RVUERBVEE7DQoJCQlkb19zdWIgPSAx
Ow0KCQkJaWYgKCFpbnNlcnRfa2V5KQ0KCQkJCW1kYl9ub2RlX2RlbChtYywgMCk7DQoJCQlnb3Rv
IG5ld19zdWI7DQoJCX0NCmN1cnJlbnQ6DQoJCS8qIExNREIgcGFzc2VzIEZfU1VCREFUQSBpbiAn
ZmxhZ3MnIHRvIHdyaXRlIGEgREIgcmVjb3JkICovDQoJCWlmICgobGVhZi0+bW5fZmxhZ3MgXiBm
bGFncykgJiBGX1NVQkRBVEEpDQoJCQlyZXR1cm4gTURCX0lOQ09NUEFUSUJMRTsNCgkJLyogb3Zl
cmZsb3cgcGFnZSBvdmVyd3JpdGVzIG5lZWQgc3BlY2lhbCBoYW5kbGluZyAqLw0KCQlpZiAoRl9J
U1NFVChsZWFmLT5tbl9mbGFncywgRl9CSUdEQVRBKSkgeyA8LS0tLS0tLS0gaXMgdGhpcyB0YWtl
bj8NCgkJCU1EQl9wYWdlICpvbXA7DQoJCQlwZ25vX3QgcGc7DQoJCQlpbnQgbGV2ZWwsIG92cGFn
ZXMsIGRwYWdlcyA9IE9WUEFHRVMoZGF0YS0+bXZfc2l6ZSwgZW52LT5tZV9wc2l6ZSk7DQoNCgkJ
CW1lbWNweSgmcGcsIG9sZGRhdGEubXZfZGF0YSwgc2l6ZW9mKHBnKSk7DQoJCQlpZiAoKHJjMiA9
IG1kYl9wYWdlX2dldChtYy0+bWNfdHhuLCBwZywgJm9tcCwgJmxldmVsKSkgIT0gMCkNCgkJCQly
ZXR1cm4gcmMyOw0KCQkJb3ZwYWdlcyA9IG9tcC0+bXBfcGFnZXM7DQoNCgkJCS8qIElzIHRoZSBv
diBwYWdlIGxhcmdlIGVub3VnaD8gKi8NCgkJCWlmIChvdnBhZ2VzID49IGRwYWdlcykgew0KCQkJ
ICBpZiAoIShvbXAtPm1wX2ZsYWdzICYgUF9ESVJUWSkgJiYNCgkJCQkgIChsZXZlbCB8fCAoZW52
LT5tZV9mbGFncyAmIE1EQl9XUklURU1BUCkpKQ0KCQkJICB7DQoJCQkJcmMgPSBtZGJfcGFnZV91
bnNwaWxsKG1jLT5tY190eG4sIG9tcCwgJm9tcCk7IDwtLS0tLS0tLSBpcyB0aGlzIHRha2VuPw0K
CQkJCWlmIChyYykNCgkJCQkJcmV0dXJuIHJjOw0KCQkJCWxldmVsID0gMDsJCS8qIGRpcnR5IGlu
IHRoaXMgdHhuIG9yIGNsZWFuICovDQoJCQkgIH0NCgkJCSAgLyogSXMgaXQgZGlydHk/ICovDQoJ
CQkgIGlmIChvbXAtPm1wX2ZsYWdzICYgUF9ESVJUWSkgew0KCQkJCS8qIHllcywgb3ZlcndyaXRl
IGl0LiBOb3RlIGluIHRoaXMgY2FzZSB3ZSBkb24ndA0KCQkJCSAqIGJvdGhlciB0byB0cnkgc2hy
aW5raW5nIHRoZSBwYWdlIGlmIHRoZSBuZXcgZGF0YQ0KCQkJCSAqIGlzIHNtYWxsZXIgdGhhbiB0
aGUgb3ZlcmZsb3cgdGhyZXNob2xkLg0KCQkJCSAqLw0KCQkJCWlmIChsZXZlbCA+IDEpIHsNCgkJ
CQkJLyogSXQgaXMgd3JpdGFibGUgb25seSBpbiBhIHBhcmVudCB0eG4gKi8NCgkJCQkJc2l6ZV90
IHN6ID0gKHNpemVfdCkgZW52LT5tZV9wc2l6ZSAqIG92cGFnZXMsIG9mZjsNCgkJCQkJTURCX3Bh
Z2UgKm5wID0gbWRiX3BhZ2VfbWFsbG9jKG1jLT5tY190eG4sIG92cGFnZXMpOw0KCQkJCQlNREJf
SUQyIGlkMjsNCgkJCQkJaWYgKCFucCkNCgkJCQkJCXJldHVybiBFTk9NRU07DQoJCQkJCWlkMi5t
aWQgPSBwZzsNCgkJCQkJaWQyLm1wdHIgPSBucDsNCgkJCQkJLyogTm90ZSAtIHRoaXMgcGFnZSBp
cyBhbHJlYWR5IGNvdW50ZWQgaW4gcGFyZW50J3MgZGlydHlfcm9vbSAqLw0KCQkJCQlyYzIgPSBt
ZGJfbWlkMmxfaW5zZXJ0KG1jLT5tY190eG4tPm10X3UuZGlydHlfbGlzdCwgJmlkMik7DQoJCQkJ
CW1kYl9jYXNzZXJ0KG1jLCByYzIgPT0gMCk7DQoJCQkJCWlmICghKGZsYWdzICYgTURCX1JFU0VS
VkUpKSB7DQoJCQkJCQkvKiBDb3B5IGVuZCBvZiBwYWdlLCBhZGp1c3RpbmcgYWxpZ25tZW50IHNv
DQoJCQkJCQkgKiBjb21waWxlciBtYXkgY29weSB3b3JkcyBpbnN0ZWFkIG9mIGJ5dGVzLg0KCQkJ
CQkJICovDQoJCQkJCQlvZmYgPSAoUEFHRUhEUlNaICsgZGF0YS0+bXZfc2l6ZSkgJiAtc2l6ZW9m
KHNpemVfdCk7DQoJCQkJCQltZW1jcHkoKHNpemVfdCAqKSgoY2hhciAqKW5wICsgb2ZmKSwNCgkJ
CQkJCQkoc2l6ZV90ICopKChjaGFyICopb21wICsgb2ZmKSwgc3ogLSBvZmYpOw0KCQkJCQkJc3og
PSBQQUdFSERSU1o7DQoJCQkJCX0NCgkJCQkJbWVtY3B5KG5wLCBvbXAsIHN6KTsgLyogQ29weSBi
ZWdpbm5pbmcgb2YgcGFnZSAqLw0KCQkJCQlvbXAgPSBucDsNCgkJCQl9DQoJCQkJU0VURFNaKGxl
YWYsIGRhdGEtPm12X3NpemUpOw0KCQkJCWlmIChGX0lTU0VUKGZsYWdzLCBNREJfUkVTRVJWRSkp
DQoJCQkJCWRhdGEtPm12X2RhdGEgPSBNRVRBREFUQShvbXApOw0KCQkJCWVsc2UNCgkJCQkJbWVt
Y3B5KE1FVEFEQVRBKG9tcCksIGRhdGEtPm12X2RhdGEsIGRhdGEtPm12X3NpemUpOw0KCQkJCXJl
dHVybiBNREJfU1VDQ0VTUzsNCgkJCSAgfQ0KCQkJfQ0KCQkJaWYgKChyYzIgPSBtZGJfb3ZwYWdl
X2ZyZWUobWMsIG9tcCkpICE9IE1EQl9TVUNDRVNTKQ0KCQkJCXJldHVybiByYzI7DQoJCX0gZWxz
ZSBpZiAoZGF0YS0+bXZfc2l6ZSA9PSBvbGRkYXRhLm12X3NpemUpIHsNCgkJCS8qIHNhbWUgc2l6
ZSwganVzdCByZXBsYWNlIGl0LiBOb3RlIHRoYXQgd2UgY291bGQNCgkJCSAqIGFsc28gcmV1c2Ug
dGhpcyBub2RlIGlmIHRoZSBuZXcgZGF0YSBpcyBzbWFsbGVyLA0KCQkJICogYnV0IGluc3RlYWQg
d2Ugb3B0IHRvIHNocmluayB0aGUgbm9kZSBpbiB0aGF0IGNhc2UuDQoJCQkgKi8NCgkJCWlmIChG
X0lTU0VUKGZsYWdzLCBNREJfUkVTRVJWRSkpDQoJCQkJZGF0YS0+bXZfZGF0YSA9IG9sZGRhdGEu
bXZfZGF0YTsNCgkJCWVsc2UgaWYgKCEobWMtPm1jX2ZsYWdzICYgQ19TVUIpKQ0KCQkJCW1lbWNw
eShvbGRkYXRhLm12X2RhdGEsIGRhdGEtPm12X2RhdGEsIGRhdGEtPm12X3NpemUpOw0KCQkJZWxz
ZSB7DQoJCQkJbWVtY3B5KE5PREVLRVkobGVhZiksIGtleS0+bXZfZGF0YSwga2V5LT5tdl9zaXpl
KTsNCgkJCQlnb3RvIGZpeF9wYXJlbnQ7DQoJCQl9DQoJCQlyZXR1cm4gTURCX1NVQ0NFU1M7DQoJ
CX0NCgkJbWRiX25vZGVfZGVsKG1jLCAwKTsNCgl9IDwtLS0tLS0tLSBUaGlzIGVudGlyZSBlbHNl
IGNvbnRpbmdlbmN5IHdhcyBsaWtlbHkgc2tpcHBlZCEhDQoNCglyZGF0YSA9IGRhdGE7DQoNCm5l
d19zdWI6DQoJbmZsYWdzID0gZmxhZ3MgJiBOT0RFX0FERF9GTEFHUzsNCgluc2l6ZSA9IElTX0xF
QUYyKG1jLT5tY19wZ1ttYy0+bWNfdG9wXSkgPyBrZXktPm12X3NpemUgOiBtZGJfbGVhZl9zaXpl
KGVudiwga2V5LCByZGF0YSk7IDwtLS0tLS0tLSBTRUdWDQouLi4JDQoNClRoaXMgbWF5IGJlIGFu
IGlkZW50aWZpYWJsZSBidWcgaW4gbWRiX2N1cnNvcl9wdXQoKSBhcyBJdCBkb2VzIG5vdCBzYWZl
bHkgaGFuZGxlIHRoZSBjYXNlIHdoZW4gdGhlIG5vdGVkIGNhbGwgdG8gbWRiX2N1cnNvcl9zZXQo
KSByZXR1cm5zIE1EQl9OT1RGT1VORCAoLTMwNzk4KSENCg0KSXQgZXhwbGljaXRseSBmYWlscyB0
byBwcmVlbXB0aXZlbHkgZXhpdCBieSByZXR1cm5pbmcgYW4gZXJyb3IgaW4gdGhpcyBjYXNlLg0K
DQpUaGUgdmFsdWUgb2YgLTMwNzk4IGlzIGluIHR1cm4gYXNzaWduZWQgdG8gaW5zZXJ0X2tleSwg
d2hpY2ggaXMgdGhlcmVmb3JlIG5vbi1udWxsIGluIHRoZSBjb25kaXRpb24gb2YgdGhlIHN1YnNl
cXVlbnQgaWYgc3RhdGVtZW50Lg0KDQoJaW5zZXJ0X2tleSA9IGluc2VydF9kYXRhID0gcmM7IDwt
LS0tLS0tLSBpbnNlcnRfa2V5ID0gLTMwNzk4IG9yIE1EQl9OT1RGT1VORCENCglpZiAoaW5zZXJ0
X2tleSkgeyA8LS0tLS0tLS0gdHJ1ZQ0KCQkvKiBUaGUga2V5IGRvZXMgbm90IGV4aXN0ICovDQoJ
CURQUklOVEYoKCJpbnNlcnRpbmcga2V5IGF0IGluZGV4ICVpIiwgbWMtPm1jX2tpW21jLT5tY190
b3BdKSk7DQoJCWlmICgobWMtPm1jX2RiLT5tZF9mbGFncyAmIE1EQl9EVVBTT1JUKSAmJg0KCQkJ
TEVBRlNJWkUoa2V5LCBkYXRhKSA+IGVudi0+bWVfbm9kZW1heCkgPC0tLS0tLS0tIGZhbHNlIHNp
bmNlIG1jLT5tY19kYi0+bWRfZmxhZ3MgPSAwDQoJCXsNCgkJCS8qIFRvbyBiaWcgZm9yIGEgbm9k
ZSwgaW5zZXJ0IGluIHN1Yi1EQi4gIFNldCB1cCBhbiBlbXB0eQ0KCQkJICogIm9sZCBzdWItcGFn
ZSIgZm9yIHByZXBfc3ViREIgdG8gZXhwYW5kIHRvIGEgZnVsbCBwYWdlLg0KCQkJICovDQoJCQlm
cF9mbGFncyA9IFBfTEVBRnxQX0RJUlRZOw0KCQkJZnAgPSBlbnYtPm1lX3BidWY7DQoJCQlmcC0+
bXBfcGFkID0gZGF0YS0+bXZfc2l6ZTsgLyogdXNlZCBpZiBNREJfRFVQRklYRUQgKi8NCgkJCWZw
LT5tcF9sb3dlciA9IGZwLT5tcF91cHBlciA9IChQQUdFSERSU1otUEFHRUJBU0UpOw0KCQkJb2xk
ZGF0YS5tdl9zaXplID0gUEFHRUhEUlNaOw0KCQkJZ290byBwcmVwX3N1YkRCOw0KCQl9IDwtLS0t
LS0tLSB0aGlzIHdhcyBub3QgZXhlY3V0ZWQsIGFuZCB0aGUgdmVyeSBsb25nIGVsc2UgY29udGlu
Z2VuY3kgYmVsb3cgaXMgc2tpcHBlZCENCgl9IGVsc2Ugew0KU2luY2UgbWMtPm1jX2RiLT5tZF9m
bGFncyA9IDAsIHRoZSBjb250aW5nZW5jeSBpbiB0aGUgZW1iZWRkZWQgaWYgc3RhdGVtZW50IGZh
aWxzLg0KDQpUaGUgc2VnbWVudGF0aW9uIGZhdWx0IG9jY3VycyBkdWUgdG8gdGhlIGNhbGwgb2Yg
SVNfTEVBRjIgb24gdGhlIG51bGwgcG9pbnRlciBtYy0+bWNfcGdbMF0uDQoNCglyZGF0YSA9IGRh
dGE7DQoNCm5ld19zdWI6DQoJbmZsYWdzID0gZmxhZ3MgJiBOT0RFX0FERF9GTEFHUzsNCgluc2l6
ZSA9IElTX0xFQUYyKG1jLT5tY19wZ1ttYy0+bWNfdG9wXSkgPyBrZXktPm12X3NpemUgOiBtZGJf
bGVhZl9zaXplKGVudiwga2V5LCByZGF0YSk7IDwtLS0tLS0tLSBTRUdWDQoNCg0KUmVnYXJkcywN
ClJvYmlucy4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEhvd2FyZCBDaHUg
PGh5Y0BzeW1hcy5jb20+IA0KU2VudDogTW9uZGF5LCBKdW5lIDE3LCAyMDE5IDU6NTUgUE0NClRv
OiBSb2JpbnMgR2VvcmdlIDxncm9iaW5zQHB1bHNlc2VjdXJlLm5ldD47IG9wZW5sZGFwLWl0c0BP
cGVuTERBUC5vcmcNClN1YmplY3Q6IFJlOiAoSVRTIzkwMzcpIG9ic2VydmluZyBjcmFzaCBpbiBt
ZGJfY3Vyc29yX3B1dCgpDQoNCkNBVVRJT046IFRoaXMgZW1haWwgb3JpZ2luYXRlZCBmcm9tIG91
dHNpZGUgb2YgUHVsc2VTZWN1cmUuIERvIG5vdCBjbGljayBsaW5rcyBvciBvcGVuIGF0dGFjaG1l
bnRzIHVubGVzcyB5b3UgcmVjb2duaXplIHRoZSBzZW5kZXIgYW5kIGtub3cgdGhlIGNvbnRlbnQg
aXMgc2FmZS4NCg0KDQpncm9iaW5zQHB1bHNlc2VjdXJlLm5ldCB3cm90ZToNCj4gRnVsbF9OYW1l
OiBSb2JpbnMgR2VvcmdlDQo+IFZlcnNpb246IDAuOS4xOA0KPiBPUzogQ2VudG9zDQo+IFVSTDog
ZnRwOi8vZnRwLm9wZW5sZGFwLm9yZy9pbmNvbWluZy8NCj4gU3VibWlzc2lvbiBmcm9tOiAoTlVM
TCkgKDEyMS4yNDQuMTU0LjEzNCkNCj4NCj4NCj4gSSBhbSBzZWVpbmcgTE1EQiBjcmFzaCwgcGxl
YXNlIGZpbmQgdGhlIHN0YWNrIHRyYWNlLg0KPg0KPiAjMCAgMHgwMDllMzYyZSBpbiBtZGJfY3Vy
c29yX3B1dCAobWM9MHhmZmQ1OWJiOCwga2V5PTB4ZmZkNTlkMTQsIA0KPiBkYXRhPTB4ZmZkNTlk
MGMsIGZsYWdzPTApIGF0IG1kYi5jOjY2ODgNCj4gIzEgIDB4MDA5ZTQ4ZWMgaW4gbWRiX3B1dCAo
dHhuPTB4ZDc0ZDMwMDgsIGRiaT0yLCBrZXk9MHhmZmQ1OWQxNCwgDQo+IGRhdGE9MHhmZmQ1OWQw
YywgZmxhZ3M9MCkgYXQgbWRiLmM6ODc3MQ0KPiAjMiAgMHgwMGY1Y2VmOCBpbiBMTURCOjpMTURC
Q29udGV4dDo6Y3JlYXRlU2Vzc2lvbiAodGhpcz0weDgwY2M2MTAsIA0KPiBzaWQ9MHg4MGNkMGZj
ICJzaWQxNDIyNDE5ZTVmZDZjZDIyNGYyNzhkNzQyOTNjNTBmNWVmOTY1OTM3MDAwMDAwMDArIikg
DQo+IGF0DQo+IGxtZGJpbnQuY2M6NDYwDQo+ICMzICAweDA4MDUzOThlIGluIHVwZGF0ZUxNREIg
KHJlcXVlc3Q9Li4uLCBmb3J3YXJkPUAweGZmZDU5ZmZmKSBhdA0KPiBzZXNzaW9uc2VydmVyLmNj
OjExNTQNCj4gIzQgIHByb2Nlc3NSZXF1ZXN0V2l0aG91dFJlc3BvbnNlIChyZXF1ZXN0PS4uLiwg
Zm9yd2FyZD1AMHhmZmQ1OWZmZikgDQo+IGF0DQo+IHNlc3Npb25zZXJ2ZXIuY2M6MTI0MA0KPiAj
NSAgMHgwODA1NjkzNiBpbiBaU3ViSGFuZGxlcjo6aW9SZWFkeSAodGhpcz0weGZmZDVhYTFjLCBm
ZD0yMCkgYXQNCj4gc2Vzc2lvbnNlcnZlci5jYzoxNTAxDQo+ICM2ICAweDAwZjg3MGQyIGluIHJ1
bkNvcmVEaXNwYXRjaGVyIChkZWZhdWx0X3Q9PHZhbHVlIG9wdGltaXplZCBvdXQ+LCANCj4gZmxh
Z3M9LTEpIGF0IGZkcy5jYzo4ODkNCj4gIzcgIDB4MDBmODdiMzcgaW4gRFNFdm50RmRzOjpydW5E
aXNwYXRjaGVyICgpIGF0IGZkcy5jYzo5NDUNCj4gIzggIDB4MDgwNTYyNDggaW4gbWFpbiAoKSBh
dCBzZXNzaW9uc2VydmVyLmNjOjE4MjANCj4NCj4gQW55Ym9keSBoYXMgc2VlbiBzaW1pbGFyIGlz
c3VlIGJlZm9yZT8NCg0KRG9lc24ndCBzb3VuZCBmYW1pbGlhci4gQnV0IDAuOS4xOCBpcyBxdWl0
ZSBvbGQuIElmIHlvdSBjYW4gcmVwcm9kdWNlIHRoaXMgaXNzdWUgaW4gMC45LjIzIHRoZW4gd2Un
bGwgdGFrZSBhIGxvb2suIFRlc3QgY29kZSB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0gd291bGQg
YWxzbyBiZSBuZWVkZWQuDQoNCi0tDQogIC0tIEhvd2FyZCBDaHUNCiAgQ1RPLCBTeW1hcyBDb3Jw
LiAgICAgICAgICAgaHR0cHM6Ly9uYW0wNC5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNv
bS8/dXJsPWh0dHAlM0ElMkYlMkZ3d3cuc3ltYXMuY29tJmFtcDtkYXRhPTAyJTdDMDElN0MlN0Mw
MDNiOTA3ZDJkZGU0NDAyOGFkYzA4ZDZmMzFlZDljNCU3QzMyOTBhOTE3OWRkNjQzZGI4NDNiYTNl
Mzc2ZjlmOTZjJTdDMCU3QzAlN0M2MzY5NjM3MTExNjkyNTE5NDkmYW1wO3NkYXRhPTJ1R1JvTUdW
ZGhDbmlVRGhYZnpQZ0FtaVYxa3Q2NmRXN3U4ckRtR3Q2YVklM0QmYW1wO3Jlc2VydmVkPTANCiAg
RGlyZWN0b3IsIEhpZ2hsYW5kIFN1biAgICAgaHR0cHM6Ly9uYW0wNC5zYWZlbGlua3MucHJvdGVj
dGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHAlM0ElMkYlMkZoaWdobGFuZHN1bi5jb20lMkZoeWMl
MkYmYW1wO2RhdGE9MDIlN0MwMSU3QyU3QzAwM2I5MDdkMmRkZTQ0MDI4YWRjMDhkNmYzMWVkOWM0
JTdDMzI5MGE5MTc5ZGQ2NDNkYjg0M2JhM2UzNzZmOWY5NmMlN0MwJTdDMCU3QzYzNjk2MzcxMTE2
OTI1MTk0OSZhbXA7c2RhdGE9MyUyRkxSUE0lMkJIdElhUm9LYU16JTJGMjclMkZvNFpUOFhoVGNG
SlR2eXBCc3N4MHI4JTNEJmFtcDtyZXNlcnZlZD0wDQogIENoaWVmIEFyY2hpdGVjdCwgT3BlbkxE
QVAgIGh0dHBzOi8vbmFtMDQuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1o
dHRwJTNBJTJGJTJGd3d3Lm9wZW5sZGFwLm9yZyUyRnByb2plY3QlMkYmYW1wO2RhdGE9MDIlN0Mw
MSU3QyU3QzAwM2I5MDdkMmRkZTQ0MDI4YWRjMDhkNmYzMWVkOWM0JTdDMzI5MGE5MTc5ZGQ2NDNk
Yjg0M2JhM2UzNzZmOWY5NmMlN0MwJTdDMCU3QzYzNjk2MzcxMTE2OTI1MTk0OSZhbXA7c2RhdGE9
N2lUWE1nMk5TZVhHJTJGS3A5cWFIUVBPQyUyRktiakNWJTJCSzNKcyUyRmVuaEZwTEdZJTNEJmFt
cDtyZXNlcnZlZD0wDQo=