[COMMIT] Be more careful about possible relocation of string data, print.c

Aidan Kehoe <[email protected]> Thu, 14 Apr 2016 01:14:17 +0100
Newsgroups gmane.emacs.xemacs.patches
Message-ID <[email protected]>
CkFQUFJPVkUgQ09NTUlUCgpOT1RFOiBUaGlzIHBhdGNoIGhhcyBiZWVuIGNvbW1pdHRlZC4KCiMg
SEcgY2hhbmdlc2V0IHBhdGNoCiMgVXNlciBBaWRhbiBLZWhvZSA8a2Vob2VhQHBhcmhhc2FyZC5u
ZXQ+CiMgRGF0ZSAxNDYwNTkyNzMyIC0zNjAwCiMgICAgICBUaHUgQXByIDE0IDAxOjEyOjEyIDIw
MTYgKzAxMDAKIyBOb2RlIElEIDlmY2E3NjZmOWQzMWYxNDIyZjEyODc3MjMxYmMyM2I0YmQ4MzNh
OTcKIyBQYXJlbnQgIDAzZWRmMGY3MWQ3MDdmNGE5OGZhMzY1YTk1NTRhY2JmOTUxZjc1ZmEKQmUg
bW9yZSBjYXJlZnVsIGFib3V0IHBvc3NpYmxlIHJlbG9jYXRpb24gb2Ygc3RyaW5nIGRhdGEsIHBy
aW50LmMKCmxpc3AvQ2hhbmdlTG9nIGFkZGl0aW9uOgoKMjAxNi0wNC0xNCAgQWlkYW4gS2Vob2Ug
IDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4KCgkqIHByaW50LmMgKG91dHB1dF9zdHJpbmcpOgoJV2hl
biBSRUxPQyBpcyBhIHN0cmluZyBhbmQgRlVOQ1RJT04gaXMgYSBmdW5jdGlvbiwgYmUgbW9yZSBj
YXJlZnVsCglhYm91dCBGVU5DVElPTiBwb3NzaWJseSBtb2RpZnlpbmcgUkVMT0MgYW5kIG1ha2lu
ZyBvdXIgb2Zmc2V0IGRhdGEKCWludmFsaWQuCglEb24ndCBjYWxsIGJ5dGVjb3VudF90b19jaGFy
Y291bnQgd2hlbiB0aGF0IGlzIG5vdCBuZWNlc3NhcnkuCgkqIHByaW50LmMgKHByaW50X3N0cmlu
Zyk6CglDaGVjayB3aGV0aGVyIFBSSU5UQ0hBUkZVTiBoYXMgbWFkZSBvdXIgc3RyaW5nIGluZGlj
ZXMgaW52YWxpZCwKCXVwZGF0ZSBhcyBhcHByb3ByaWF0ZS4KCURvbid0IGdldCB0aGUgc3RyaW5n
IGNoYXIgbGVuZ3RoIHdoZW4gdGhlcmUncyBubyBuZWVkIHRvLgoJT3BlcmF0ZSBpbiB0ZXJtcyBv
ZiBJY2hhcnMsIGRvbid0IGFzc3VtZSBpbnRlcm5hbC1mb3JtYXQgdGV4dCBpcwoJQVNDSUkgY29t
cGF0aWJsZS4KCSogcHJpbnQuYyAocHJpbnRfc3ltYm9sKToKCUNoZWNrIHdoZXRoZXIgUFJJTlRD
SEFSRlVOIGhhcyBtb2RpZmllZCBOQU1FJ3MgYnl0ZSBsZW5ndGgsIG1ha2luZwoJc3VyZSB3ZSBk
b24ndCBydW4gb2ZmIHRoZSBlbmQuCglPcGVyYXRlIGluIHRlcm1zIG9mIEljaGFycywgZG9uJ3Qg
YXNzdW1lIGludGVybmFsLWZvcm1hdCB0ZXh0IGlzCglBU0NJSSBjb21wYXRpYmxlLgoKdGVzdHMv
Q2hhbmdlTG9nIGFkZGl0aW9uOgoKMjAxNi0wNC0xNCAgQWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFy
aGFzYXJkLm5ldD4KCgkqIGF1dG9tYXRlZC9tdWxlLXRlc3RzLmVsOgoJQ2hlY2sgdGhhdCB0aGUg
TGlzcCBwcmludGVyIGhhbmRsZXMgcmVsb2NhdGlvbiBvZiBzdHJpbmcgZGF0YSBPSywKCXNvbWV0
aGluZyB0aGF0IG9ubHkgaGFwcGVucyB3aGVuIHN0cmluZ3MgYXJlIG1vZGlmaWVkIHdpdGgKCWNo
YXJhY3RlcnMgb2YgZGlmZmVyaW5nIGJ5dGUgbGVuZ3Rocy4KCmRpZmYgLXIgMDNlZGYwZjcxZDcw
IC1yIDlmY2E3NjZmOWQzMSBzcmMvQ2hhbmdlTG9nCi0tLSBhL3NyYy9DaGFuZ2VMb2cJVGh1IE1h
ciAzMSAyMDoyMzoxMCAyMDE2ICswMTAwCisrKyBiL3NyYy9DaGFuZ2VMb2cJVGh1IEFwciAxNCAw
MToxMjoxMiAyMDE2ICswMTAwCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTYtMDQtMTQgIEFpZGFuIEtl
aG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CisKKwkqIHByaW50LmMgKG91dHB1dF9zdHJpbmcp
OgorCVdoZW4gUkVMT0MgaXMgYSBzdHJpbmcgYW5kIEZVTkNUSU9OIGlzIGEgZnVuY3Rpb24sIGJl
IG1vcmUgY2FyZWZ1bAorCWFib3V0IEZVTkNUSU9OIHBvc3NpYmx5IG1vZGlmeWluZyBSRUxPQyBh
bmQgbWFraW5nIG91ciBvZmZzZXQgZGF0YQorCWludmFsaWQuCisJRG9uJ3QgY2FsbCBieXRlY291
bnRfdG9fY2hhcmNvdW50IHdoZW4gdGhhdCBpcyBub3QgbmVjZXNzYXJ5LgorCSogcHJpbnQuYyAo
cHJpbnRfc3RyaW5nKToKKwlDaGVjayB3aGV0aGVyIFBSSU5UQ0hBUkZVTiBoYXMgbWFkZSBvdXIg
c3RyaW5nIGluZGljZXMgaW52YWxpZCwKKwl1cGRhdGUgYXMgYXBwcm9wcmlhdGUuCisJRG9uJ3Qg
Z2V0IHRoZSBzdHJpbmcgY2hhciBsZW5ndGggd2hlbiB0aGVyZSdzIG5vIG5lZWQgdG8uCisJT3Bl
cmF0ZSBpbiB0ZXJtcyBvZiBJY2hhcnMsIGRvbid0IGFzc3VtZSBpbnRlcm5hbC1mb3JtYXQgdGV4
dCBpcworCUFTQ0lJIGNvbXBhdGlibGUuCisJKiBwcmludC5jIChwcmludF9zeW1ib2wpOgorCUNo
ZWNrIHdoZXRoZXIgUFJJTlRDSEFSRlVOIGhhcyBtb2RpZmllZCBOQU1FJ3MgYnl0ZSBsZW5ndGgs
IG1ha2luZworCXN1cmUgd2UgZG9uJ3QgcnVuIG9mZiB0aGUgZW5kLgorCU9wZXJhdGUgaW4gdGVy
bXMgb2YgSWNoYXJzLCBkb24ndCBhc3N1bWUgaW50ZXJuYWwtZm9ybWF0IHRleHQgaXMKKwlBU0NJ
SSBjb21wYXRpYmxlLgorCiAyMDE2LTAzLTMxICBBaWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJoYXNh
cmQubmV0PgogCiAJQ2xlYW4gdXAgYW5kIGZpbmlzaCB0aGUgaW1wbGVtZW50YXRpb24gb2YgcmVn
dWxhciBleHByZXNzaW9uCmRpZmYgLXIgMDNlZGYwZjcxZDcwIC1yIDlmY2E3NjZmOWQzMSBzcmMv
cHJpbnQuYwotLS0gYS9zcmMvcHJpbnQuYwlUaHUgTWFyIDMxIDIwOjIzOjEwIDIwMTYgKzAxMDAK
KysrIGIvc3JjL3ByaW50LmMJVGh1IEFwciAxNCAwMToxMjoxMiAyMDE2ICswMTAwCkBAIC00NDIs
NyArNDQyLDYgQEAKIAkgICAgICAgTGlzcF9PYmplY3QgcmVsb2MsIEJ5dGVjb3VudCBvZmZzZXQs
IEJ5dGVjb3VudCBsZW4pCiB7CiAgIC8qIFRoaXMgZnVuY3Rpb24gY2FuIEdDICovCi0gIENoYXJj
b3VudCBjY2xlbjsKICAgLyogV2UgY2hhbmdlIHRoZSB2YWx1ZSBvZiBub25yZWxvYyAoZmV0Y2hp
bmcgaXQgZnJvbSByZWxvYyBhcwogICAgICBuZWNlc3NhcnkpLCBidXQgd2UgZG9uJ3Qgd2FudCB0
byBwYXNzIHRoaXMgY2hhbmdlZCB2YWx1ZSBvbiB0bwogICAgICBvdGhlciBmdW5jdGlvbnMgdGhh
dCB0YWtlIGJvdGggYSBub25yZWxvYyBhbmQgYSByZWxvYywgb3IgdGhpbmdzCkBAIC00NjMsMTEg
KzQ2Miw4IEBACiAKICAgaWYgKFNUUklOR1AgKHJlbG9jKSkKICAgICB7Ci0gICAgICBjY2xlbiA9
IHN0cmluZ19vZmZzZXRfYnl0ZV90b19jaGFyX2xlbiAocmVsb2MsIG9mZnNldCwgbGVuKTsKICAg
ICAgIG5ld25vbnJlbG9jID0gWFNUUklOR19EQVRBIChyZWxvYyk7CiAgICAgfQotICBlbHNlCi0g
ICAgY2NsZW4gPSBieXRlY291bnRfdG9fY2hhcmNvdW50IChuZXdub25yZWxvYyArIG9mZnNldCwg
bGVuKTsKIAogICBpZiAoTFNUUkVBTVAgKGZ1bmN0aW9uKSkKICAgICB7CkBAIC01MTAsMTQgKzUw
NiwxMyBAQAogICAgIH0KICAgZWxzZSBpZiAoTUFSS0VSUCAoZnVuY3Rpb24pKQogICAgIHsKLSAg
ICAgIC8qIG1hcmtlcl9wb3NpdGlvbigpIHdpbGwgZXJyIGlmIG1hcmtlciBkb2Vzbid0IHBvaW50
IGFueXdoZXJlLiAgKi8KLSAgICAgIENoYXJicG9zIHNwb2ludCA9IG1hcmtlcl9wb3NpdGlvbiAo
ZnVuY3Rpb24pOwotCiAgICAgICBidWZmZXJfaW5zZXJ0X3N0cmluZ18xIChYTUFSS0VSIChmdW5j
dGlvbiktPmJ1ZmZlciwKLQkJCSAgICAgIHNwb2ludCwgbm9ucmVsb2MsIHJlbG9jLCBvZmZzZXQs
IGxlbiwKLQkJCSAgICAgIC0xLCAwKTsKLSAgICAgIEZzZXRfbWFya2VyIChmdW5jdGlvbiwgbWFr
ZV9maXhudW0gKHNwb2ludCArIGNjbGVuKSwKLQkJICAgRm1hcmtlcl9idWZmZXIgKGZ1bmN0aW9u
KSk7CisJCQkgICAgICAvKiBtYXJrZXJfcG9zaXRpb24oKSB3aWxsIGVyciBpZiBtYXJrZXIKKwkJ
CQkgZG9lc24ndCBwb2ludCBhbnl3aGVyZS4gICovCisJCQkgICAgICBtYXJrZXJfcG9zaXRpb24g
KGZ1bmN0aW9uKSwgbm9ucmVsb2MsIHJlbG9jLAorCQkJICAgICAgb2Zmc2V0LCBsZW4sIC0xLCAw
KTsKKyAgICAgIHNldF9ieXRlX21hcmtlcl9wb3NpdGlvbiAoZnVuY3Rpb24sCisJCQkJYnl0ZV9t
YXJrZXJfcG9zaXRpb24gKGZ1bmN0aW9uKSArIGxlbik7CiAgICAgfQogICBlbHNlIGlmIChGUkFN
RVAgKGZ1bmN0aW9uKSkKICAgICB7CkBAIC01NDcsMzAgKzU0MiwzMiBAQAogICAgIH0KICAgZWxz
ZQogICAgIHsKLSAgICAgIENoYXJjb3VudCBjY29mZjsKLSAgICAgIENoYXJjb3VudCBpaWk7Ci0K
LSAgICAgIGlmIChTVFJJTkdQIChyZWxvYykpCi0JY2NvZmYgPSBzdHJpbmdfaW5kZXhfYnl0ZV90
b19jaGFyIChyZWxvYywgb2Zmc2V0KTsKLSAgICAgIGVsc2UKLQljY29mZiA9IGJ5dGVjb3VudF90
b19jaGFyY291bnQgKG5ld25vbnJlbG9jLCBvZmZzZXQpOwotCi0gICAgICBpZiAoU1RSSU5HUCAo
cmVsb2MpKQorICAgICAgQnl0ZWNvdW50IGVuZCA9IG9mZnNldCArIGxlbjsKKworICAgICAgd2hp
bGUgKG9mZnNldCA8IGVuZCkKIAl7Ci0JICBmb3IgKGlpaSA9IGNjb2ZmOyBpaWkgPCBjY2xlbiAr
IGNjb2ZmOyBpaWkrKykKLQkgICAgewotCSAgICAgIGNhbGwxIChmdW5jdGlvbiwgbWFrZV9jaGFy
IChzdHJpbmdfaWNoYXIgKHJlbG9jLCBpaWkpKSk7Ci0JICAgICAgaWYgKFNUUklOR1AgKHJlbG9j
KSkKLQkJbmV3bm9ucmVsb2MgPSBYU1RSSU5HX0RBVEEgKHJlbG9jKTsKLQkgICAgfQotCX0KLSAg
ICAgIGVsc2UKLQl7Ci0JICBmb3IgKGlpaSA9IGNjb2ZmOyBpaWkgPCBjY2xlbiArIGNjb2ZmOyBp
aWkrKykKLQkgICAgewotCSAgICAgIGNhbGwxIChmdW5jdGlvbiwKLQkJICAgICBtYWtlX2NoYXIg
KGl0ZXh0X2ljaGFyX24gKG5ld25vbnJlbG9jLCBpaWkpKSk7Ci0JICAgIH0KKwkgIGNhbGwxIChm
dW5jdGlvbiwgbWFrZV9jaGFyIChpdGV4dF9pY2hhciAobmV3bm9ucmVsb2MgKyBvZmZzZXQpKSk7
CisKKyAgICAgICAgICBpZiAoU1RSSU5HUCAocmVsb2MpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICBuZXdub25yZWxvYyA9IFhTVFJJTkdfREFUQSAocmVsb2MpOworCisgICAgICAgICAg
ICAgIC8qIEZVTkNUSU9OIG1heSBoYXZlIG1vZGlmaWVkIHRoZSBieXRlIGxlbmd0aCBvZiBSRUxP
QyBhbmQKKyAgICAgICAgICAgICAgICAgcmVsb2NhdGVkIGl0LCB1cGRhdGUgb3VyIHBvaW50ZXIu
ICovCisgICAgICAgICAgICAgIGlmIChvZmZzZXQgPj0gWFNUUklOR19MRU5HVEggKHJlbG9jKSB8
fCAKKyAgICAgICAgICAgICAgICAgICF2YWxpZF9pYnl0ZXB0cl9wIChuZXdub25yZWxvYyArIG9m
ZnNldCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgLyogRXJyb3IgaWYg
d2Ugd291bGQgcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIG9yIHByaW50CisgICAgICAg
ICAgICAgICAgICAgICBjb3JydXB0IGRhdGEuIFdlIGRvbid0IGRvIHRoZSBjaGFyYWN0ZXIgYWNj
b3VudGluZyB0aGF0CisgICAgICAgICAgICAgICAgICAgICBwcmludF9zdHJpbmcgZG9lcywgc2lu
Y2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICBjb3Vu
dCBpbmZvIGF2YWlsYWJsZSBmb3IgZnJlZSwgYW5kIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZQorICAg
ICAgICAgICAgICAgICAgICAgdG8gYWRkIGl0IGZvciBzb21ldGhpbmcgdGhhdCB3aWxsIGhhcHBl
biB0aGlzIHJhcmVseS4gKi8KKyAgICAgICAgICAgICAgICAgIGludmFsaWRfc3RhdGUgKCJzdHJp
bmcgbW9kaWZpZWQgd2hpbGUgcHJpbnRpbmcgaXQiLCByZWxvYyk7CisgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICBv
ZmZzZXQgKz0gaXRleHRfaWNoYXJfbGVuIChuZXdub25yZWxvYyArIG9mZnNldCk7CiAJfQogICAg
IH0KIApAQCAtMTcwOSw0MSArMTcwNiwzOSBAQAogdm9pZAogcHJpbnRfc3RyaW5nIChMaXNwX09i
amVjdCBvYmosIExpc3BfT2JqZWN0IHByaW50Y2hhcmZ1biwgaW50IGVzY2FwZWZsYWcpCiB7Ci0g
IC8qIFdlIGRpc3Rpbmd1aXNoIGJldHdlZW4gQnl0ZWNvdW50cyBhbmQgQ2hhcmNvdW50cywgdG8g
bWFrZQotICAgICBWcHJpbnRfc3RyaW5nX2xlbmd0aCB3b3JrIGNvcnJlY3RseSB1bmRlciBNdWxl
LiAgKi8KLSAgQ2hhcmNvdW50IHNpemUgPSBzdHJpbmdfY2hhcl9sZW5ndGggKG9iaik7Ci0gIENo
YXJjb3VudCBtYXggPSBzaXplOwotICBCeXRlY291bnQgYmNtYXggPSBYU1RSSU5HX0xFTkdUSCAo
b2JqKTsKKyAgQnl0ZWNvdW50IGJjbWF4ID0gWFNUUklOR19MRU5HVEggKG9iaiksIGJjc2l6ZSA9
IGJjbWF4OwogICBzdHJ1Y3QgZ2Nwcm8gZ2Nwcm8xLCBnY3BybzI7CiAgIEdDUFJPMiAob2JqLCBw
cmludGNoYXJmdW4pOwogCi0gIGlmIChGSVhOVU1QIChWcHJpbnRfc3RyaW5nX2xlbmd0aCkgJiYK
LSAgICAgIFhGSVhOVU0gKFZwcmludF9zdHJpbmdfbGVuZ3RoKSA8IG1heCkKKyAgaWYgKEZJWE5V
TVAgKFZwcmludF9zdHJpbmdfbGVuZ3RoKQorICAgICAgJiYgWEZJWE5VTSAoVnByaW50X3N0cmlu
Z19sZW5ndGgpIDwgYmNtYXgpCiAgICAgewotICAgICAgbWF4ID0gWEZJWE5VTSAoVnByaW50X3N0
cmluZ19sZW5ndGgpOwotICAgICAgYmNtYXggPSBzdHJpbmdfaW5kZXhfY2hhcl90b19ieXRlIChv
YmosIG1heCk7Ci0gICAgfQotICBpZiAobWF4IDwgMCkKLSAgICB7Ci0gICAgICBtYXggPSAwOwot
ICAgICAgYmNtYXggPSAwOworICAgICAgLyogVGhlIGJ5dGUgbGVuZ3RoIG9mIE9CSiBpcyBhbiBp
bmNsdXNpdmUgdXBwZXIgYm91bmQgb24gaXRzIGNoYXJhY3RlcgorCSBsZW5ndGguIElmIFBSSU5U
LVNUUklORy1MRU5HVEggaXMgbGVzcyB0aGFuIEJDTUFYLCBjaGVjayBPQkoncworCSBjaGFyYWN0
ZXIgbGVuZ3RoIHRvIGdldCBhbiBleGFjdCBsZW5ndGggdG8gcHJpbnQuIE90aGVyd2lzZSwgcHJp
bnQKKwkgdGhlIGVudGlyZSBzdHJpbmcgd2l0aG91dCB3b3JyeWluZyBhYm91dCBpdHMgY2hhcmFj
dGVyIGxlbmd0aC4gKi8KKyAgICAgIENoYXJjb3VudCBjbWF4ID0gbWluIChzdHJpbmdfY2hhcl9s
ZW5ndGggKG9iaiksCisJCQkgICAgbWF4ICgwLCBYUkVBTEZJWE5VTSAoVnByaW50X3N0cmluZ19s
ZW5ndGgpKSk7CisgICAgICBiY21heCA9IHN0cmluZ19pbmRleF9jaGFyX3RvX2J5dGUgKG9iaiwg
Y21heCk7CiAgICAgfQogCiAgIGlmICghZXNjYXBlZmxhZykKICAgICB7CiAgICAgICAvKiBUaGlz
IGRlYWxzIHdpdGggR0MtcmVsb2NhdGlvbiBhbmQgTXVsZS4gKi8KICAgICAgIG91dHB1dF9zdHJp
bmcgKHByaW50Y2hhcmZ1biwgMCwgb2JqLCAwLCBiY21heCk7Ci0gICAgICBpZiAobWF4IDwgc2l6
ZSkKKyAgICAgIGlmIChiY21heCA8IFhTVFJJTkdfTEVOR1RIIChvYmopKQogCXdyaXRlX2FzY3N0
cmluZyAocHJpbnRjaGFyZnVuLCAiIC4uLiIpOwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAg
IEJ5dGVjb3VudCBpLCBsYXN0ID0gMDsKKyAgICAgIENoYXJjb3VudCBjaSA9IDA7CiAKICAgICAg
IHdyaXRlX2FzY3N0cmluZyAocHJpbnRjaGFyZnVuLCAiXCIiKTsKLSAgICAgIGZvciAoaSA9IDA7
IGkgPCBiY21heDsgaSsrKQorICAgICAgZm9yIChpID0gMDsgaSA8IGJjbWF4OworICAgICAgICAg
ICBpICs9IGl0ZXh0X2ljaGFyX2xlbiAoc3RyaW5nX2J5dGVfYWRkciAob2JqLCBpKSksIGNpKysp
CiAJewotCSAgSWJ5dGUgY2ggPSBzdHJpbmdfYnl0ZSAob2JqLCBpKTsKKwkgIEljaGFyIGNoID0g
aXRleHRfaWNoYXIgKHN0cmluZ19ieXRlX2FkZHIgKG9iaiwgaSkpOwogCSAgaWYgKGNoID09ICdc
IicgfHwgY2ggPT0gJ1xcJwogCSAgICAgIHx8IChjaCA9PSAnXG4nICYmIHByaW50X2VzY2FwZV9u
ZXdsaW5lcykpCiAJICAgIHsKQEAgLTE3NjYsNiArMTc2MSwzMiBAQAogCQkgIHRlbXBbMV0gPSAn
XDAnOwogCQkgIHdyaXRlX2lzdHJpbmcgKHByaW50Y2hhcmZ1biwgdGVtcCk7CiAJCX0KKworICAg
ICAgICAgICAgICAvKiBJZiBQUklOVENIQVJGVU4gbW9kaWZpZWQgT0JKJ3MgYnl0ZSBsZW5ndGgs
IGF0dGVtcHQgdG8gZW5zdXJlCisgICAgICAgICAgICAgICAgIHdlIHByaW50IHRoZSByaWdodCBu
dW1iZXIgb2YgY2hhcmFjdGVycywgZW5zdXJlIHdlIGRvbid0IHJ1bgorICAgICAgICAgICAgICAg
ICBvZmYgdGhlIGVuZC4KKworICAgICAgICAgICAgICAgICBQUklOVENIQVJGVU4gY291bGQgYWxz
byBoYXZlIHNpbGVudGx5IGFkZGVkIGNoYXJhY3RlcnMgb2YKKyAgICAgICAgICAgICAgICAgdmFy
eWluZyBieXRlIGxlbmd0aCBhdCBkaWZmZXJlbnQgcG9zaXRpb25zLCBtYWludGFpbmluZyB0aGUK
KyAgICAgICAgICAgICAgICAgYnl0ZSBsZW5ndGggb2YgT0JKIGJ1dCBjb3JydXB0aW5nIG91ciBj
YWxjdWxhdGlvbiBvZgorICAgICAgICAgICAgICAgICBCQ01BWC4gSWYgaXQgZG9lcyB0aGF0LCBv
dXIgbWlzYmVoYXZpb3VyIGlzIGl0cyBvd24gZGFtbgorICAgICAgICAgICAgICAgICBmYXVsdC4g
IFBSSU5UQ0hBUkZVTiByZWFsbHkgc2hvdWxkbid0IGJlIG1vZGlmeWluZyBPQkogYXQKKyAgICAg
ICAgICAgICAgICAgYWxsLCBjZi4gdGhlIE1BUFBJTkctREVTVFJVQ1RJVkUtSU5URVJBQ1RJT04g
Q29tbW9uIExpc3AKKyAgICAgICAgICAgICAgICAgaXNzdWUuICovCisgICAgICAgICAgICAgIGlm
IChYU1RSSU5HX0xFTkdUSCAob2JqKSAhPSBiY3NpemUpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgYmNtYXggPSBiY3NpemUgPSBYU1RSSU5HX0xFTkdUSCAob2JqKTsKKyAg
ICAgICAgICAgICAgICAgIGkgPSBzdHJpbmdfaW5kZXhfY2hhcl90b19ieXRlIChvYmosIGNpKTsK
KworICAgICAgICAgICAgICAgICAgaWYgKEZJWE5VTVAgKFZwcmludF9zdHJpbmdfbGVuZ3RoKQor
ICAgICAgICAgICAgICAgICAgICAgICYmIFhGSVhOVU0gKFZwcmludF9zdHJpbmdfbGVuZ3RoKSA8
IGJjbWF4KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgQ2hh
cmNvdW50IGNtYXggPQorICAgICAgICAgICAgICAgICAgICAgICAgbWluIChzdHJpbmdfY2hhcl9s
ZW5ndGggKG9iaiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCAoMCwgWFJFQUxG
SVhOVU0gKFZwcmludF9zdHJpbmdfbGVuZ3RoKSkpOworICAgICAgICAgICAgICAgICAgICAgIGJj
bWF4ID0gc3RyaW5nX2luZGV4X2NoYXJfdG9fYnl0ZSAob2JqLCBjbWF4KTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KIAkgICAgICBsYXN0ID0gaSArIDE7CiAJICAg
IH0KIAl9CkBAIC0xNzc0LDcgKzE3OTUsNyBAQAogCSAgb3V0cHV0X3N0cmluZyAocHJpbnRjaGFy
ZnVuLCAwLCBvYmosIGxhc3QsCiAJCQkgYmNtYXggLSBsYXN0KTsKIAl9Ci0gICAgICBpZiAobWF4
IDwgc2l6ZSkKKyAgICAgIGlmIChiY21heCA8IFhTVFJJTkdfTEVOR1RIIChvYmopKQogCXdyaXRl
X2FzY3N0cmluZyAocHJpbnRjaGFyZnVuLCAiIC4uLiIpOwogICAgICAgd3JpdGVfYXNjc3RyaW5n
IChwcmludGNoYXJmdW4sICJcIiIpOwogICAgIH0KQEAgLTI2NjAsMTUgKzI2ODEsMTMgQEAKICAg
fQogCiAgIHsKLSAgICBCeXRlY291bnQgaTsKLSAgICBCeXRlY291bnQgbGFzdCA9IDA7Ci0KLSAg
ICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorICAgIEJ5dGVjb3VudCBpLCBsYXN0ID0gMDsK
KyAgICBDaGFyY291bnQgY2kgPSAwOworCisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7CisgICAg
ICAgICBpICs9IGl0ZXh0X2ljaGFyX2xlbiAoc3RyaW5nX2J5dGVfYWRkciAobmFtZSwgaSkpLCBj
aSsrKQogICAgICAgewotICAgICAgICAvKiBJbiB0aGUgZXZlbnQgdGhhdCB3ZSBhZG9wdCBhIG5v
bi1BU0NJSS1jb21wYXRpYmxlIGludGVybmFsIGZvcm1hdCwKLSAgICAgICAgICAgdGhpcyB3aWxs
IG5vIGxvbmdlciBiZSBNdWxlLXNhZmUuIEFzIG9mIE1heSAyMDE1LCB0aGF0IGlzIHZlcnksCi0g
ICAgICAgICAgIHZlcnkgdW5saWtlbHkuICovCi0Jc3dpdGNoIChzdHJpbmdfYnl0ZSAobmFtZSwg
aSkpCisJc3dpdGNoIChpdGV4dF9pY2hhciAoc3RyaW5nX2J5dGVfYWRkciAobmFtZSwgaSkpKQog
CSAgewogCSAgY2FzZSAgMDogY2FzZSAgMTogY2FzZSAgMjogY2FzZSAgMzoKIAkgIGNhc2UgIDQ6
IGNhc2UgIDU6IGNhc2UgIDY6IGNhc2UgIDc6CkBAIC0yNjgzLDggKzI3MDIsMTggQEAKIAkgIGNh
c2UgJywnOiBjYXNlICcuJyA6IGNhc2UgJ2AnIDoKIAkgIGNhc2UgJ1snOiBjYXNlICddJyA6IGNh
c2UgJz8nIDoKIAkgICAgaWYgKGkgPiBsYXN0KQotCSAgICAgIG91dHB1dF9zdHJpbmcgKHByaW50
Y2hhcmZ1biwgMCwgbmFtZSwgbGFzdCwgaSAtIGxhc3QpOworICAgICAgICAgICAgICBvdXRwdXRf
c3RyaW5nIChwcmludGNoYXJmdW4sIDAsIG5hbWUsIGxhc3QsIGkgLSBsYXN0KTsKKwogCSAgICB3
cml0ZV9hc2NzdHJpbmcgKHByaW50Y2hhcmZ1biwgIlxcIik7CisKKyAgICAgICAgICAgIC8qIElm
IFBSSU5UQ0hBUkZVTiBtb2RpZmllZCBOQU1FJ3MgYnl0ZSBsZW5ndGgsIGVuc3VyZSB3ZSBkb24n
dAorICAgICAgICAgICAgICAgcnVuIG9mZiB0aGUgZW5kLCBhdHRlbXB0IHRvIGVuc3VyZSB3ZSBw
cmludCB0aGUgcmlnaHQgbnVtYmVyIG9mCisgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLiAgQ2Yu
IHNpbWlsYXIgaXNzdWVzIHdpdGggcHJpbnRfc3RyaW5nLCBhYm92ZS4gKi8KKyAgICAgICAgICAg
IGlmIChYU1RSSU5HX0xFTkdUSCAobmFtZSkgIT0gc2l6ZSkKKyAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHNpemUgPSBYU1RSSU5HX0xFTkdUSCAobmFtZSk7CisgICAgICAgICAgICAg
ICAgaSA9IHN0cmluZ19pbmRleF9jaGFyX3RvX2J5dGUgKG5hbWUsIGNpKTsKKyAgICAgICAgICAg
ICAgfQogCSAgICBsYXN0ID0gaTsKIAkgIH0KICAgICAgIH0KZGlmZiAtciAwM2VkZjBmNzFkNzAg
LXIgOWZjYTc2NmY5ZDMxIHRlc3RzL0NoYW5nZUxvZwotLS0gYS90ZXN0cy9DaGFuZ2VMb2cJVGh1
IE1hciAzMSAyMDoyMzoxMCAyMDE2ICswMTAwCisrKyBiL3Rlc3RzL0NoYW5nZUxvZwlUaHUgQXBy
IDE0IDAxOjEyOjEyIDIwMTYgKzAxMDAKQEAgLTEsMyArMSwxMCBAQAorMjAxNi0wNC0xNCAgQWlk
YW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4KKworCSogYXV0b21hdGVkL211bGUtdGVz
dHMuZWw6CisJQ2hlY2sgdGhhdCB0aGUgTGlzcCBwcmludGVyIGhhbmRsZXMgcmVsb2NhdGlvbiBv
ZiBzdHJpbmcgZGF0YSBPSywgCisJc29tZXRoaW5nIHRoYXQgb25seSBoYXBwZW5zIHdoZW4gc3Ry
aW5ncyBhcmUgbW9kaWZpZWQgd2l0aAorCWNoYXJhY3RlcnMgb2YgZGlmZmVyaW5nIGJ5dGUgbGVu
Z3Rocy4KKwogMjAxNi0wMi0yOCAgQWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4K
IAogCSogYXV0b21hdGVkL2xpc3AtcmVhZGVyLXRlc3RzLmVsOgpkaWZmIC1yIDAzZWRmMGY3MWQ3
MCAtciA5ZmNhNzY2ZjlkMzEgdGVzdHMvYXV0b21hdGVkL211bGUtdGVzdHMuZWwKLS0tIGEvdGVz
dHMvYXV0b21hdGVkL211bGUtdGVzdHMuZWwJVGh1IE1hciAzMSAyMDoyMzoxMCAyMDE2ICswMTAw
CisrKyBiL3Rlc3RzL2F1dG9tYXRlZC9tdWxlLXRlc3RzLmVsCVRodSBBcHIgMTQgMDE6MTI6MTIg
MjAxNiArMDEwMApAQCAtODE3LDggKzgxNyw4NSBAQAogICAgICAgKEFzc2VydCAobGV0IChkZWZh
dWx0LXByb2Nlc3MtY29kaW5nLXN5c3RlbSkKIAkJKHNoZWxsLWNvbW1hbmQgImNhdCA8L2Rldi9u
dWxsID4vZGV2L251bGwiKQogCQl0KSkpKQorCisgIDs7IFRlc3QgdGhlIExpc3AgcHJpbnRlciB3
aGVuIHByaW50aW5nIGEgc3RyaW5nIHRoYXQgaGFzIGl0cyBkYXRhIHJlbG9jYXRlZAorICA7OyBp
biB0aGUgY291cnNlIG9mIHByaW50aW5nLCBhbmQsIHJlbGF0ZWRseSwgd2hlbiBwcmludGluZyBh
IHN5bWJvbCB0aGF0CisgIDs7IGhhcyBpdHMgbmFtZSByZWxvY2F0ZWQgaW4gdGhlIGNvdXJzZSBv
ZiBwcmludGluZy4KKyAgKGxldAorICAgICAgKChzdHJpbmcKKyAgICAgICAgKGRlY29kZS1jb2Rp
bmctc3RyaW5nCisgICAgICAgICA7OyAixpLGksaSxpLGksaSxpLGklxcYVxcxpLGksaSxpLGksaS
xpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLG
ksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpIiKQorICAgICAgICAgKGNvbmNhdCAiXHhjNlx4
OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2Igor
ICAgICAgICAgICAgICAgICAiXHg5Mlx4NWNceDYxXHg1Y1x4YzZceDkyXHhjNlx4OTJceGM2XHg5
Mlx4YzZceDkyXHhjNlx4OTJceGM2IgorICAgICAgICAgICAgICAgICAiXHg5Mlx4YzZceDkyXHhj
Nlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyIgorICAgICAgICAg
ICAgICAgICAiXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDky
XHhjNlx4OTJceGM2IgorICAgICAgICAgICAgICAgICAiXHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2
XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyIgorICAgICAgICAgICAgICAgICAi
XHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJc
eGM2IgorICAgICAgICAgICAgICAgICAiXHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZc
eDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyIgorICAgICAgICAgICAgICAgICAiXHhjNlx4OTJc
eGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyIikKKyAgICAgICAgICd1dGYt
OCkpCisgICAgICAgKHNjcmF0Y2gtb3V0cHV0IChnZXQtYnVmZmVyLWNyZWF0ZSAoZ2VuZXJhdGUt
bmV3LWJ1ZmZlci1uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAqdGVtcCoiKSkpCisgICAgICAgc3ltYm9sKQorICAgIChsYWJlbHMKKyAgICAgICAgKChz
dHJlYW0gKGNoYXJhY3RlcikKKyAgICAgICAgICAgKHdoZW4gKGVxIGNoYXJhY3RlciA/YSkKKyAg
ICAgICAgICAgICAoZmlsbCBzdHJpbmcgP2EpCisgICAgICAgICAgICAgKGFzZXQgc3RyaW5nICgt
IChsZW5ndGggc3RyaW5nKSAzKSA/XCIpCisJICAgICAoYXNldCBzdHJpbmcgOCA/XFwpCisJICAg
ICAoYXNldCBzdHJpbmcgMTAgP1xcKSkKKyAgICAgICAgICAgKHdyaXRlLWNoYXIgY2hhcmFjdGVy
IHNjcmF0Y2gtb3V0cHV0KSkKKyAgICAgICAgIChzdHJlYW0xIChjaGFyYWN0ZXIpCisgICAgICAg
ICAgICh3aGVuIChlcSBjaGFyYWN0ZXIgP1xcKQorICAgICAgICAgICAgIChmaWxsIHN0cmluZyA/
YikpCisgICAgICAgICAgICh3cml0ZS1jaGFyIGNoYXJhY3RlciBzY3JhdGNoLW91dHB1dCkpKQor
ICAgICAgKEFzc2VydCAoemVyb3AgKC0gKHBvaW50LW1heCBzY3JhdGNoLW91dHB1dCkgKHBvaW50
LW1pbiBzY3JhdGNoLW91dHB1dCkpKQorICAgICAgICAgICAgICAiY2hlY2tpbmcgZm9yIGVtcHR5
IGJ1ZmZlciIpCisgICAgICAocHJpbnQgc3RyaW5nICMnc3RyZWFtKQorICAgICAgKEFzc2VydCAo
ZXFsICgtIChwb2ludC1tYXggc2NyYXRjaC1vdXRwdXQpIChwb2ludC1taW4gc2NyYXRjaC1vdXRw
dXQpKQorICAgICAgICAgICAgICAgICAgIDs7ICMncHJpbnQgYWRkcyB0d28gbmV3bGluZXMuCisg
ICAgICAgICAgICAgICAgICAgKCsgKGxlbmd0aCAocHJpbjEtdG8tc3RyaW5nIHN0cmluZykpIDIp
KQorICAgICAgICAgICAgICAiY29ycmVjdCBudW1iZXIgb2YgY2hhcnMgcHJpbnRlZCBkZXNwaXRl
IGJ5dGUgbGVuIGNoYW5nZXMiKQorICAgICAgKEFzc2VydCAoZXFsIChlbmNvZGUtY2hhciAoY2hh
ci1hZnRlciAzIHNjcmF0Y2gtb3V0cHV0KSAndWNzKQorICAgICAgICAgICAgICAgICAgICN4MDE5
MikKKyAgICAgICAgICAgICAgImZpcnN0IGNoYXJhY3RlciBwcmludGVkIGFzIGV4cGVjdGVkIGJl
Zm9yZSBieXRlIGxlbiBjaGFuZ2UiKQorICAgICAgKEFzc2VydCAoZXFsID9hIChjaGFyLWFmdGVy
ICgtIChwb2ludC1tYXggc2NyYXRjaC1vdXRwdXQpIDQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2NyYXRjaC1vdXRwdXQpKQorICAgICAgICAgICAgICAiY2hhcmFjdGVyIHBy
aW50ZWQgYXMgZXhwZWN0ZWQgYWZ0ZXIgYnl0ZSBsZW4gY2hhbmdlIikKKyAgICAgIChkZWxldGUt
cmVnaW9uIChwb2ludC1taW4gc2NyYXRjaC1vdXRwdXQpIChwb2ludC1tYXggc2NyYXRjaC1vdXRw
dXQpCisgICAgICAgICAgICAgICAgICAgICBzY3JhdGNoLW91dHB1dCkKKyAgICAgIChzZXRxIHN0
cmluZworICAgICAgICAgICAgOzsgIsaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLG
ksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSXFxhXFzG
ksaSxpLGksaSxpLGksaSxpLGksaSxpLGksaSIikKKyAgICAgICAgICAgIChkZWNvZGUtY29kaW5n
LXN0cmluZworICAgICAgICAgICAgIChjb25jYXQgIlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4
YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzYiCisgICAgICAgICAgICAgICAgICAgICAiXHg5Mlx4
YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5MiIKKyAgICAgICAg
ICAgICAgICAgICAgICJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhj
Nlx4OTJceGM2IgorICAgICAgICAgICAgICAgICAgICAgIlx4OTJceGM2XHg5Mlx4YzZceDkyXHhj
Nlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTIiCisgICAgICAgICAgICAgICAgICAgICAiXHhj
Nlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNiIKKyAgICAg
ICAgICAgICAgICAgICAgICJceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2
XHg5Mlx4YzZceDkyIgorICAgICAgICAgICAgICAgICAgICAgIlx4YzZceDkyXHhjNlx4OTJceGM2
XHg5Mlx4YzZceDkyXHg1Y1x4NjFceDVjXHhjNlx4OTIiCisgICAgICAgICAgICAgICAgICAgICAi
XHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNiIKKyAg
ICAgICAgICAgICAgICAgICAgICJceDkyXHhjNlx4OTJceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJc
eGM2XHg5Mlx4YzZceDkyIikKKyAgICAgICAgICAgICAndXRmLTgpKQorICAgICAgKENoZWNrLUVy
cm9yIGludmFsaWQtc3RhdGUgKHByaW50IHN0cmluZyAjJ3N0cmVhbSkpCisgICAgICAoZGVsZXRl
LXJlZ2lvbiAocG9pbnQtbWluIHNjcmF0Y2gtb3V0cHV0KSAocG9pbnQtbWF4IHNjcmF0Y2gtb3V0
cHV0KQorICAgICAgICAgICAgICAgICAgICAgc2NyYXRjaC1vdXRwdXQpCisKKyAgICAgIDs7ICLG
ksaSxpI7YWEiCisgICAgICAoc2V0cSBzdHJpbmcgKGRlY29kZS1jb2Rpbmctc3RyaW5nICJceGM2
XHg5Mlx4YzZceDkyXHhjNlx4OTI7YWEiICd1dGYtOCkKKyAgICAgICAgICAgIHN5bWJvbCAobWFr
ZS1zeW1ib2wgc3RyaW5nKSkKKworICAgICAgOzsgVGhpcyB3b3VsZCBjcmFzaCBwcmV2aW91c2x5
LCBzaW5jZSB0aGUgb2Zmc2V0IGluc2lkZSBwcmludF9zeW1ib2wKKyAgICAgIDs7IGJlY2FtZSBp
bnZhbGlkOgorICAgICAgKHByaW50IHN5bWJvbCAjJ3N0cmVhbTEpCisgICAgICAoQXNzZXJ0IChl
cXVhbCAoYnVmZmVyLXN0cmluZyBzY3JhdGNoLW91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAg
IChkZWNvZGUtY29kaW5nLXN0cmluZyAiIzpceGM2XHg5Mlx4YzZceDkyXHhjNlx4OTJcYmIiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3V0Zi04KSkKKyAgICAg
ICAgICAgICAgImNoZWNraW5nIHByaW50aW5nIGEgc3ltYm9sIHdpdGggcmVsb2NhdGVkIG5hbWUg
ZG9lcyBzb21ldGhpbmciKQorICAgICAgKGtpbGwtYnVmZmVyIHNjcmF0Y2gtb3V0cHV0KSkpCisK
ICAgOzs7IFRlc3Qgc3VpdGUgZm9yIHRydW5jYXRlLXN0cmluZy10by13aWR0aCwgZnJvbSBDb2xp
biBXYWx0ZXJzJyB0ZXN0cyBpbgotICA7OzsgbXVsdC11dGlsLmVsIGluIEdOVS4KKyAgOzs7IG11
bGUtdXRpbC5lbCBpbiBHTlUuCiAgIChtYWNyb2xldAogICAgICAgKCh0ZXN0LXRydW5jYXRlLXN0
cmluZy10by13aWR0aCAoJnJlc3QgdGVzdHMpCiAgICAgICAgICAobGV0ICgoZGVjb2RlLWFueS1z
dHJpbmcKCgotLSAK4oCYVHJhbWFkb2wgaXMgZnVydGhlciBmZWQgdG8gY2F0dGxlIFvigKZdIHdo
ZW4gd29ya2luZyB0aGVtIFvigKZdIChhcyBkcmFmdAphbmltYWxzKSBzbyB0aGF0IHRoZSBhbmlt
YWxzIGRvIG5vdCBnZXQgdGlyZWQgcXVpY2tseS4g4oCm4oCZCgnigJQgQW5nZXdhbmR0ZSBDaGVt
aWUsIFNlcHQgMjAxNCwgZGVzY3JpYmluZyB0aGUgc29jaWFsIGNvbnRleHQgb2YKCShzeW50aGV0
aWMpIHRyYW1hZG9sIGhhdmluZyBiZWVuIGZvdW5kIGluIENhbWVyb29uIHRyZWUgcm9vdHMuCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYRW1hY3MtUGF0
Y2hlcyBtYWlsaW5nIGxpc3QKWEVtYWNzLVBhdGNoZXNAeGVtYWNzLm9yZwpodHRwOi8vbGlzdHMu
eGVtYWNzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbWFjcy1wYXRjaGVzCg==