ZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggNWJiYzg1OC4uNjYxZDllMCAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSw2NSBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4xLjQwIiBkYXRlPSIyMi4wNy4yMDA1Ij4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgorxdPMySDLzMnFztQg08zBzCDP3sXO2CDEzMnOztXAINPU0s/L1SDawcfPzM/Xy8EsINTPINcgzM/HxSDOxSDQz83F3cHMwdPYCivJzsbP0s3Bw8nRLCDT19Hawc7OwdEg0yDc1MnNINrB0NLP08/NLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgoraWYgYSBjbGllbnQgc2VudCB0b28gbG9uZyBoZWFkZXIgbGluZSwgdGhlbiB0aGUgcmVxdWVzdCBpbmZvcm1hdGlvbgorZGlkIG5vdCBsb2dnZWQgaW4gdGhlIGVycm9yIGxvZy4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQ0skgydPQz8zY2s/Xwc7JySAiWC1BY2NlbC1SZWRpcmVjdCIgzsUg0MXSxcTB18HMwdPYINPU0s/LwSAiU2V0LUNvb2tpZSI7CivP28nCy8Eg0M/R18nMwdPYINcgMC4xLjM5LgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlICJTZXQtQ29va2llIiBoZWFkZXIgbGluZSB3YXMgbm90IHRyYW5zZmVycmVkIHdoZW4gdGhlICJYLUFjY2VsLVJlZGlyZWN0Igord2FzIHVzZWQ7CitidWcgYXBwZWFyZWQgaW4gMC4xLjM5LgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK9DSySDJ09DPzNjaz9fBzsnJICJYLUFjY2VsLVJlZGlyZWN0IiDOxSDQxdLFxMHXwczB09gg09TSz8vBCisiQ29udGVudC1EaXNwb3NpdGlvbiIuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgIkNvbnRlbnQtRGlzcG9zaXRpb24iIGhlYWRlciBsaW5lIHdhcyBub3QgdHJhbnNmZXJyZWQgd2hlbgordGhlICJYLUFjY2VsLVJlZGlyZWN0IiB3YXMgdXNlZC4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQzyDTycfOwczVIFNJR1FVSVQgz9POz9fOz8og0NLPw8XT0yDOxSDawcvS2dfBzCDTz8vF1NksIM7BIMvP1M/S2cggz84g08zV28HMLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgordGhlIG1hc3RlciBwcm9jZXNzIGRpZCBub3QgY2xvc2UgdGhlIGxpc3RlbiBzb2NrZXQgb24gdGhlIFNJR1FVSVQgc2lnbmFsLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK9DP08zFIM/Czs/XzMXOydEgydPQz8zO0cXNz8fPIMbByszBIM7BIMzF1NUgzsEgTGludXggySBTb2xhcmlzCivOwdrXwc7JxSDQ0s/DxdPTwSDXIMvPzcHOxMUgcHMg09TBzs/XyczP09ggy8/Sz97FLgorPC9wYXJhPgorPHBhcmEgbGFuZz0iZW4iPgorYWZ0ZXIgb24tbGluZSB1cGdyYWRlIG9uIExpbnV4IGFuZCBTb2xhcmlzIHRoZSBwcm9jZXNzIG5hbWUKK2JlY2FtZSBzaG9ydGVyIGluIHRoZSAicHMiIGNvbW1hbmQuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPC9jaGFuZ2VzPgorCisKIDxjaGFuZ2VzIHZlcj0iMC4xLjM5IiBkYXRlPSIxNC4wNy4yMDA1Ij4KIAogPGNoYW5nZT4KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25naW54LmggYi9zcmMvY29yZS9uZ2lueC5oCmluZGV4IDRiODAwZTcuLjZmMTRiZGYgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25naW54LmgKKysrIGIvc3JjL2NvcmUvbmdpbnguaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX05HSU5YX0hfSU5DTFVERURfCiAKIAotI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMS4zOSIKKyNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjEuNDAiCiAKICNkZWZpbmUgTkdJTlhfVkFSICAgICAgICAgICJOR0lOWCIKICNkZWZpbmUgTkdYX05FV1BJRF9FWFQgICAgICIubmV3YmluIgpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHAuaCBiL3NyYy9odHRwL25neF9odHRwLmgKaW5kZXggOGFmMDZkMi4uMmE2Mjg5NiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHAuaAorKysgYi9zcmMvaHR0cC9uZ3hfaHR0cC5oCkBAIC03NCw4ICs3NCw2IEBACiB2b2lkIG5neF9odHRwX3JlcXVlc3RfZW1wdHlfaGFuZGxlcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIpOwogCiBuZ3hfaW50X3Qgbmd4X2h0dHBfc2VuZF9sYXN0KG5neF9odHRwX3JlcXVlc3RfdCAqcik7Ci12b2lkIG5neF9odHRwX2Nsb3NlX3JlcXVlc3Qobmd4X2h0dHBfcmVxdWVzdF90ICpyLCBuZ3hfaW50X3QgZXJyb3IpOwotdm9pZCBuZ3hfaHR0cF9jbG9zZV9jb25uZWN0aW9uKG5neF9jb25uZWN0aW9uX3QgKmMpOwogdV9jaGFyICogbmd4X2h0dHBfbG9nX2Vycm9yX2luZm8obmd4X2h0dHBfcmVxdWVzdF90ICpyLCB1X2NoYXIgKmJ1ZiwKICAgICBzaXplX3QgbGVuKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuYyBiL3NyYy9odHRwL25neF9odHRwX2NvcmVfbW9kdWxlLmMKaW5kZXggYWQ1MDU4NS4uY2I3YzllOCAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfY29yZV9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9jb3JlX21vZHVsZS5jCkBAIC04ODYsMTggKzg4Niw2IEBACiAKIAogbmd4X2ludF90Ci1uZ3hfaHR0cF9yZWRpcmVjdChuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIGludCByZWRpcmVjdCkKLXsKLSAgICAvKiBTVFVCICovCi0KLSAgICAvKiBsb2cgcmVxdWVzdCAqLwotCi0gICAgbmd4X2h0dHBfY2xvc2VfcmVxdWVzdChyLCAwKTsKLSAgICByZXR1cm4gTkdYX09LOwotfQotCi0KLW5neF9pbnRfdAogbmd4X2h0dHBfc2V0X2V4dGVuKG5neF9odHRwX3JlcXVlc3RfdCAqcikKIHsKICAgICBuZ3hfaW50X3QgIGk7CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKaW5kZXggZjQxYTg5MS4uNmM4YmYyZiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYwpAQCAtNDMsNiArNDMsOCBAQAogc3RhdGljIHZvaWQgbmd4X2h0dHBfa2VlcGFsaXZlX2hhbmRsZXIobmd4X2V2ZW50X3QgKmV2KTsKIHN0YXRpYyB2b2lkIG5neF9odHRwX3NldF9saW5nZXJpbmdfY2xvc2Uobmd4X2h0dHBfcmVxdWVzdF90ICpyKTsKIHN0YXRpYyB2b2lkIG5neF9odHRwX2xpbmdlcmluZ19jbG9zZV9oYW5kbGVyKG5neF9ldmVudF90ICpldik7CitzdGF0aWMgdm9pZCBuZ3hfaHR0cF9jbG9zZV9yZXF1ZXN0KG5neF9odHRwX3JlcXVlc3RfdCAqciwgbmd4X2ludF90IGVycm9yKTsKK3N0YXRpYyB2b2lkIG5neF9odHRwX2Nsb3NlX2Nvbm5lY3Rpb24obmd4X2Nvbm5lY3Rpb25fdCAqYyk7CiAKIHN0YXRpYyB1X2NoYXIgKm5neF9odHRwX2xvZ19lcnJvcihuZ3hfbG9nX3QgKmxvZywgdV9jaGFyICpidWYsIHNpemVfdCBsZW4pOwogc3RhdGljIHVfY2hhciAqbmd4X2h0dHBfbG9nX2Vycm9yX2hhbmRsZXIobmd4X2h0dHBfcmVxdWVzdF90ICpyLCB1X2NoYXIgKmJ1ZiwKQEAgLTc1Niw2ICs3NTgsMTQgQEAKICAgICAgICAgICAgICAgICBpZiAocnYgPT0gTkdYX0RFQ0xJTkVEKSB7CiAgICAgICAgICAgICAgICAgICAgIGhlYWRlci5sZW4gPSByLT5oZWFkZXJfaW4tPmVuZCAtIHItPmhlYWRlcl9uYW1lX3N0YXJ0OwogICAgICAgICAgICAgICAgICAgICBoZWFkZXIuZGF0YSA9IHItPmhlYWRlcl9uYW1lX3N0YXJ0OworCisgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXIubGVuID4gTkdYX01BWF9FUlJPUl9TVFIgLSAzMDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci5sZW4gPSBOR1hfTUFYX0VSUk9SX1NUUiAtIDMwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlci5kYXRhW2hlYWRlci5sZW4rK10gPSAnLic7CisgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuZGF0YVtoZWFkZXIubGVuKytdID0gJy4nOworICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLmRhdGFbaGVhZGVyLmxlbisrXSA9ICcuJzsKKyAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19JTkZPLCBjLT5sb2csIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudCBzZW50IHRvbyBsb25nIGhlYWRlciBsaW5lOiBcIiVWXCIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoZWFkZXIpOwpAQCAtMjM0MCw4ICsyMzUwLDcgQEAKICAgICBuZ3hfbG9nX2RlYnVnMChOR1hfTE9HX0RFQlVHX0hUVFAsIGxvZywgMCwgImh0dHAgY2xvc2UgcmVxdWVzdCIpOwogCiAgICAgaWYgKHItPnBvb2wgPT0gTlVMTCkgewotICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfQUxFUlQsIGxvZywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAiaHR0cCByZXF1ZXN0IGFscmVhZHkgY2xvc2VkIik7CisgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgbG9nLCAwLCAiaHR0cCByZXF1ZXN0IGFscmVhZHkgY2xvc2VkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIzODksOCArMjM5OCw4IEBACiAKICNpZiAoTkdYX0hUVFBfU1NMKQogCi12b2lkCi1uZ3hfc3NsX2Nsb3NlX2hhbmRsZXIobmd4X2V2ZW50X3QgKmV2KQorc3RhdGljIHZvaWQKK25neF9odHRwX3NzbF9jbG9zZV9oYW5kbGVyKG5neF9ldmVudF90ICpldikKIHsKICAgICBuZ3hfY29ubmVjdGlvbl90ICAqYzsKIApAQCAtMjQwOCw3ICsyNDE3LDcgQEAKICNlbmRpZgogCiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBuZ3hfaHR0cF9jbG9zZV9jb25uZWN0aW9uKG5neF9jb25uZWN0aW9uX3QgKmMpCiB7CiAgICAgbmd4X3Bvb2xfdCAgKnBvb2w7CkBAIC0yNDIwLDggKzI0MjksOCBAQAogCiAgICAgaWYgKGMtPnNzbCkgewogICAgICAgICBpZiAobmd4X3NzbF9zaHV0ZG93bihjKSA9PSBOR1hfQUdBSU4pIHsKLSAgICAgICAgICAgIGMtPnJlYWQtPmhhbmRsZXIgPSBuZ3hfc3NsX2Nsb3NlX2hhbmRsZXI7Ci0gICAgICAgICAgICBjLT53cml0ZS0+aGFuZGxlciA9IG5neF9zc2xfY2xvc2VfaGFuZGxlcjsKKyAgICAgICAgICAgIGMtPnJlYWQtPmhhbmRsZXIgPSBuZ3hfaHR0cF9zc2xfY2xvc2VfaGFuZGxlcjsKKyAgICAgICAgICAgIGMtPndyaXRlLT5oYW5kbGVyID0gbmd4X2h0dHBfc3NsX2Nsb3NlX2hhbmRsZXI7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfdXBzdHJlYW0uYwppbmRleCA0Yjg3N2EzLi5mNTlmZjE3IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF91cHN0cmVhbS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX3Vwc3RyZWFtLmMKQEAgLTExOCw3ICsxMTgsMTEgQEAKIAogICAgIHsgbmd4X3N0cmluZygiU2V0LUNvb2tpZSIpLAogICAgICAgICAgICAgICAgICBuZ3hfaHR0cF91cHN0cmVhbV9pZ25vcmVfaGVhZGVyX2xpbmUsIDAsCi0gICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2NvcHlfaGVhZGVyX2xpbmUsIDAsIDAgfSwKKyAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1fY29weV9oZWFkZXJfbGluZSwgMCwgMSB9LAorCisgICAgeyBuZ3hfc3RyaW5nKCJDb250ZW50LURpc3Bvc2l0aW9uIiksCisgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX2lnbm9yZV9oZWFkZXJfbGluZSwgMCwKKyAgICAgICAgICAgICAgICAgbmd4X2h0dHBfdXBzdHJlYW1fY29weV9oZWFkZXJfbGluZSwgMCwgMSB9LAogCiAgICAgeyBuZ3hfc3RyaW5nKCJDYWNoZS1Db250cm9sIiksCiAgICAgICAgICAgICAgICAgIG5neF9odHRwX3Vwc3RyZWFtX3Byb2Nlc3NfbXVsdGlfaGVhZGVyX2xpbmVzLApAQCAtMjIxLDE0ICsyMjUsMTMgQEAKICAgICB9CiAKICAgICByLT5yZWFkX2V2ZW50X2hhbmRsZXIgPSBuZ3hfaHR0cF91cHN0cmVhbV9yZF9jaGVja19icm9rZW5fY29ubmVjdGlvbjsKKyAgICByLT53cml0ZV9ldmVudF9oYW5kbGVyID0gbmd4X2h0dHBfdXBzdHJlYW1fd3JfY2hlY2tfYnJva2VuX2Nvbm5lY3Rpb247CiAgICAgCiAgICAgaWYgKG5neF9ldmVudF9mbGFncyAmIE5HWF9VU0VfQ0xFQVJfRVZFTlQpIHsKLSAgICAKLSAgICAgICAgci0+d3JpdGVfZXZlbnRfaGFuZGxlciA9IG5neF9odHRwX3Vwc3RyZWFtX3dyX2NoZWNrX2Jyb2tlbl9jb25uZWN0aW9uOwogCiAgICAgICAgIGlmICghYy0+d3JpdGUtPmFjdGl2ZSkgewotICAgICAgICAgICAgaWYgKG5neF9hZGRfZXZlbnQoYy0+d3JpdGUsIE5HWF9XUklURV9FVkVOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5HWF9DTEVBUl9FVkVOVCkgPT0gTkdYX0VSUk9SKQorICAgICAgICAgICAgaWYgKG5neF9hZGRfZXZlbnQoYy0+d3JpdGUsIE5HWF9XUklURV9FVkVOVCwgTkdYX0NMRUFSX0VWRU5UKQorICAgICAgICAgICAgICAgID09IE5HWF9FUlJPUikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBuZ3hfaHR0cF9maW5hbGl6ZV9yZXF1ZXN0KHIsIE5HWF9IVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL2ltYXAvbmd4X2ltYXBfcHJveHlfbW9kdWxlLmMgYi9zcmMvaW1hcC9uZ3hfaW1hcF9wcm94eV9tb2R1bGUuYwppbmRleCA4MWRkYjgzLi5iZTMyZTZmIDEwMDY0NAotLS0gYS9zcmMvaW1hcC9uZ3hfaW1hcF9wcm94eV9tb2R1bGUuYworKysgYi9zcmMvaW1hcC9uZ3hfaW1hcF9wcm94eV9tb2R1bGUuYwpAQCAtMjY0LDYgKzI2NCw4IEBACiAgICAgICAgIHMtPmNvbm5lY3Rpb24tPndyaXRlLT5oYW5kbGVyID0gbmd4X2ltYXBfcHJveHlfaGFuZGxlcjsKICAgICAgICAgcmV2LT5oYW5kbGVyID0gbmd4X2ltYXBfcHJveHlfaGFuZGxlcjsKICAgICAgICAgYy0+d3JpdGUtPmhhbmRsZXIgPSBuZ3hfaW1hcF9wcm94eV9oYW5kbGVyOworCisgICAgICAgIG5neF9kZWxfdGltZXIoYy0+cmVhZCk7CiAgICAgfQogfQogCkBAIC0zODQsNiArMzg2LDggQEAKICAgICAgICAgcy0+Y29ubmVjdGlvbi0+d3JpdGUtPmhhbmRsZXIgPSBuZ3hfaW1hcF9wcm94eV9oYW5kbGVyOwogICAgICAgICByZXYtPmhhbmRsZXIgPSBuZ3hfaW1hcF9wcm94eV9oYW5kbGVyOwogICAgICAgICBjLT53cml0ZS0+aGFuZGxlciA9IG5neF9pbWFwX3Byb3h5X2hhbmRsZXI7CisKKyAgICAgICAgbmd4X2RlbF90aW1lcihjLT5yZWFkKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9mcmVlYnNkX2luaXQuYyBiL3NyYy9vcy91bml4L25neF9mcmVlYnNkX2luaXQuYwppbmRleCA3ZGVmYjQ2Li5hYjAwMmFlIDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfZnJlZWJzZF9pbml0LmMKKysrIGIvc3JjL29zL3VuaXgvbmd4X2ZyZWVic2RfaW5pdC5jCkBAIC0yMzIsMjIgKzIzMiwyMiBAQAogewogICAgIG5neF91aW50X3QgIGk7CiAKLSAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfSU5GTywgbG9nLCAwLCAiT1M6ICVzICVzIiwKKyAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfTk9USUNFLCBsb2csIDAsICJPUzogJXMgJXMiLAogICAgICAgICAgICAgICAgICAgbmd4X2ZyZWVic2Rfa2Vybl9vc3R5cGUsIG5neF9mcmVlYnNkX2tlcm5fb3NyZWxlYXNlKTsKIAogI2lmZGVmIF9fRHJhZ29uRmx5X3ZlcnNpb24KLSAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfSU5GTywgbG9nLCAwLAorICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19OT1RJQ0UsIGxvZywgMCwKICAgICAgICAgICAgICAgICAgICJrZXJuLm9zcmVsZGF0ZTogJWQsIGJ1aWx0IG9uICVkIiwKICAgICAgICAgICAgICAgICAgIG5neF9mcmVlYnNkX2tlcm5fb3NyZWxkYXRlLCBfX0RyYWdvbkZseV92ZXJzaW9uKTsKICNlbHNlCi0gICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0lORk8sIGxvZywgMCwKKyAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfTk9USUNFLCBsb2csIDAsCiAgICAgICAgICAgICAgICAgICAia2Vybi5vc3JlbGRhdGU6ICVkLCBidWlsdCBvbiAlZCIsCiAgICAgICAgICAgICAgICAgICBuZ3hfZnJlZWJzZF9rZXJuX29zcmVsZGF0ZSwgX19GcmVlQlNEX3ZlcnNpb24pOwogI2VuZGlmCiAKICAgICBmb3IgKGkgPSAwOyBzeXNjdGxzW2ldLm5hbWU7IGkrKykgewogICAgICAgICBpZiAoc3lzY3Rsc1tpXS5leGlzdHMpIHsKLSAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19JTkZPLCBsb2csIDAsICIlczogJWQiLAorICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX05PVElDRSwgbG9nLCAwLCAiJXM6ICVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY3Rsc1tpXS5uYW1lLCAqc3lzY3Rsc1tpXS52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfbGludXhfaW5pdC5jIGIvc3JjL29zL3VuaXgvbmd4X2xpbnV4X2luaXQuYwppbmRleCA2Y2IyNDQ5Li41NmQ5ZjE1IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfbGludXhfaW5pdC5jCisrKyBiL3NyYy9vcy91bml4L25neF9saW51eF9pbml0LmMKQEAgLTgxLDEwICs4MSwxMCBAQAogdm9pZAogbmd4X29zX3N0YXR1cyhuZ3hfbG9nX3QgKmxvZykKIHsKLSAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfSU5GTywgbG9nLCAwLCAiT1M6ICVzICVzIiwKKyAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfTk9USUNFLCBsb2csIDAsICJPUzogJXMgJXMiLAogICAgICAgICAgICAgICAgICAgbmd4X2xpbnV4X2tlcm5fb3N0eXBlLCBuZ3hfbGludXhfa2Vybl9vc3JlbGVhc2UpOwogCi0gICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0lORk8sIGxvZywgMCwgInN5c2N0bChLRVJOX1JUU0lHTUFYKTogJWQiLAorICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19OT1RJQ0UsIGxvZywgMCwgInN5c2N0bChLRVJOX1JUU0lHTUFYKTogJWQiLAogICAgICAgICAgICAgICAgICAgbmd4X2xpbnV4X3J0c2lnX21heCk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3Bvc2l4X2luaXQuYyBiL3NyYy9vcy91bml4L25neF9wb3NpeF9pbml0LmMKaW5kZXggYTY2NTYwYS4uZDBkZTVkNSAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3Bvc2l4X2luaXQuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfcG9zaXhfaW5pdC5jCkBAIC02LDcgKzYsNiBAQAogCiAjaW5jbHVkZSA8bmd4X2NvbmZpZy5oPgogI2luY2x1ZGUgPG5neF9jb3JlLmg+Ci0jaW5jbHVkZSA8bmd4X3NldHByb2N0aXRsZS5oPgogCiAKIG5neF9pbnRfdCAgIG5neF9uY3B1OwpAQCAtMTM3LDcgKzEzNiw3IEBACiAKIHZvaWQgbmd4X3Bvc2l4X3N0YXR1cyhuZ3hfbG9nX3QgKmxvZykKIHsKLSAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfSU5GTywgbG9nLCAwLAorICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19OT1RJQ0UsIGxvZywgMCwKICAgICAgICAgICAgICAgICAgICJnZXRybGltaXQoUkxJTUlUX05PRklMRSk6ICVyOiVyIiwKICAgICAgICAgICAgICAgICAgIHJsbXQucmxpbV9jdXIsIHJsbXQucmxpbV9tYXgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3Byb2Nlc3MuaCBiL3NyYy9vcy91bml4L25neF9wcm9jZXNzLmgKaW5kZXggYjg1YzUyOC4uMjViZmE5NiAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3Byb2Nlc3MuaAorKysgYi9zcmMvb3MvdW5peC9uZ3hfcHJvY2Vzcy5oCkBAIC04LDYgKzgsOSBAQAogI2RlZmluZSBfTkdYX1BST0NFU1NfSF9JTkNMVURFRF8KIAogCisjaW5jbHVkZSA8bmd4X3NldHByb2N0aXRsZS5oPgorCisKIHR5cGVkZWYgcGlkX3QgICAgICAgbmd4X3BpZF90OwogCiB0eXBlZGVmIHZvaWQgKCpuZ3hfc3Bhd25fcHJvY19wdCkgKG5neF9jeWNsZV90ICpjeWNsZSwgdm9pZCAqZGF0YSk7CmRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfcHJvY2Vzc19jeWNsZS5jIGIvc3JjL29zL3VuaXgvbmd4X3Byb2Nlc3NfY3ljbGUuYwppbmRleCBkM2M5MmExLi45ZDA1Njk0IDEwMDY0NAotLS0gYS9zcmMvb3MvdW5peC9uZ3hfcHJvY2Vzc19jeWNsZS5jCisrKyBiL3NyYy9vcy91bml4L25neF9wcm9jZXNzX2N5Y2xlLmMKQEAgLTcsNyArNyw2IEBACiAjaW5jbHVkZSA8bmd4X2NvbmZpZy5oPgogI2luY2x1ZGUgPG5neF9jb3JlLmg+CiAjaW5jbHVkZSA8bmd4X2V2ZW50Lmg+Ci0jaW5jbHVkZSA8bmd4X3NldHByb2N0aXRsZS5oPgogI2luY2x1ZGUgPG5neF9jaGFubmVsLmg+CiAKIApAQCAtNjksMTEgKzY4LDEzIEBACiAgICAgdV9jaGFyICAgICAgICAgICAgKnA7CiAgICAgc2l6ZV90ICAgICAgICAgICAgIHNpemU7CiAgICAgbmd4X2ludF90ICAgICAgICAgIGk7CisgICAgbmd4X3VpbnRfdCAgICAgICAgIG47CiAgICAgc2lnc2V0X3QgICAgICAgICAgIHNldDsKICAgICBzdHJ1Y3QgdGltZXZhbCAgICAgdHY7CiAgICAgc3RydWN0IGl0aW1lcnZhbCAgIGl0djsKICAgICBuZ3hfdWludF90ICAgICAgICAgbGl2ZTsKICAgICBuZ3hfbXNlY190ICAgICAgICAgZGVsYXk7CisgICAgbmd4X2xpc3RlbmluZ190ICAgKmxzOwogICAgIG5neF9jb3JlX2NvbmZfdCAgICpjY2Y7CiAKICAgICBzaWdlbXB0eXNldCgmc2V0KTsKQEAgLTE3OSw2ICsxODAsMTcgQEAKICAgICAgICAgaWYgKG5neF9xdWl0KSB7CiAgICAgICAgICAgICBuZ3hfc2lnbmFsX3dvcmtlcl9wcm9jZXNzZXMoY3ljbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4X3NpZ25hbF92YWx1ZShOR1hfU0hVVERPV05fU0lHTkFMKSk7CisKKyAgICAgICAgICAgIGxzID0gY3ljbGUtPmxpc3RlbmluZy5lbHRzOworICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGN5Y2xlLT5saXN0ZW5pbmcubmVsdHM7IG4rKykgeworICAgICAgICAgICAgICAgIGlmIChuZ3hfY2xvc2Vfc29ja2V0KGxzW25dLmZkKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfRU1FUkcsIGN5Y2xlLT5sb2csIG5neF9zb2NrZXRfZXJybm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4X2Nsb3NlX3NvY2tldF9uICIgJVYgZmFpbGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHNbbl0uYWRkcl90ZXh0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjeWNsZS0+bGlzdGVuaW5nLm5lbHRzID0gMDsKKwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3NldHByb2N0aXRsZS5jIGIvc3JjL29zL3VuaXgvbmd4X3NldHByb2N0aXRsZS5jCmluZGV4IDhhZTY0M2QuLmI4MTQ2MTAgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9zZXRwcm9jdGl0bGUuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfc2V0cHJvY3RpdGxlLmMKQEAgLTYsNyArNiw2IEBACiAKICNpbmNsdWRlIDxuZ3hfY29uZmlnLmg+CiAjaW5jbHVkZSA8bmd4X2NvcmUuaD4KLSNpbmNsdWRlIDxuZ3hfc2V0cHJvY3RpdGxlLmg+CiAKIAogI2lmIChOR1hfU0VUUFJPQ1RJVExFX1VTRVNfRU5WKQpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfaW5pdC5jIGIvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfaW5pdC5jCmluZGV4IDkwODBlYjIuLjE2M2FkYWEgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9zb2xhcmlzX2luaXQuYworKysgYi9zcmMvb3MvdW5peC9uZ3hfc29sYXJpc19pbml0LmMKQEAgLTYxLDEwICs2MSwxMCBAQAogdm9pZCBuZ3hfb3Nfc3RhdHVzKG5neF9sb2dfdCAqbG9nKQogewogCi0gICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0lORk8sIGxvZywgMCwgIk9TOiAlcyAlcyIsCisgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX05PVElDRSwgbG9nLCAwLCAiT1M6ICVzICVzIiwKICAgICAgICAgICAgICAgICAgIG5neF9zb2xhcmlzX3N5c25hbWUsIG5neF9zb2xhcmlzX3JlbGVhc2UpOwogCi0gICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0lORk8sIGxvZywgMCwgInZlcnNpb246ICVzIiwKKyAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfTk9USUNFLCBsb2csIDAsICJ2ZXJzaW9uOiAlcyIsCiAgICAgICAgICAgICAgICAgICBuZ3hfc29sYXJpc192ZXJzaW9uKTsKIAogICAgIG5neF9wb3NpeF9zdGF0dXMobG9nKTsK