Li4gTWV0YWZ1bmN0aW9ucy9Ucml2aWFsLy9Ucml2aWFsIE1ldGFmdW5jdGlvbnMgU3VtbWFyeSB8MTAKClRyaXZpYWwgTWV0YWZ1bmN0aW9ucyBTdW1tYXJ5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpJbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBgYHhgYCBpcyBhbiBhcmJpdHJhcnkgY2xhc3MgdHlwZS4KCi4uIHxmaXJzdHwgcmVwbGFjZTo6IGBmaXJzdGBfCi4uIHxzZWNvbmR8IHJlcGxhY2U6OiBgc2Vjb25kYF8KLi4gfGJhc2V8IHJlcGxhY2U6OiBgYmFzZWBfCgouLiBfYGZpcnN0YDoKLi4gX2BzZWNvbmRgOgouLiBfYGJhc2VgOgoKCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBNZXRhZnVuY3Rpb24gICAgICAgICAgICAgIHwgSGVhZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCnwgYGBmaXJzdDx4Pjo6dHlwZWBgICAgICAgICB8IGBgI2luY2x1ZGUgPGJvb3N0L21wbC9wYWlyLmhwcD5gYCAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IGBgc2Vjb25kPHg+Ojp0eXBlYGAgICAgICAgfCBgYCNpbmNsdWRlIDxib29zdC9tcGwvcGFpci5ocHA+YGAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBgYGJhc2U8eD46OnR5cGVgYCAgICAgICAgIHwgYGAjaW5jbHVkZSA8Ym9vc3QvbXBsL2Jhc2UuaHBwPmBgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgoKU2VlIEFsc28KLS0tLS0tLS0KCnxNZXRhZnVuY3Rpb25zfCwgfFRyaXZpYWwgTWV0YWZ1bmN0aW9ufAoKCi4uIGNvcHlyaWdodDo6IENvcHlyaWdodCCpICAyMDAxLTIwMDkgQWxla3NleSBHdXJ0b3ZveSBhbmQgRGF2aWQgQWJyYWhhbXMKICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwogICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkK