ZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggNjM1ODUxYi4uY2I1Y2JiNiAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSw1NyBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4zLjUyIiBkYXRlPSIwMy4wNy4yMDA2Ij4KKworPGNoYW5nZSB0eXBlPSJjaGFuZ2UiPgorPHBhcmEgbGFuZz0icnUiPgor18/T09TBzs/XzMXOzyDQz9fFxMXOycUgzc/E1czRIG5neF9odHRwX2luZGV4X21vZHVsZSDEzNEg2sHQ0s/Tz9cgIlBPU1QgLyI6CivLwcsg1yDXxdLTyckgxM8gMC4zLjQwLCDNz8TVzNgg1MXQxdLYIM7FINfZxMGj1CDP28nCy9UgNDA1LgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlIG5neF9odHRwX2luZGV4X21vZHVsZSBiZWhhdmlvciBmb3IgdGhlICJQT1NUIC8iIHJlcXVlc3RzIGlzIHJldmVydGVkCit0byB0aGUgMC4zLjQwIHZlcnNpb24gc3RhdGU6IHRoZSBtb2R1bGUgbm93IGRvZXMgbm90IHJldHVybiB0aGUgNDA1IGVycm9yLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK9DSySDJ09DPzNjaz9fBzsnJIM/H0sHOyd7FzsnRINPLz9LP09TJINLBws/eycog0NLPw8XT0yDNz8cg2sHDycvMydTY09E7CivP28nCy8Eg0M/R18nMwdPYINcgMC4zLjM3LgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlIHdvcmtlciBwcm9jZXNzIG1heSBnb3QgY2F1Z2h0IGluIGFuIGVuZGxlc3MgbG9vcCBpZiB0aGUgbGltaXQgcmF0ZSB3YXMgdXNlZDsKK2J1ZyBhcHBlYXJlZCBpbiAwLjMuMzcuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgorzc/E1czYIG5neF9odHRwX2NoYXJzZXRfbW9kdWxlINrB0MnT2dfBzCDXIMzPxyDP28nCy9UgInVua25vd24gY2hhcnNldCIsCivEwdbFIMXTzMkg0MXSxcvPxMnSz9fLwSDOxSDU0sXCz9fBzMHT2DsKK8/bycLLwSDQz9HXyczB09gg1yAwLjMuNTAuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+CituZ3hfaHR0cF9jaGFyc2V0X21vZHVsZSBsb2dnZWQgInVua25vd24gY2hhcnNldCIgYWxlcnQsIGV2ZW4gaWYgdGhlIHJlY29kaW5nCit3YXMgbm90IG5lZWRlZDsKK2J1ZyBhcHBlYXJlZCBpbiAwLjMuNTAuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgorxdPMySDXINLF2tXM2NTB1MUg2sHQ0s/TwSBQVVQg18/a19LB3cHM09Egy8/EIDQwOSwg1M8g19LFzcXOztnKIMbByswKK87FINXEwczRzNPRLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgoraWYgYSBjb2RlIHJlc3BvbnNlIG9mIHRoZSBQVVQgcmVxdWVzdCB3YXMgNDA5LCB0aGVuIGEgdGVtcG9yYXJ5IGZpbGUKK3dhcyBub3QgcmVtb3ZlZC4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8L2NoYW5nZXM+CisKKwogPGNoYW5nZXMgdmVyPSIwLjMuNTEiIGRhdGU9IjMwLjA2LjIwMDYiPgogCiA8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+CmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ2lueC5oIGIvc3JjL2NvcmUvbmdpbnguaAppbmRleCA5MWI2YWYyLi5hZDhjNzY4IDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ2lueC5oCisrKyBiL3NyYy9jb3JlL25naW54LmgKQEAgLTgsNyArOCw3IEBACiAjZGVmaW5lIF9OR0lOWF9IX0lOQ0xVREVEXwogCiAKLSNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjMuNTEiCisjZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4zLjUyIgogCiAjZGVmaW5lIE5HSU5YX1ZBUiAgICAgICAgICAiTkdJTlgiCiAjZGVmaW5lIE5HWF9PTERQSURfRVhUICAgICAiLm9sZGJpbiIKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9maWxlLmMgYi9zcmMvY29yZS9uZ3hfZmlsZS5jCmluZGV4IGMzYzQ1OTIuLjBkMDk0ZWMgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9maWxlLmMKKysrIGIvc3JjL2NvcmUvbmd4X2ZpbGUuYwpAQCAtMjU5LDYgKzI1OSwxMCBAQAogCiAgICAgcGF0aC0+bmFtZSA9IHZhbHVlWzFdOwogCisgICAgaWYgKHBhdGgtPm5hbWUuZGF0YVtwYXRoLT5uYW1lLmxlbiAtIDFdID09ICcvJykgeworICAgICAgICBwYXRoLT5uYW1lLmxlbi0tOworICAgIH0KKwogICAgIGlmIChuZ3hfY29uZl9mdWxsX25hbWUoY2YtPmN5Y2xlLCAmcGF0aC0+bmFtZSkgPT0gTkdYX0VSUk9SKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfY2hhcnNldF9maWx0ZXJfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2NoYXJzZXRfZmlsdGVyX21vZHVsZS5jCmluZGV4IGI0NjdlNGQuLjQxYTBlNTcgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfY2hhcnNldF9maWx0ZXJfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9jaGFyc2V0X2ZpbHRlcl9tb2R1bGUuYwpAQCAtMjE1LDcgKzIxNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci0+aGVhZGVyc19vdXQub3ZlcnJpZGVfY2hhcnNldC0+ZGF0YSk7CiAKICAgICAgICAgICAgIGlmIChjaGFyc2V0ID09IE5HWF9IVFRQX05PX0NIQVJTRVQpIHsKLSAgICAgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfQUxFUlQsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKKyAgICAgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfRVJSLCByLT5jb25uZWN0aW9uLT5sb2csIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBjaGFyc2V0IFwiJVZcIiB0byBvdmVycmlkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLT5oZWFkZXJzX291dC5vdmVycmlkZV9jaGFyc2V0KTsKIApAQCAtMjY5LDE4ICsyNjksOCBAQAogCiAgICAgICAgICAgICBjdHgtPmNoYXJzZXQgPSBjaGFyc2V0OwogCi0gICAgICAgICAgICBpZiAoY2hhcnNldCA9PSBOR1hfSFRUUF9OT19DSEFSU0VUKSB7Ci0gICAgICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCByLT5jb25uZWN0aW9uLT5sb2csIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBjaGFyc2V0IFwiJVZcIiBvZiBtYWluIHJlcXVlc3QiLCBtYyk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gbmd4X2h0dHBfbmV4dF9oZWFkZXJfZmlsdGVyKHIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgY2hhcnNldCA9IGN0eC0+Y2hhcnNldDsKLQotICAgICAgICBpZiAoY2hhcnNldCA9PSBOR1hfSFRUUF9OT19DSEFSU0VUKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmd4X2h0dHBfbmV4dF9oZWFkZXJfZmlsdGVyKHIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hhcnNldCA9IGN0eC0+Y2hhcnNldDsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjg5LDE2ICsyNzksNDEgQEAKICAgICBpZiAoci0+aGVhZGVyc19vdXQuY2hhcnNldC5sZW4gPT0gMCkgewogICAgICAgICBsY2YgPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX2xvY19jb25mKHIsIG5neF9odHRwX2NoYXJzZXRfZmlsdGVyX21vZHVsZSk7CiAKLSAgICAgICAgcmV0dXJuIG5neF9odHRwX2NoYXJzZXRfc2V0X2NoYXJzZXQociwgbWNmLT5jaGFyc2V0cy5lbHRzLCBjaGFyc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsY2YtPnNvdXJjZV9jaGFyc2V0KTsKKyAgICAgICAgaWYgKGNoYXJzZXQgIT0gTkdYX0hUVFBfTk9fQ0hBUlNFVCkgeworICAgICAgICAgICAgcmV0dXJuIG5neF9odHRwX2NoYXJzZXRfc2V0X2NoYXJzZXQociwgbWNmLT5jaGFyc2V0cy5lbHRzLCBjaGFyc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGNmLT5zb3VyY2VfY2hhcnNldCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGNmLT5zb3VyY2VfY2hhcnNldCA9PSBOR1hfQ09ORl9VTlNFVCkgeworICAgICAgICAgICAgcmV0dXJuIG5neF9odHRwX25leHRfaGVhZGVyX2ZpbHRlcihyKTsKKyAgICAgICAgfQorCisgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19FUlIsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAibm8gXCJjaGFyc2V0X21hcFwiIGJldHdlZW4gdGhlIGNoYXJzZXRzICIKKyAgICAgICAgICAgICAgICAgICAgICAiXCIlVlwiIGFuZCBcIiVWXCIiLAorICAgICAgICAgICAgICAgICAgICAgICZjaGFyc2V0c1tsY2YtPnNvdXJjZV9jaGFyc2V0XS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICZyLT5tYWluLT5oZWFkZXJzX291dC5jaGFyc2V0KTsKKworICAgICAgICByZXR1cm4gbmd4X2h0dHBfbmV4dF9oZWFkZXJfZmlsdGVyKHIpOwogICAgIH0KIAogICAgIHNvdXJjZV9jaGFyc2V0ID0gbmd4X2h0dHBfY2hhcnNldF9nZXRfY2hhcnNldChjaGFyc2V0cywgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci0+aGVhZGVyc19vdXQuY2hhcnNldC5kYXRhKTsKIAotICAgIGlmIChzb3VyY2VfY2hhcnNldCA9PSBOR1hfSFRUUF9OT19DSEFSU0VUKSB7Ci0gICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAotICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIHNvdXJjZSBjaGFyc2V0IFwiJVZcIiIsICZyLT5oZWFkZXJzX291dC5jaGFyc2V0KTsKKyAgICBpZiAoY2hhcnNldCA9PSBOR1hfSFRUUF9OT19DSEFSU0VUCisgICAgICAgIHx8IHNvdXJjZV9jaGFyc2V0ID09IE5HWF9IVFRQX05PX0NIQVJTRVQpCisgICAgeworICAgICAgICBpZiAoY2hhcnNldCAhPSBzb3VyY2VfY2hhcnNldAorICAgICAgICAgICAgfHwgbmd4X3N0cmNhc2VjbXAoci0+bWFpbi0+aGVhZGVyc19vdXQuY2hhcnNldC5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci0+aGVhZGVyc19vdXQuY2hhcnNldC5kYXRhKQorICAgICAgICAgICAgICAgICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19FUlIsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIFwiY2hhcnNldF9tYXBcIiBiZXR3ZWVuIHRoZSBjaGFyc2V0cyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiVWXCIgYW5kIFwiJVZcIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZyLT5oZWFkZXJzX291dC5jaGFyc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmci0+bWFpbi0+aGVhZGVyc19vdXQuY2hhcnNldCk7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmd4X2h0dHBfbmV4dF9oZWFkZXJfZmlsdGVyKHIpOwogICAgIH0KQEAgLTMwNyw3ICszMjIsNyBAQAogICAgICAgICAmJiAoY2hhcnNldHNbc291cmNlX2NoYXJzZXRdLnRhYmxlcyA9PSBOVUxMCiAgICAgICAgICAgICB8fCBjaGFyc2V0c1tzb3VyY2VfY2hhcnNldF0udGFibGVzW2NoYXJzZXRdID09IE5VTEwpKQogICAgIHsKLSAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCByLT5jb25uZWN0aW9uLT5sb2csIDAsCisgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19FUlIsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICAibm8gXCJjaGFyc2V0X21hcFwiIGJldHdlZW4gdGhlIGNoYXJzZXRzICIKICAgICAgICAgICAgICAgICAgICAgICAiXCIlVlwiIGFuZCBcIiVWXCIiLAogICAgICAgICAgICAgICAgICAgICAgICZjaGFyc2V0c1tzb3VyY2VfY2hhcnNldF0ubmFtZSwgJmNoYXJzZXRzW2NoYXJzZXRdLm5hbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9kYXZfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Rhdl9tb2R1bGUuYwppbmRleCBiNDFiZDhlLi43ZjYxNzc0IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Rhdl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Rhdl9tb2R1bGUuYwpAQCAtMjU0LDYgKzI1NCwxMiBAQAogICAgIH0KIAogICAgIGlmIChuZ3hfaXNfZGlyKCZmaSkpIHsKKyAgICAgICAgaWYgKG5neF9kZWxldGVfZmlsZSh0ZW1wLT5kYXRhKSA9PSBOR1hfRklMRV9FUlJPUikgeworICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0NSSVQsIHItPmNvbm5lY3Rpb24tPmxvZywgbmd4X2Vycm5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hfZGVsZXRlX2ZpbGVfbiAiIFwiJXNcIiBmYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLT5kYXRhKTsKKyAgICAgICAgfQorCiAgICAgICAgIG5neF9odHRwX2ZpbmFsaXplX3JlcXVlc3QociwgTkdYX0hUVFBfQ09ORkxJQ1QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjk2LDYgKzMwMiwxMiBAQAogCiAjZW5kaWYKIAorICAgIGlmIChuZ3hfZGVsZXRlX2ZpbGUodGVtcC0+ZGF0YSkgPT0gTkdYX0ZJTEVfRVJST1IpIHsKKyAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0NSSVQsIHItPmNvbm5lY3Rpb24tPmxvZywgbmd4X2Vycm5vLAorICAgICAgICAgICAgICAgICAgICAgIG5neF9kZWxldGVfZmlsZV9uICIgXCIlc1wiIGZhaWxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgdGVtcC0+ZGF0YSk7CisgICAgfQorCiAgICAgbmd4X2h0dHBfZmluYWxpemVfcmVxdWVzdChyLCBuZ3hfaHR0cF9kYXZfZXJyb3IociwgZXJyLCBOR1hfSFRUUF9DT05GTElDVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hfcmVuYW1lX2ZpbGVfbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmRhdGEpKTsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfaW5kZXhfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2luZGV4X21vZHVsZS5jCmluZGV4IGQ0YmVkNDUuLjRlZjI5MTAgMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfaW5kZXhfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9pbmRleF9tb2R1bGUuYwpAQCAtMTQzLDEwICsxNDMsNiBAQAogICAgICAgICByZXR1cm4gTkdYX0RFQ0xJTkVEOwogICAgIH0KIAotICAgIGlmICghKHItPm1ldGhvZCAmIChOR1hfSFRUUF9HRVR8TkdYX0hUVFBfSEVBRCkpKSB7Ci0gICAgICAgIHJldHVybiBOR1hfREVDTElORUQ7Ci0gICAgfQotCiAgICAgbG9nID0gci0+Y29ubmVjdGlvbi0+bG9nOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3dyaXRlX2ZpbHRlcl9tb2R1bGUuYyBiL3NyYy9odHRwL25neF9odHRwX3dyaXRlX2ZpbHRlcl9tb2R1bGUuYwppbmRleCA1ZjY3MTVjLi4zZDk5MWM3IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF93cml0ZV9maWx0ZXJfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfd3JpdGVfZmlsdGVyX21vZHVsZS5jCkBAIC0yMTUsNyArMjE1LDcgQEAKICAgICAgICAgaWYgKHRvX3NlbmQgPD0gMCkgewogICAgICAgICAgICAgYy0+d3JpdGUtPmRlbGF5ZWQgPSAxOwogICAgICAgICAgICAgbmd4X2FkZF90aW1lcihyLT5jb25uZWN0aW9uLT53cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgKG5neF9tc2VjX3QpICgtIHRvX3NlbmQgKiAxMDAwIC8gci0+bGltaXRfcmF0ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAobmd4X21zZWNfdCkgKC0gdG9fc2VuZCAqIDEwMDAgLyByLT5saW1pdF9yYXRlICsgMSkpOwogCiAgICAgICAgICAgICBjLT5idWZmZXJlZCB8PSBOR1hfSFRUUF9XUklURV9CVUZGRVJFRDsKIApAQCAtMjQ1LDcgKzI0NSw3IEBACiAgICAgICAgIHNlbnQgPSBjLT5zZW50IC0gc2VudDsKICAgICAgICAgYy0+d3JpdGUtPmRlbGF5ZWQgPSAxOwogICAgICAgICBuZ3hfYWRkX3RpbWVyKHItPmNvbm5lY3Rpb24tPndyaXRlLAotICAgICAgICAgICAgICAgICAgICAgIChuZ3hfbXNlY190KSAoc2VudCAqIDEwMDAgLyByLT5saW1pdF9yYXRlKSk7CisgICAgICAgICAgICAgICAgICAgICAgKG5neF9tc2VjX3QpIChzZW50ICogMTAwMCAvIHItPmxpbWl0X3JhdGUgKyAxKSk7CiAgICAgfQogCiAgICAgZm9yIChjbCA9IHItPm91dDsgY2wgJiYgY2wgIT0gY2hhaW47IC8qIHZvaWQgKi8pIHsK