ZGlmZiAtLWdpdCBhL3NyYy9NYWtlX2JjNS5tYWsgYi9zcmMvTWFrZV9iYzUubWFrCmluZGV4IGViMzhkZDcuLjMwZmU3MjcgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlX2JjNS5tYWsKKysrIGIvc3JjL01ha2VfYmM1Lm1hawpAQCAtNTQyLDcgKzU0Miw2IEBACiAJJChPQkpESVIpXGV4X2RvY21kLm9iaiBcCiAJJChPQkpESVIpXGV4X2V2YWwub2JqIFwKIAkkKE9CSkRJUilcZXhfZ2V0bG4ub2JqIFwKLQkkKE9CSkRJUilcZmFyc2kub2JqIFwKIAkkKE9CSkRJUilcZmlsZWlvLm9iaiBcCiAJJChPQkpESVIpXGZpbmRmaWxlLm9iaiBcCiAJJChPQkpESVIpXGZvbGQub2JqIFwKZGlmZiAtLWdpdCBhL3NyYy9NYWtlX2N5Z19taW5nLm1hayBiL3NyYy9NYWtlX2N5Z19taW5nLm1hawppbmRleCA0OGNlMzk3Li5mNmFlODUzIDEwMDY0NAotLS0gYS9zcmMvTWFrZV9jeWdfbWluZy5tYWsKKysrIGIvc3JjL01ha2VfY3lnX21pbmcubWFrCkBAIC03MTQsNyArNzE0LDYgQEAKIAkkKE9VVERJUikvZXhfZG9jbWQubyBcCiAJJChPVVRESVIpL2V4X2V2YWwubyBcCiAJJChPVVRESVIpL2V4X2dldGxuLm8gXAotCSQoT1VURElSKS9mYXJzaS5vIFwKIAkkKE9VVERJUikvZmlsZWlvLm8gXAogCSQoT1VURElSKS9maW5kZmlsZS5vIFwKIAkkKE9VVERJUikvZm9sZC5vIFwKQEAgLTEwMDUsNyArMTAwNCw3IEBACiAJJChNQUtFKSAtQyB0ZWUgY2xlYW4KIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1JTkNMID0JdmltLmggYWxsb2MuaCBhcmFiaWMuaCBhc2NpaS5oIGV4X2NtZHMuaCBmYXJzaS5oIGZlYXR1cmUuaCBnbG9iYWxzLmggXAorSU5DTCA9CXZpbS5oIGFsbG9jLmggYXJhYmljLmggYXNjaWkuaCBleF9jbWRzLmggZmVhdHVyZS5oIGdsb2JhbHMuaCBcCiAJa2V5bWFwLmggbWFjcm9zLmggb3B0aW9uLmggb3NfZG9zLmggb3Nfd2luMzIuaCBwcm90by5oIHJlZ2V4cC5oIFwKIAlzcGVsbC5oIHN0cnVjdHMuaCB0ZXJtLmggYmV2YWwuaCAkKE5CREVCVUdfSU5DTCkKIEdVSV9JTkNMID0gZ3VpLmgKZGlmZiAtLWdpdCBhL3NyYy9NYWtlX2RpY2UubWFrIGIvc3JjL01ha2VfZGljZS5tYWsKaW5kZXggZmZjZTgwNS4uMjAyNTk3NCAxMDA2NDQKLS0tIGEvc3JjL01ha2VfZGljZS5tYWsKKysrIGIvc3JjL01ha2VfZGljZS5tYWsKQEAgLTQ0LDcgKzQ0LDYgQEAKIAlleF9kb2NtZC5jIFwKIAlleF9ldmFsLmMgXAogCWV4X2dldGxuLmMgXAotCWZhcnNpLmMgXAogCWZpbGVpby5jIFwKIAlmaW5kZmlsZS5jIFwKIAlmb2xkLmMgXApAQCAtMTA0LDcgKzEwMyw2IEBACiAJby9leF9kb2NtZC5vIFwKIAlvL2V4X2V2YWwubyBcCiAJby9leF9nZXRsbi5vIFwKLQlvL2ZhcnNpLm8gXAogCW8vZmlsZWlvLm8gXAogCW8vZmluZGZpbGUubyBcCiAJby9mb2xkLm8gXApAQCAtMjAxLDggKzE5OSw2IEBACiAKIG8vZXhfZ2V0bG4ubzoJZXhfZ2V0bG4uYyAgJChTWU1TKQogCi1vL2ZhcnNpLm86CWZhcnNpLmMgICQoU1lNUykKLQogby9maWxlaW8ubzoJZmlsZWlvLmMgICQoU1lNUykKIAogby9maW5kZmlsZS5vOglmaW5kZmlsZS5jICAkKFNZTVMpCmRpZmYgLS1naXQgYS9zcmMvTWFrZV9pdmMubWFrIGIvc3JjL01ha2VfaXZjLm1hawppbmRleCBhMDJiYTk2Li4yNjM2N2UwIDEwMDY0NAotLS0gYS9zcmMvTWFrZV9pdmMubWFrCisrKyBiL3NyYy9NYWtlX2l2Yy5tYWsKQEAgLTIyOCw3ICsyMjgsNiBAQAogCSIkKElOVERJUikvZXhfZG9jbWQub2JqIiBcCiAJIiQoSU5URElSKS9leF9ldmFsLm9iaiIgXAogCSIkKElOVERJUikvZXhfZ2V0bG4ub2JqIiBcCi0JIiQoSU5URElSKS9mYXJzaS5vYmoiIFwKIAkiJChJTlRESVIpL2ZpbGVpby5vYmoiIFwKIAkiJChJTlRESVIpL2ZpbmRmaWxlLm9iaiIgXAogCSIkKElOVERJUikvZm9sZC5vYmoiIFwKQEAgLTQxMywxMCArNDEyLDYgQEAKICMgRW5kIFNvdXJjZSBGaWxlCiAjIEJlZ2luIFNvdXJjZSBGaWxlCiAKLVNPVVJDRT0uXGZhcnNpLmMKLSMgRW5kIFNvdXJjZSBGaWxlCi0jIEJlZ2luIFNvdXJjZSBGaWxlCi0KIFNPVVJDRT0uXGZpbGVpby5jCiAjIEVuZCBTb3VyY2UgRmlsZQogIyBCZWdpbiBTb3VyY2UgRmlsZQpkaWZmIC0tZ2l0IGEvc3JjL01ha2VfbWFueC5tYWsgYi9zcmMvTWFrZV9tYW54Lm1hawppbmRleCA1MzE0YTg2Li4yY2JjM2RmIDEwMDY0NAotLS0gYS9zcmMvTWFrZV9tYW54Lm1haworKysgYi9zcmMvTWFrZV9tYW54Lm1hawpAQCAtNTQsNyArNTQsNiBAQAogCWV4X2RvY21kLmMgXAogCWV4X2V2YWwuYyBcCiAJZXhfZ2V0bG4uYyBcCi0JZmFyc2kuYyBcCiAJZmlsZWlvLmMgXAogCWZpbmRmaWxlLmMgXAogCWZvbGQuYyBcCkBAIC0xMTYsNyArMTE1LDYgQEAKIAlvYmovZXhfZG9jbWQubyBcCiAJb2JqL2V4X2V2YWwubyBcCiAJb2JqL2V4X2dldGxuLm8gXAotCW9iai9mYXJzaS5vIFwKIAlvYmovZmlsZWlvLm8gXAogCW9iai9maW5kZmlsZS5vIFwKIAlvYmovZm9sZC5vIFwKQEAgLTE3Niw3ICsxNzQsNiBAQAogCXByb3RvL2V4X2RvY21kLnBybyBcCiAJcHJvdG8vZXhfZXZhbC5wcm8gXAogCXByb3RvL2V4X2dldGxuLnBybyBcCi0JcHJvdG8vZmFyc2kucHJvIFwKIAlwcm90by9maWxlaW8ucHJvIFwKIAlwcm90by9maW5kZmlsZS5wcm8gXAogCXByb3RvL2ZvbGQucHJvIFwKQEAgLTMxNyw5ICszMTQsNiBAQAogb2JqL2V4X2dldGxuLm86CWV4X2dldGxuLmMKIAkkKENDU1lNKSAkQCBleF9nZXRsbi5jCiAKLW9iai9mYXJzaS5vOglmYXJzaS5jCi0JJChDQ1NZTSkgJEAgZmFyc2kuYwotCiBvYmovZmlsZWlvLm86CWZpbGVpby5jCiAJJChDQ1NZTSkgJEAgZmlsZWlvLmMKIApkaWZmIC0tZ2l0IGEvc3JjL01ha2VfbW9ycGgubWFrIGIvc3JjL01ha2VfbW9ycGgubWFrCmluZGV4IGE2ZTBkYWUuLmFmMjMxZmIgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlX21vcnBoLm1haworKysgYi9zcmMvTWFrZV9tb3JwaC5tYWsKQEAgLTQyLDcgKzQyLDYgQEAKIAlleF9kb2NtZC5jCQkJCQkJXAogCWV4X2V2YWwuYwkJCQkJCVwKIAlleF9nZXRsbi5jCQkJCQkJXAotCWZhcnNpLmMJCQkJCQkJXAogCWZpbGVpby5jCQkJCQkJXAogCWZpbmRmaWxlLmMJCQkJCQlcCiAJZm9sZC5jCQkJCQkJCVwKZGlmZiAtLWdpdCBhL3NyYy9NYWtlX212Yy5tYWsgYi9zcmMvTWFrZV9tdmMubWFrCmluZGV4IGM5NDhmMzcuLmM4MWZiZDIgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlX212Yy5tYWsKKysrIGIvc3JjL01ha2VfbXZjLm1hawpAQCAtNjk0LDcgKzY5NCw3IEBACiAhaW5jbHVkZSBNYWtlX2FsbC5tYWsKICFpbmNsdWRlIHRlc3RkaXJcTWFrZV9hbGwubWFrCiAKLUlOQ0wgPQl2aW0uaCBhbGxvYy5oIGFyYWJpYy5oIGFzY2lpLmggZXhfY21kcy5oIGZhcnNpLmggZmVhdHVyZS5oIGdsb2JhbHMuaCBcCitJTkNMID0JdmltLmggYWxsb2MuaCBhcmFiaWMuaCBhc2NpaS5oIGV4X2NtZHMuaCBmZWF0dXJlLmggZ2xvYmFscy5oIFwKIAlrZXltYXAuaCBtYWNyb3MuaCBvcHRpb24uaCBvc19kb3MuaCBvc193aW4zMi5oIHByb3RvLmggcmVnZXhwLmggXAogCXNwZWxsLmggc3RydWN0cy5oIHRlcm0uaCBiZXZhbC5oICQoTkJERUJVR19JTkNMKQogCkBAIC03MTksNyArNzE5LDYgQEAKIAkkKE9VVERJUilcZXhfZG9jbWQub2JqIFwKIAkkKE9VVERJUilcZXhfZXZhbC5vYmogXAogCSQoT1VURElSKVxleF9nZXRsbi5vYmogXAotCSQoT1VURElSKVxmYXJzaS5vYmogXAogCSQoT1VURElSKVxmaWxlaW8ub2JqIFwKIAkkKE9VVERJUilcZmluZGZpbGUub2JqIFwKIAkkKE9VVERJUilcZm9sZC5vYmogXApAQCAtMTQwNCw4ICsxNDAzLDYgQEAKIAogJChPVVRESVIpL2V4X2dldGxuLm9iajoJJChPVVRESVIpIGV4X2dldGxuLmMgICQoSU5DTCkKIAotJChPVVRESVIpL2ZhcnNpLm9iajoJJChPVVRESVIpIGZhcnNpLmMgICQoSU5DTCkKLQogJChPVVRESVIpL2ZpbGVpby5vYmo6CSQoT1VURElSKSBmaWxlaW8uYyAgJChJTkNMKQogCiAkKE9VVERJUikvZmluZGZpbGUub2JqOgkkKE9VVERJUikgZmluZGZpbGUuYyAgJChJTkNMKQpAQCAtMTY0Niw3ICsxNjQzLDYgQEAKIAlwcm90by9leF9kb2NtZC5wcm8gXAogCXByb3RvL2V4X2V2YWwucHJvIFwKIAlwcm90by9leF9nZXRsbi5wcm8gXAotCXByb3RvL2ZhcnNpLnBybyBcCiAJcHJvdG8vZmlsZWlvLnBybyBcCiAJcHJvdG8vZmluZGZpbGUucHJvIFwKIAlwcm90by9nZXRjaGFyLnBybyBcCmRpZmYgLS1naXQgYS9zcmMvTWFrZV9zYXMubWFrIGIvc3JjL01ha2Vfc2FzLm1hawppbmRleCBkZWFhNWViLi42YmEwMGZiIDEwMDY0NAotLS0gYS9zcmMvTWFrZV9zYXMubWFrCisrKyBiL3NyYy9NYWtlX3Nhcy5tYWsKQEAgLTEwNyw3ICsxMDcsNiBAQAogCWV4X2RvY21kLmMgXAogCWV4X2V2YWwuYyBcCiAJZXhfZ2V0bG4uYyBcCi0JZmFyc2kuYyBcCiAJZmlsZWlvLmMgXAogCWZpbmRmaWxlLmMgXAogCWZvbGQuYyBcCkBAIC0xNjgsNyArMTY3LDYgQEAKIAlleF9kb2NtZC5vIFwKIAlleF9ldmFsLm8gXAogCWV4X2dldGxuLm8gXAotCWZhcnNpLm8gXAogCWZpbGVpby5vIFwKIAlmaW5kZmlsZS5vIFwKIAlmb2xkLm8gXApAQCAtMjI5LDcgKzIyNyw2IEBACiAJcHJvdG8vZXhfZG9jbWQucHJvIFwKIAlwcm90by9leF9ldmFsLnBybyBcCiAJcHJvdG8vZXhfZ2V0bG4ucHJvIFwKLQlwcm90by9mYXJzaS5wcm8gXAogCXByb3RvL2ZpbGVpby5wcm8gXAogCXByb3RvL2ZpbmRmaWxlLnBybyBcCiAJcHJvdG8vZm9sZC5wcm8gXApAQCAtMzYyLDggKzM1OSw2IEBACiBwcm90by9leF9ldmFsLnBybzoJZXhfZXZhbC5jIGV4X2NtZHMuaAogZXhfZ2V0bG4ubzoJCWV4X2dldGxuLmMKIHByb3RvL2V4X2dldGxuLnBybzoJZXhfZ2V0bG4uYwotZmFyc2kubzoJCWZhcnNpLmMKLXByb3RvL2ZhcnNpLnBybzoJZmFyc2kuYwogZmlsZWlvLm86CQlmaWxlaW8uYwogcHJvdG8vZmlsZWlvLnBybzoJZmlsZWlvLmMKIGZpbmRmaWxlLm86CQlmaW5kZmlsZS5jCmRpZmYgLS1naXQgYS9zcmMvTWFrZV92bXMubW1zIGIvc3JjL01ha2Vfdm1zLm1tcwppbmRleCA5MmY1YWIxLi5kNDBjODIwIDEwMDY0NAotLS0gYS9zcmMvTWFrZV92bXMubW1zCisrKyBiL3NyYy9NYWtlX3Ztcy5tbXMKQEAgLTIsNyArMiw3IEBACiAjIE1ha2VmaWxlIGZvciBWaW0gb24gT3BlblZNUwogIwogIyBNYWludGFpbmVyOiAgIFpvbHRhbiBBcnBhZGZmeSA8YXJwYWRmZnlAcG9sYXJob21lLmNvbT4KLSMgTGFzdCBjaGFuZ2U6ICAyMDE5IEphbiAxOAorIyBMYXN0IGNoYW5nZTogIDIwMTkgRmViIDE2CiAjCiAjIFRoaXMgaGFzIHNjcmlwdCBiZWVuIHRlc3RlZCBvbiBWTVMgNi4yIHRvIDguMiBvbiBERUMgQWxwaGEsIFZBWCBhbmQgSUE2NAogIyB3aXRoIE1NUyBhbmQgTU1LCkBAIC0zMTUsNyArMzE1LDcgQEAKIFNSQyA9CWFyYWJpYy5jIGF1dG9jbWQuYyBiZXZhbC5jIGJsb2IuYyBibG93ZmlzaC5jIGJ1ZmZlci5jIGNoYXJzZXQuYyBcCiAJY3J5cHQuYyBjcnlwdF96aXAuYyBkaWN0LmMgZGlmZi5jIGRpZ3JhcGguYyBlZGl0LmMgZXZhbC5jIGV2YWxmdW5jLmMgXAogCWV4X2NtZHMuYyBleF9jbWRzMi5jIGV4X2RvY21kLmMgZXhfZXZhbC5jIGV4X2dldGxuLmMgaWZfY3Njb3BlLmMgXAotCWlmX3hjbWRzcnYuYyBmYXJzaS5jIGZpbGVpby5jIGZpbmRmaWxlLmMgZm9sZC5jIGdldGNoYXIuYyBoYXJkY29weS5jIFwKKwlpZl94Y21kc3J2LmMgZmlsZWlvLmMgZmluZGZpbGUuYyBmb2xkLmMgZ2V0Y2hhci5jIGhhcmRjb3B5LmMgXAogCWhhc2h0YWIuYyBpbmRlbnQuYyBqc29uLmMgbGlzdC5jIG1haW4uYyBtYXJrLmMgbWVudS5jIG1ieXRlLmMgXAogCW1lbWZpbGUuYyBtZW1saW5lLmMgbWVzc2FnZS5jIG1pc2MxLmMgbWlzYzIuYyBtb3ZlLmMgbm9ybWFsLmMgb3BzLmMgXAogCW9wdGlvbi5jIHBvcHVwbW51LmMgcXVpY2tmaXguYyByZWdleHAuYyBzZWFyY2guYyBzaGEyNTYuYyBzaWduLmMgXApAQCAtMzI4LDcgKzMyOCw3IEBACiBPQkogPSAJYXJhYmljLm9iaiBhdXRvY21kLm9iaiBiZXZhbC5vYmogYmxvYi5vYmogYmxvd2Zpc2gub2JqIGJ1ZmZlci5vYmogXAogCWNoYXJzZXQub2JqIGNyeXB0Lm9iaiBjcnlwdF96aXAub2JqIGRpY3Qub2JqIGRpZmYub2JqIGRpZ3JhcGgub2JqIFwKIAllZGl0Lm9iaiBldmFsLm9iaiBldmFsZnVuYy5vYmogZXhfY21kcy5vYmogZXhfY21kczIub2JqIGV4X2RvY21kLm9iaiBcCi0JZXhfZXZhbC5vYmogZXhfZ2V0bG4ub2JqIGlmX2NzY29wZS5vYmogaWZfeGNtZHNydi5vYmogZmFyc2kub2JqIFwKKwlleF9ldmFsLm9iaiBleF9nZXRsbi5vYmogaWZfY3Njb3BlLm9iaiBpZl94Y21kc3J2Lm9iaiBcCiAJZmlsZWlvLm9iaiBmaW5kZmlsZS5vYmogZm9sZC5vYmogZ2V0Y2hhci5vYmogaGFyZGNvcHkub2JqIGhhc2h0YWIub2JqIFwKIAlpbmRlbnQub2JqIGpzb24ub2JqIGxpc3Qub2JqIG1haW4ub2JqIG1hcmsub2JqIG1lbnUub2JqIG1lbWZpbGUub2JqIFwKIAltZW1saW5lLm9iaiBtZXNzYWdlLm9iaiBtaXNjMS5vYmogbWlzYzIub2JqIG1vdmUub2JqIG1ieXRlLm9iaiBcCkBAIC01MTQsMjc5ICs1MTQsMjc4IEBACiBidWZmZXIub2JqIDogYnVmZmVyLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIGNoYXJzZXQub2JqIDogY2hhcnNldC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogY3J5cHQub2JqIDogY3J5cHQuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIFwKICBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBjcnlwdF96aXAub2JqIDogY3J5cHRfemlwLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIHN0cnVjdHMuaCBcCiAgcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBkaWN0Lm9iaiA6IGRpY3QuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIFwKICBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBkaWZmLm9iaiA6IGRpZmYuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogZGlncmFwaC5vYmogOiBkaWdyYXBoLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBlZGl0Lm9iaiA6IGVkaXQuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogZXZhbC5vYmogOiBldmFsLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmggdmVyc2lvbi5oCiBldmFsZnVuYy5vYmogOiBldmFsZnVuYy5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBzdHJ1Y3RzLmggXAogIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBleF9jbWRzLm9iaiA6IGV4X2NtZHMuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogZXhfY21kczIub2JqIDogZXhfY21kczIuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogZXhfZG9jbWQub2JqIDogZXhfZG9jbWQuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGV4X2V2YWwub2JqIDogZXhfZXZhbC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogZXhfZ2V0bG4ub2JqIDogZXhfZ2V0bG4uYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKLWZhcnNpLm9iaiA6IGZhcnNpLmMgdmltLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGZpbGVpby5vYmogOiBmaWxlaW8uYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGZpbmRmaWxlLm9iaiA6IGZpbmRmaWxlLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBmb2xkLm9iaiA6IGZvbGQuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogZ2V0Y2hhci5vYmogOiBnZXRjaGFyLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBoYXJkY29weS5vYmogOiBoYXJkY29weS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogaGFzaHRhYi5vYmogOiBoYXNodGFiLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBpZl9jc2NvcGUub2JqIDogaWZfY3Njb3BlLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGlmX2NzY29wZS5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIGlmX2NzY29wZS5oCiBpZl94Y21kc3J2Lm9iaiA6IGlmX3hjbWRzcnYuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogaWZfbXpzY2gub2JqIDogaWZfbXpzY2guYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggc3RydWN0cy5oIFwKICByZWdleHAuaCBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggaWZfbXpzY2guaCAKKyBnbG9iYWxzLmggYXJhYmljLmggaWZfbXpzY2guaCAKIGluZGVudC5vYmogOiBpbmRlbnQuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaAoganNvbi5vYmogOiBqc29uLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmggdmVyc2lvbi5oCiBsaXN0Lm9iaiA6IGxpc3QuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIFwKICBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBtYWluLm9iaiA6IG1haW4uYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKLSBhcmFiaWMuaCBmYXJzaS5jIGFyYWJpYy5jCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCisgYXJhYmljLmggYXJhYmljLmMKIG1hcmsub2JqIDogbWFyay5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiBtZW1maWxlLm9iaiA6IG1lbWZpbGUuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIG1lbWxpbmUub2JqIDogbWVtbGluZS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogbWVudS5vYmogOiBtZW51LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIG1lc3NhZ2Uub2JqIDogbWVzc2FnZS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogbWlzYzEub2JqIDogbWlzYzEuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaCB2ZXJzaW9uLmgKIG1pc2MyLm9iaiA6IG1pc2MyLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIG1vdmUub2JqIDogbW92ZS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiBtYnl0ZS5vYmogOiBtYnl0ZS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiBub3JtYWwub2JqIDogbm9ybWFsLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBvcHMub2JqIDogb3BzLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIG9wdGlvbi5vYmogOiBvcHRpb24uYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIG9zX3VuaXgub2JqIDogb3NfdW5peC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBvc191bml4eC5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIG9zX3VuaXh4LmgKIG9zX3Ztcy5vYmogOiBvc192bXMuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggb3NfdW5peHguaAorIGdsb2JhbHMuaCBhcmFiaWMuaCBvc191bml4eC5oCiBwYXRoZGVmLm9iaiA6IHBhdGhkZWYuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIHBvcHVwbW51Lm9iaiA6IHBvcHVwbW51LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBxdWlja2ZpeC5vYmogOiBxdWlja2ZpeC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogcmVnZXhwLm9iaiA6IHJlZ2V4cC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogc2NyZWVuLm9iaiA6IHNjcmVlbi5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogc2VhcmNoLm9iaiA6IHNlYXJjaC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogc2hhMjU2Lm9iaiA6IHNoYTI1Ni5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggXAogIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIHNpZ24ub2JqIDogc2lnbi5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggXAogIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIHNwZWxsLm9iaiA6IHNwZWxsLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBzcGVsbGZpbGUub2JqIDogc3BlbGxmaWxlLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIHN0cnVjdHMuaCBcCiAgcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBzeW50YXgub2JqIDogc3ludGF4LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiB0YWcub2JqIDogdGFnLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIHRlcm0ub2JqIDogdGVybS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiB0ZXJtbGliLm9iaiA6IHRlcm1saWIuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogdGV4dHByb3Aub2JqIDogdGV4dHByb3AuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogdWkub2JqIDogdWkuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogdW5kby5vYmogOiB1bmRvLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIHVzZXJmdW5jLm9iaiA6IHVzZXJmdW5jLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIHN0cnVjdHMuaCBcCiAgcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiB2ZXJzaW9uLm9iaiA6IHZlcnNpb24uYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogd2luZG93Lm9iaiA6IHdpbmRvdy5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogZ3VpLm9iaiA6IGd1aS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiBndWlfZ3RrLm9iaiA6IGd1aV9ndGsuYyBndWlfZ3RrX2YuaCB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggXAogIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBbLS5waXhtYXBzXXN0b2NrX2ljb25zLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBbLS5waXhtYXBzXXN0b2NrX2ljb25zLmgKIGd1aV9ndGtfZi5vYmogOiBndWlfZ3RrX2YuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggZ3VpX2d0a19mLmgKKyBnbG9iYWxzLmggYXJhYmljLmggZ3VpX2d0a19mLmgKIGd1aV9tb3RpZi5vYmogOiBndWlfbW90aWYuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggWy0ucGl4bWFwc11hbGVydC54cG0gWy0ucGl4bWFwc11lcnJvci54cG0gXAorIGdsb2JhbHMuaCBhcmFiaWMuaCBbLS5waXhtYXBzXWFsZXJ0LnhwbSBbLS5waXhtYXBzXWVycm9yLnhwbSBcCiAgWy0ucGl4bWFwc11nZW5lcmljLnhwbSBbLS5waXhtYXBzXWluZm8ueHBtIFstLnBpeG1hcHNdcXVlc3QueHBtCiBndWlfYXRoZW5hLm9iaiA6IGd1aV9hdGhlbmEuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggZ3VpX2F0X3NiLmgKKyBnbG9iYWxzLmggYXJhYmljLmggZ3VpX2F0X3NiLmgKIGd1aV9ndGtfeDExLm9iaiA6IGd1aV9ndGtfeDExLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGd1aV9ndGtfZi5oIFstLnJ1bnRpbWVddmltMzJ4MzIueHBtIFwKKyBnbG9iYWxzLmggYXJhYmljLmggZ3VpX2d0a19mLmggWy0ucnVudGltZV12aW0zMngzMi54cG0gXAogIFstLnJ1bnRpbWVddmltMTZ4MTYueHBtIFstLnJ1bnRpbWVddmltNDh4NDgueHBtCiBndWlfeDExLm9iaiA6IGd1aV94MTEuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggWy0ucnVudGltZV12aW0zMngzMi54cG0gXAorIGdsb2JhbHMuaCBhcmFiaWMuaCBbLS5ydW50aW1lXXZpbTMyeDMyLnhwbSBcCiAgWy0ucnVudGltZV12aW0xNngxNi54cG0gWy0ucnVudGltZV12aW00OHg0OC54cG0gWy0ucGl4bWFwc110Yl9uZXcueHBtIFwKICBbLS5waXhtYXBzXXRiX29wZW4ueHBtIFstLnBpeG1hcHNddGJfY2xvc2UueHBtIFstLnBpeG1hcHNddGJfc2F2ZS54cG0gXAogIFstLnBpeG1hcHNddGJfcHJpbnQueHBtIFstLnBpeG1hcHNddGJfY3V0LnhwbSBbLS5waXhtYXBzXXRiX2NvcHkueHBtIFwKQEAgLTgwNiw2MCArODA1LDYwIEBACiBndWlfYXRfc2Iub2JqIDogZ3VpX2F0X3NiLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGd1aV9hdF9zYi5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV9hdF9zYi5oCiBndWlfYXRfZnMub2JqIDogZ3VpX2F0X2ZzLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGd1aV9hdF9zYi5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV9hdF9zYi5oCiBwdHkub2JqIDogcHR5LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIGhhbmd1bGluLm9iaiA6IGhhbmd1bGluLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBpZl9wZXJsLm9iaiA6IFsuYXV0b11pZl9wZXJsLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBpZl9wZXJsc2Zpby5vYmogOiBpZl9wZXJsc2Zpby5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogaWZfcHl0aG9uLm9iaiA6IGlmX3B5dGhvbi5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogaWZfdGNsLm9iaiA6IGlmX3RjbC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogaWZfcnVieS5vYmogOiBpZl9ydWJ5LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIGJldmFsLm9iaiA6IGJldmFsLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGd1aV9iZXZhbC5vYmogOiBndWlfYmV2YWwuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIHdvcmtzaG9wLm9iaiA6IHdvcmtzaG9wLmMgWy5hdXRvXWNvbmZpZy5oIGludGVncmF0aW9uLmggdmltLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIFwKICByZWdleHAuaCBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oIHdvcmtzaG9wLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmggd29ya3Nob3AuaAogd3NkZWJ1Zy5vYmogOiB3c2RlYnVnLmMKIGludGVncmF0aW9uLm9iaiA6IGludGVncmF0aW9uLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGludGVncmF0aW9uLmgKKyBnbG9iYWxzLmggYXJhYmljLmggaW50ZWdyYXRpb24uaAogbmV0YmVhbnMub2JqIDogbmV0YmVhbnMuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogZ3VpX3htZGxnLm9iaiA6IGd1aV94bWRsZy5jIFsuYXV0b11jb25maWcuaCB2aW0uaCBmZWF0dXJlLmggb3NfdW5peC5oCiBndWlfeG1lYncub2JqIDogZ3VpX3htZWJ3LmMgWy5hdXRvXWNvbmZpZy5oIHZpbS5oIGZlYXR1cmUuaCBvc191bml4LmgKIHhkaWZmaS5vYmogOiBbLnhkaWZmXXhkaWZmaS5jIFsueGRpZmZdeGluY2x1ZGUuaCBbLmF1dG9dY29uZmlnLmggdmltLmggZmVhdHVyZS5oIG9zX3VuaXguaApkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCmluZGV4IDU1NzU5MDIuLmJlNDFmNzcgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZQorKysgYi9zcmMvTWFrZWZpbGUKQEAgLTQ5Miw5ICs0OTIsOSBAQAogIyBNVUxUSUJZVEUgLSBUbyBlZGl0IG11bHRpLWJ5dGUgY2hhcmFjdGVycy4KICMgVGhpcyBpcyBub3cgYWx3YXlzIGVuYWJsZWQuCiAKLSMgV2hlbiBidWlsZGluZyB3aXRoIGF0IGxlYXN0ICJiaWciIGZlYXR1cmVzLCByaWdodC1sZWZ0LCBBcmFiaWMgYW5kIEZhcnNpCisjIFdoZW4gYnVpbGRpbmcgd2l0aCBhdCBsZWFzdCAiYmlnIiBmZWF0dXJlcywgcmlnaHQtbGVmdCBhbmQgQXJhYmljCiAjIGZlYXR1cmVzIGFyZSBlbmFibGVkLiAgVXNlIHRoaXMgdG8gZGlzYWJsZSB0aGVtLgotI0NPTkZfT1BUX01VTFRJQllURSA9IC0tZGlzYWJsZS1yaWdodGxlZnQgLS1kaXNhYmxlLWZhcnNpIC0tZGlzYWJsZS1hcmFiaWMKKyNDT05GX09QVF9NVUxUSUJZVEUgPSAtLWRpc2FibGUtcmlnaHRsZWZ0IC0tZGlzYWJsZS1hcmFiaWMKIAogIyBOTFMgLSBOYXRpb25hbCBMYW5ndWFnZSBTdXBwb3J0CiAjIFVuY29tbWVudCB0aGlzIHdoZW4geW91IGRvIG5vdCB3YW50IHRvIHN1cHBvcnQgdHJhbnNsYXRlZCBtZXNzYWdlcywgZXZlbgpAQCAtMTU5MCw3ICsxNTkwLDYgQEAKIAlleF9kb2NtZC5jIFwKIAlleF9ldmFsLmMgXAogCWV4X2dldGxuLmMgXAotCWZhcnNpLmMgXAogCWZpbGVpby5jIFwKIAlmaW5kZmlsZS5jIFwKIAlmb2xkLmMgXApAQCAtMTcwNCw3ICsxNzAzLDYgQEAKIAlvYmplY3RzL2V4X2RvY21kLm8gXAogCW9iamVjdHMvZXhfZXZhbC5vIFwKIAlvYmplY3RzL2V4X2dldGxuLm8gXAotCW9iamVjdHMvZmFyc2kubyBcCiAJb2JqZWN0cy9maWxlaW8ubyBcCiAJb2JqZWN0cy9maW5kZmlsZS5vIFwKIAlvYmplY3RzL2ZvbGQubyBcCkBAIC0xODMxLDcgKzE4MjksNiBAQAogCWV4X2RvY21kLnBybyBcCiAJZXhfZXZhbC5wcm8gXAogCWV4X2dldGxuLnBybyBcCi0JZmFyc2kucHJvIFwKIAlmaWxlaW8ucHJvIFwKIAlmaW5kZmlsZS5wcm8gXAogCWZvbGQucHJvIFwKQEAgLTI5OTYsOSArMjk5Myw2IEBACiBvYmplY3RzL2V4X2dldGxuLm86IGV4X2dldGxuLmMKIAkkKENDQykgLW8gJEAgZXhfZ2V0bG4uYwogCi1vYmplY3RzL2ZhcnNpLm86IGZhcnNpLmMKLQkkKENDQykgLW8gJEAgZmFyc2kuYwotCiBvYmplY3RzL2ZpbGVpby5vOiBmaWxlaW8uYwogCSQoQ0NDKSAtbyAkQCBmaWxlaW8uYwogCkBAIC0zMzkyLDI5MCArMzM4NiwyODYgQEAKIG9iamVjdHMvYXJhYmljLm86IGFyYWJpYy5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2F1dG9jbWQubzogYXV0b2NtZC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2JldmFsLm86IGJldmFsLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvYmxvYi5vOiBibG9iLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvYmxvd2Zpc2gubzogYmxvd2Zpc2guYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9idWZmZXIubzogYnVmZmVyLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogb2JqZWN0cy9jaGFyc2V0Lm86IGNoYXJzZXQuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9jcnlwdC5vOiBjcnlwdC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2NyeXB0X3ppcC5vOiBjcnlwdF96aXAuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9kaWN0Lm86IGRpY3QuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9kaWZmLm86IGRpZmYuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggeGRpZmYveGRpZmYuaCB2aW0uaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIHhkaWZmL3hkaWZmLmggdmltLmgKIG9iamVjdHMvZGlncmFwaC5vOiBkaWdyYXBoLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvZWRpdC5vOiBlZGl0LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvZXZhbC5vOiBldmFsLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogb2JqZWN0cy9ldmFsZnVuYy5vOiBldmFsZnVuYy5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIG9iamVjdHMvZXhfY21kcy5vOiBleF9jbWRzLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogb2JqZWN0cy9leF9jbWRzMi5vOiBleF9jbWRzMi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIG9iamVjdHMvZXhfZG9jbWQubzogZXhfZG9jbWQuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggZXhfY21kaWR4cy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggZXhfY21kaWR4cy5oCiBvYmplY3RzL2V4X2V2YWwubzogZXhfZXZhbC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2V4X2dldGxuLm86IGV4X2dldGxuLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCi1vYmplY3RzL2ZhcnNpLm86IGZhcnNpLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAotIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKLSBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvZmlsZWlvLm86IGZpbGVpby5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2ZpbmRmaWxlLm86IGZpbmRmaWxlLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGxpYnZ0ZXJtL2luY2x1ZGUvdnRlcm0uaCBcCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggbGlidnRlcm0vaW5jbHVkZS92dGVybS5oIFwKICBsaWJ2dGVybS9pbmNsdWRlL3Z0ZXJtX2tleWNvZGVzLmgKIG9iamVjdHMvZm9sZC5vOiBmb2xkLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvZ2V0Y2hhci5vOiBnZXRjaGFyLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvaGFyZGNvcHkubzogaGFyZGNvcHkuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBvYmplY3RzL2hhc2h0YWIubzogaGFzaHRhYi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2lmX2NzY29wZS5vOiBpZl9jc2NvcGUuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggaWZfY3Njb3BlLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBpZl9jc2NvcGUuaAogb2JqZWN0cy9pZl94Y21kc3J2Lm86IGlmX3hjbWRzcnYuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBvYmplY3RzL2luZGVudC5vOiBpbmRlbnQuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9qc29uLm86IGpzb24uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9saXN0Lm86IGxpc3QuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9tYWluLm86IG1haW4uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9tYXJrLm86IG1hcmsuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9tZW1maWxlLm86IG1lbWZpbGUuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9tZW1saW5lLm86IG1lbWxpbmUuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9tZW51Lm86IG1lbnUuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9tZXNzYWdlLm86IG1lc3NhZ2UuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9taXNjMS5vOiBtaXNjMS5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIG9iamVjdHMvbWlzYzIubzogbWlzYzIuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9tb3ZlLm86IG1vdmUuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9tYnl0ZS5vOiBtYnl0ZS5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL25vcm1hbC5vOiBub3JtYWwuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9vcHMubzogb3BzLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvb3B0aW9uLm86IG9wdGlvbi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL29zX3VuaXgubzogb3NfdW5peC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBvc191bml4eC5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggb3NfdW5peHguaAogb2JqZWN0cy9wYXRoZGVmLm86IGF1dG8vcGF0aGRlZi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3BvcHVwbW51Lm86IHBvcHVwbW51LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvcHR5Lm86IHB0eS5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3F1aWNrZml4Lm86IHF1aWNrZml4LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvcmVnZXhwLm86IHJlZ2V4cC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCByZWdleHBfbmZhLmMKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCByZWdleHBfbmZhLmMKIG9iamVjdHMvc2NyZWVuLm86IHNjcmVlbi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3NlYXJjaC5vOiBzZWFyY2guYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9zaGEyNTYubzogc2hhMjU2LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvc2lnbi5vOiBzaWduLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvc3BlbGwubzogc3BlbGwuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9zcGVsbGZpbGUubzogc3BlbGxmaWxlLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvc3ludGF4Lm86IHN5bnRheC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3RhZy5vOiB0YWcuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy90ZXJtLm86IHRlcm0uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggbGlidnRlcm0vaW5jbHVkZS92dGVybS5oIFwKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBsaWJ2dGVybS9pbmNsdWRlL3Z0ZXJtLmggXAogIGxpYnZ0ZXJtL2luY2x1ZGUvdnRlcm1fa2V5Y29kZXMuaAogb2JqZWN0cy90ZXJtaW5hbC5vOiB0ZXJtaW5hbC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBsaWJ2dGVybS9pbmNsdWRlL3Z0ZXJtLmggXAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGxpYnZ0ZXJtL2luY2x1ZGUvdnRlcm0uaCBcCiAgbGlidnRlcm0vaW5jbHVkZS92dGVybV9rZXljb2Rlcy5oCiBvYmplY3RzL3RleHRwcm9wLm86IHRleHRwcm9wLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvdWkubzogdWkuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy91bmRvLm86IHVuZG8uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy91c2VyZnVuYy5vOiB1c2VyZnVuYy5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3ZlcnNpb24ubzogdmVyc2lvbi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIG9iamVjdHMvd2luZG93Lm86IHdpbmRvdy5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2d1aS5vOiBndWkuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9ndWlfZ3RrLm86IGd1aV9ndGsuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggZ3VpX2d0a19mLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBndWlfZ3RrX2YuaAogb2JqZWN0cy9ndWlfZ3RrX2YubzogZ3VpX2d0a19mLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGd1aV9ndGtfZi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggZ3VpX2d0a19mLmgKIG9iamVjdHMvZ3VpX21vdGlmLm86IGd1aV9tb3RpZi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBndWlfeG1lYncuaCAuLi9waXhtYXBzL2FsZXJ0LnhwbSBcCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggZ3VpX3htZWJ3LmggLi4vcGl4bWFwcy9hbGVydC54cG0gXAogIC4uL3BpeG1hcHMvZXJyb3IueHBtIC4uL3BpeG1hcHMvZ2VuZXJpYy54cG0gLi4vcGl4bWFwcy9pbmZvLnhwbSBcCiAgLi4vcGl4bWFwcy9xdWVzdC54cG0gZ3VpX3gxMV9wbS5oIC4uL3BpeG1hcHMvdGJfbmV3LnhwbSBcCiAgLi4vcGl4bWFwcy90Yl9vcGVuLnhwbSAuLi9waXhtYXBzL3RiX2Nsb3NlLnhwbSAuLi9waXhtYXBzL3RiX3NhdmUueHBtIFwKQEAgLTM2OTYsMTUgKzM2ODYsMTUgQEAKIG9iamVjdHMvZ3VpX3htZGxnLm86IGd1aV94bWRsZy5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2d1aV94bWVidy5vOiBndWlfeG1lYncuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggZ3VpX3htZWJ3cC5oIGd1aV94bWVidy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggZ3VpX3htZWJ3cC5oIGd1aV94bWVidy5oCiBvYmplY3RzL2d1aV9hdGhlbmEubzogZ3VpX2F0aGVuYS5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBndWlfYXRfc2IuaCBndWlfeDExX3BtLmggXAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV9hdF9zYi5oIGd1aV94MTFfcG0uaCBcCiAgLi4vcGl4bWFwcy90Yl9uZXcueHBtIC4uL3BpeG1hcHMvdGJfb3Blbi54cG0gLi4vcGl4bWFwcy90Yl9jbG9zZS54cG0gXAogIC4uL3BpeG1hcHMvdGJfc2F2ZS54cG0gLi4vcGl4bWFwcy90Yl9wcmludC54cG0gLi4vcGl4bWFwcy90Yl9jdXQueHBtIFwKICAuLi9waXhtYXBzL3RiX2NvcHkueHBtIC4uL3BpeG1hcHMvdGJfcGFzdGUueHBtIC4uL3BpeG1hcHMvdGJfZmluZC54cG0gXApAQCAtMzcyMyw4NSArMzcxMyw4NSBAQAogb2JqZWN0cy9ndWlfZ3RrX3gxMS5vOiBndWlfZ3RrX3gxMS5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBhdXRvL2d1aV9ndGtfZ3Jlc291cmNlcy5oIGd1aV9ndGtfZi5oIFwKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBhdXRvL2d1aV9ndGtfZ3Jlc291cmNlcy5oIGd1aV9ndGtfZi5oIFwKICAuLi9ydW50aW1lL3ZpbTMyeDMyLnhwbSAuLi9ydW50aW1lL3ZpbTE2eDE2LnhwbSAuLi9ydW50aW1lL3ZpbTQ4eDQ4LnhwbQogb2JqZWN0cy9ndWlfeDExLm86IGd1aV94MTEuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggLi4vcnVudGltZS92aW0zMngzMi54cG0gXAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIC4uL3J1bnRpbWUvdmltMzJ4MzIueHBtIFwKICAuLi9ydW50aW1lL3ZpbTE2eDE2LnhwbSAuLi9ydW50aW1lL3ZpbTQ4eDQ4LnhwbQogb2JqZWN0cy9ndWlfYXRfc2IubzogZ3VpX2F0X3NiLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGd1aV9hdF9zYi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggZ3VpX2F0X3NiLmgKIG9iamVjdHMvZ3VpX2F0X2ZzLm86IGd1aV9hdF9mcy5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBndWlfYXRfc2IuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV9hdF9zYi5oCiBvYmplY3RzL2pzb25fdGVzdC5vOiBqc29uX3Rlc3QuYyBtYWluLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGpzb24uYworIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGpzb24uYwogb2JqZWN0cy9rd29yZF90ZXN0Lm86IGt3b3JkX3Rlc3QuYyBtYWluLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIFwKICBmZWF0dXJlLmggb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBcCiAgb3B0aW9uLmggYmV2YWwuaCBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIFwKLSBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGNoYXJzZXQuYworIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGNoYXJzZXQuYwogb2JqZWN0cy9tZW1maWxlX3Rlc3QubzogbWVtZmlsZV90ZXN0LmMgbWFpbi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBcCiAgZmVhdHVyZS5oIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggXAogIG9wdGlvbi5oIGJldmFsLmggcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBcCi0gZXhfY21kcy5oIHNwZWxsLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBtZW1maWxlLmMKKyBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBtZW1maWxlLmMKIG9iamVjdHMvbWVzc2FnZV90ZXN0Lm86IG1lc3NhZ2VfdGVzdC5jIG1haW4uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggXAogIGZlYXR1cmUuaCBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIFwKICBvcHRpb24uaCBiZXZhbC5oIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggXAotIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggbWVzc2FnZS5jCisgZXhfY21kcy5oIHNwZWxsLmggcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggbWVzc2FnZS5jCiBvYmplY3RzL2hhbmd1bGluLm86IGhhbmd1bGluLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvaWZfbHVhLm86IGlmX2x1YS5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2lmX216c2NoLm86IGlmX216c2NoLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGlmX216c2NoLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBpZl9tenNjaC5oCiBvYmplY3RzL2lmX3BlcmwubzogYXV0by9pZl9wZXJsLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvaWZfcGVybHNmaW8ubzogaWZfcGVybHNmaW8uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9pZl9weXRob24ubzogaWZfcHl0aG9uLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGlmX3B5X2JvdGguaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGlmX3B5X2JvdGguaAogb2JqZWN0cy9pZl9weXRob24zLm86IGlmX3B5dGhvbjMuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggaWZfcHlfYm90aC5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggaWZfcHlfYm90aC5oCiBvYmplY3RzL2lmX3RjbC5vOiBpZl90Y2wuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9pZl9ydWJ5Lm86IGlmX3J1YnkuYyBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggdmltLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBvYmplY3RzL2d1aV9iZXZhbC5vOiBndWlfYmV2YWwuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9uZXRiZWFucy5vOiBuZXRiZWFucy5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIG9iamVjdHMvY2hhbm5lbC5vOiBjaGFubmVsLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvZ3VpX2d0a19ncmVzb3VyY2VzLm86IGF1dG8vZ3VpX2d0a19ncmVzb3VyY2VzLmMKIG9iamVjdHMvZW5jb2RpbmcubzogbGlidnRlcm0vc3JjL2VuY29kaW5nLmMgbGlidnRlcm0vc3JjL3Z0ZXJtX2ludGVybmFsLmggXAogIGxpYnZ0ZXJtL2luY2x1ZGUvdnRlcm0uaCBsaWJ2dGVybS9pbmNsdWRlL3Z0ZXJtX2tleWNvZGVzLmggXApAQCAtMzgzMyw3ICszODIzLDcgQEAKICBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIHByb3RvL2d1aV9iZXZhbC5wcm8gXAogIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIFwKICBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIGdsb2JhbHMuaCBcCi0gZmFyc2kuaCBhcmFiaWMuaCB4ZGlmZi94dHlwZXMuaCB4ZGlmZi94dXRpbHMuaCBcCisgYXJhYmljLmggeGRpZmYveHR5cGVzLmggeGRpZmYveHV0aWxzLmggXAogIHhkaWZmL3hwcmVwYXJlLmggeGRpZmYveGRpZmZpLmggeGRpZmYveGVtaXQuaAogb2JqZWN0cy94ZW1pdC5vOiB4ZGlmZi94ZW1pdC5jIHhkaWZmL3hpbmNsdWRlLmggYXV0by9jb25maWcuaCBcCiAgeGRpZmYveG1hY3Jvcy5oIHhkaWZmL3hkaWZmLmggdmltLmggcHJvdG9kZWYuaCBcCkBAIC0zODQyLDcgKzM4MzIsNyBAQAogIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggcHJvdG8vZ3VpX2JldmFsLnBybyBcCiAgc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggXAogIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggZ2xvYmFscy5oIFwKLSBmYXJzaS5oIGFyYWJpYy5oIHhkaWZmL3h0eXBlcy5oIHhkaWZmL3h1dGlscy5oIFwKKyBhcmFiaWMuaCB4ZGlmZi94dHlwZXMuaCB4ZGlmZi94dXRpbHMuaCBcCiAgeGRpZmYveHByZXBhcmUuaCB4ZGlmZi94ZGlmZmkuaCB4ZGlmZi94ZW1pdC5oCiBvYmplY3RzL3hwcmVwYXJlLm86IHhkaWZmL3hwcmVwYXJlLmMgeGRpZmYveGluY2x1ZGUuaCBhdXRvL2NvbmZpZy5oIFwKICB4ZGlmZi94bWFjcm9zLmggeGRpZmYveGRpZmYuaCB2aW0uaCBwcm90b2RlZi5oIFwKQEAgLTM4NTEsNyArMzg0MSw3IEBACiAgbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBwcm90by9ndWlfYmV2YWwucHJvIFwKICBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBcCiAgZXhfY21kcy5oIHNwZWxsLmggcHJvdG8uaCBnbG9iYWxzLmggXAotIGZhcnNpLmggYXJhYmljLmggeGRpZmYveHR5cGVzLmggeGRpZmYveHV0aWxzLmggXAorIGFyYWJpYy5oIHhkaWZmL3h0eXBlcy5oIHhkaWZmL3h1dGlscy5oIFwKICB4ZGlmZi94cHJlcGFyZS5oIHhkaWZmL3hkaWZmaS5oIHhkaWZmL3hlbWl0LmgKIG9iamVjdHMveHV0aWxzLm86IHhkaWZmL3h1dGlscy5jIHhkaWZmL3hpbmNsdWRlLmggYXV0by9jb25maWcuaCBcCiAgeGRpZmYveG1hY3Jvcy5oIHhkaWZmL3hkaWZmLmggdmltLmggcHJvdG9kZWYuaCBcCkBAIC0zODYwLDcgKzM4NTAsNyBAQAogIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggcHJvdG8vZ3VpX2JldmFsLnBybyBcCiAgc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggXAogIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggZ2xvYmFscy5oIFwKLSBmYXJzaS5oIGFyYWJpYy5oIHhkaWZmL3h0eXBlcy5oIHhkaWZmL3h1dGlscy5oIFwKKyBhcmFiaWMuaCB4ZGlmZi94dHlwZXMuaCB4ZGlmZi94dXRpbHMuaCBcCiAgeGRpZmYveHByZXBhcmUuaCB4ZGlmZi94ZGlmZmkuaCB4ZGlmZi94ZW1pdC5oCiBvYmplY3RzL3hoaXN0b2dyYW0ubzogeGRpZmYveGhpc3RvZ3JhbS5jIHhkaWZmL3hpbmNsdWRlLmggYXV0by9jb25maWcuaCBcCiAgeGRpZmYveG1hY3Jvcy5oIHhkaWZmL3hkaWZmLmggdmltLmggcHJvdG9kZWYuaCBcCkBAIC0zODY5LDcgKzM4NTksNyBAQAogIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggcHJvdG8vZ3VpX2JldmFsLnBybyBcCiAgc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggXAogIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggZ2xvYmFscy5oIFwKLSBmYXJzaS5oIGFyYWJpYy5oIHhkaWZmL3h0eXBlcy5oIHhkaWZmL3h1dGlscy5oIFwKKyBhcmFiaWMuaCB4ZGlmZi94dHlwZXMuaCB4ZGlmZi94dXRpbHMuaCBcCiAgeGRpZmYveHByZXBhcmUuaCB4ZGlmZi94ZGlmZmkuaCB4ZGlmZi94ZW1pdC5oCiBvYmplY3RzL3hwYXRpZW5jZS5vOiB4ZGlmZi94cGF0aWVuY2UuYyB4ZGlmZi94aW5jbHVkZS5oIGF1dG8vY29uZmlnLmggXAogIHhkaWZmL3htYWNyb3MuaCB4ZGlmZi94ZGlmZi5oIHZpbS5oIHByb3RvZGVmLmggXApAQCAtMzg3OCw1ICszODY4LDUgQEAKICBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIHByb3RvL2d1aV9iZXZhbC5wcm8gXAogIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIFwKICBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIGdsb2JhbHMuaCBcCi0gZmFyc2kuaCBhcmFiaWMuaCB4ZGlmZi94dHlwZXMuaCB4ZGlmZi94dXRpbHMuaCBcCisgYXJhYmljLmggeGRpZmYveHR5cGVzLmggeGRpZmYveHV0aWxzLmggXAogIHhkaWZmL3hwcmVwYXJlLmggeGRpZmYveGRpZmZpLmggeGRpZmYveGVtaXQuaApkaWZmIC0tZ2l0IGEvc3JjL2F1dG8vY29uZmlndXJlIGIvc3JjL2F1dG8vY29uZmlndXJlCmluZGV4IDgwNTJjZWIuLmRiM2UzYjEgMTAwNzU1Ci0tLSBhL3NyYy9hdXRvL2NvbmZpZ3VyZQorKysgYi9zcmMvYXV0by9jb25maWd1cmUKQEAgLTE0OTgsNyArMTQ5OCw3IEBACiAgIC0tZW5hYmxlLW11bHRpYnl0ZSAgICAgIEluY2x1ZGUgbXVsdGlieXRlIGVkaXRpbmcgc3VwcG9ydC4KICAgLS1kaXNhYmxlLXJpZ2h0bGVmdCAgICAgRG8gbm90IGluY2x1ZGUgUmlnaHQtdG8tTGVmdCBsYW5ndWFnZSBzdXBwb3J0LgogICAtLWRpc2FibGUtYXJhYmljICAgICAgICBEbyBub3QgaW5jbHVkZSBBcmFiaWMgbGFuZ3VhZ2Ugc3VwcG9ydC4KLSAgLS1kaXNhYmxlLWZhcnNpICAgICAgICAgRG8gbm90IGluY2x1ZGUgRmFyc2kgbGFuZ3VhZ2Ugc3VwcG9ydC4KKyAgLS1kaXNhYmxlLWZhcnNpICAgICAgICAgRGVwcmVjYXRlZC4KICAgLS1lbmFibGUtaGFuZ3VsaW5wdXQgICAgSW5jbHVkZSBIYW5ndWwgaW5wdXQgc3VwcG9ydC4KICAgLS1lbmFibGUteGltICAgICAgICAgICAgSW5jbHVkZSBYSU0gaW5wdXQgc3VwcG9ydC4KICAgLS1lbmFibGUtZm9udHNldCAgICAgICAgSW5jbHVkZSBYIGZvbnRzZXQgb3V0cHV0IHN1cHBvcnQuCkBAIC03OTgwLDI0ICs3OTgwLDExIEBACiAKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgLS1kaXNhYmxlLWZhcnNpIGFyZ3VtZW50IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIC0tZGlzYWJsZS1mYXJzaSBhcmd1bWVudC4uLiAiID4mNjsgfQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWZhcnNpIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX2ZhcnNpK3NldH0iID0gc2V0OyB0aGVuIDoKICAgZW5hYmxldmFsPSRlbmFibGVfZmFyc2k7Ci1lbHNlCi0gIGVuYWJsZV9mYXJzaT0ieWVzIgogZmkKIAotaWYgdGVzdCAiJGVuYWJsZV9mYXJzaSIgPSAieWVzIjsgdGhlbgotCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZWxzZQotCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0JJGFzX2VjaG8gIiNkZWZpbmUgRElTQUJMRV9GQVJTSSAxIiA+PmNvbmZkZWZzLmgKLQotZmkKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyAtLWVuYWJsZS1oYW5ndWxpbnB1dCBhcmd1bWVudCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyAtLWVuYWJsZS1oYW5ndWxpbnB1dCBhcmd1bWVudC4uLiAiID4mNjsgfQpkaWZmIC0tZ2l0IGEvc3JjL2NoYXJzZXQuYyBiL3NyYy9jaGFyc2V0LmMKaW5kZXggNWIwOTFlYy4uMWQ2NmQ2MSAxMDA2NDQKLS0tIGEvc3JjL2NoYXJzZXQuYworKysgYi9zcmMvY2hhcnNldC5jCkBAIC05OCwxMyArOTgsNiBAQAogCXdoaWxlIChjIDw9ICd+JykKICNlbmRpZgogCSAgICBnX2NoYXJ0YWJbYysrXSA9IDEgKyBDVF9QUklOVF9DSEFSOwotI2lmZGVmIEZFQVRfRktNQVAKLQlpZiAocF9hbHRrZXltYXApCi0JewotCSAgICB3aGlsZSAoYyA8IFlFKQotCQlnX2NoYXJ0YWJbYysrXSA9IDEgKyBDVF9QUklOVF9DSEFSOwotCX0KLSNlbmRpZgogCXdoaWxlIChjIDwgMjU2KQogCXsKIAkgICAgLyogVVRGLTg6IGJ5dGVzIDB4YTAgLSAweGZmIGFyZSBwcmludGFibGUgKGxhdGluMSkgKi8KQEAgLTIxOCwxMSArMjExLDcgQEAKIAkJLyogVXNlIHRoZSBNQl8gZnVuY3Rpb25zIGhlcmUsIGJlY2F1c2UgaXNhbHBoYSgpIGRvZXNuJ3QKIAkJICogd29yayBwcm9wZXJseSB3aGVuICdlbmNvZGluZycgaXMgImxhdGluMSIgYW5kIHRoZSBsb2NhbGUgaXMKIAkJICogIkMiLiAgKi8KLQkJaWYgKCFkb19pc2FscGhhIHx8IE1CX0lTTE9XRVIoYykgfHwgTUJfSVNVUFBFUihjKQotI2lmZGVmIEZFQVRfRktNQVAKLQkJCXx8IChwX2FsdGtleW1hcCAmJiAoRl9pc2FscGhhKGMpIHx8IEZfaXNkaWdpdChjKSkpCi0jZW5kaWYKLQkJCSAgICApCisJCWlmICghZG9faXNhbHBoYSB8fCBNQl9JU0xPV0VSKGMpIHx8IE1CX0lTVVBQRVIoYykpCiAJCXsKIAkJICAgIGlmIChpID09IDApCQkJLyogKHJlKXNldCBJRCBmbGFnICovCiAJCSAgICB7CkBAIC0yMzcsMTAgKzIyNiw2IEBACiAjaWZuZGVmIEVCQ0RJQwogCQkJCSAgICB8fCBjID4gJ34nCiAjZW5kaWYKLSNpZmRlZiBGRUFUX0ZLTUFQCi0JCQkJICAgIHx8IChwX2FsdGtleW1hcAotCQkJCQkmJiAoRl9pc2FscGhhKGMpIHx8IEZfaXNkaWdpdChjKSkpCi0jZW5kaWYKIAkJCQkvLyBGb3IgZG91YmxlLWJ5dGUgd2Uga2VlcCB0aGUgY2VsbCB3aWR0aCwgc28KIAkJCQkvLyB0aGF0IHdlIGNhbiBkZXRlY3QgaXQgZnJvbSB0aGUgZmlyc3QgYnl0ZS4KIAkJCSAgICApICYmICEoZW5jX2RiY3MgJiYgTUJfQllURTJMRU4oYykgPT0gMikpCkBAIC01NDAsOSArNTI1LDYgQEAKICNlbHNlCiAJCSAgICAoYyA+PSAnICcgJiYgYyA8PSAnficpCiAjZW5kaWYKLSNpZmRlZiBGRUFUX0ZLTUFQCi0JCQl8fCAocF9hbHRrZXltYXAgJiYgRl9pc2NoYXIoYykpCi0jZW5kaWYKIAkJKSkgfHwgKGMgPCAyNTYgJiYgdmltX2lzcHJpbnRjX3N0cmljdChjKSkpCiAgICAgewogCS8qIHByaW50YWJsZSBjaGFyYWN0ZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9jb25maWcuaC5pbiBiL3NyYy9jb25maWcuaC5pbgppbmRleCBkMWFhZjcwLi43ZmU2NWRlIDEwMDY0NAotLS0gYS9zcmMvY29uZmlnLmguaW4KKysrIGIvc3JjL2NvbmZpZy5oLmluCkBAIC0zOTEsOSArMzkxLDYgQEAKIC8qIERlZmluZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHJpZ2h0LWxlZnQgc3VwcG9ydC4gKi8KICN1bmRlZiBESVNBQkxFX1JJR0hUTEVGVAogCi0vKiBEZWZpbmUgaWYgeW91IGRvbid0IHdhbnQgdG8gaW5jbHVkZSBGYXJzaSBzdXBwb3J0LiAqLwotI3VuZGVmIERJU0FCTEVfRkFSU0kKLQogLyogRGVmaW5lIGlmIHlvdSBkb24ndCB3YW50IHRvIGluY2x1ZGUgQXJhYmljIHN1cHBvcnQuICovCiAjdW5kZWYgRElTQUJMRV9BUkFCSUMKIApkaWZmIC0tZ2l0IGEvc3JjL2NvbmZpZ3VyZS5hYyBiL3NyYy9jb25maWd1cmUuYWMKaW5kZXggMmI3NzI1Yi4uMmQ0MDliMyAxMDA2NDQKLS0tIGEvc3JjL2NvbmZpZ3VyZS5hYworKysgYi9zcmMvY29uZmlndXJlLmFjCkBAIC0yMTU1LDE4ICsyMTU1LDkgQEAKIAlBQ19ERUZJTkUoRElTQUJMRV9BUkFCSUMpCiBmaQogCi1kbmwgRmFyc2kgbGFuZ3VhZ2Ugc3VwcG9ydCBmb3IgdmltIHdpbGwgYmUgaW5jbHVkZWQgd2l0aCBiaWcgZmVhdHVyZXMsCi1kbmwgdW5sZXNzIEVOQUJMRV9GQVJTSSBpcyB1bmRlZmluZWQuCi1BQ19NU0dfQ0hFQ0tJTkcoLS1kaXNhYmxlLWZhcnNpIGFyZ3VtZW50KQorZG5sIEZhcnNpIGxhbmd1YWdlIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZCwgaWdub3JlIC0tZGlzYWJsZS1mYXJzaQogQUNfQVJHX0VOQUJMRShmYXJzaSwKLQlbICAtLWRpc2FibGUtZmFyc2kgICAgICAgICBEbyBub3QgaW5jbHVkZSBGYXJzaSBsYW5ndWFnZSBzdXBwb3J0Ll0sCi0JLCBbZW5hYmxlX2ZhcnNpPSJ5ZXMiXSkKLWlmIHRlc3QgIiRlbmFibGVfZmFyc2kiID0gInllcyI7IHRoZW4KLQlBQ19NU0dfUkVTVUxUKG5vKQotZWxzZQotCUFDX01TR19SRVNVTFQoeWVzKQotCUFDX0RFRklORShESVNBQkxFX0ZBUlNJKQotZmkKKwlbICAtLWRpc2FibGUtZmFyc2kgICAgICAgICBEZXByZWNhdGVkLl0sLCkKIAogQUNfTVNHX0NIRUNLSU5HKC0tZW5hYmxlLWhhbmd1bGlucHV0IGFyZ3VtZW50KQogQUNfQVJHX0VOQUJMRShoYW5ndWxpbnB1dCwKZGlmZiAtLWdpdCBhL3NyYy9lZGl0LmMgYi9zcmMvZWRpdC5jCmluZGV4IDA0MjgyNmEuLjYyZmYwM2QgMTAwNjQ0Ci0tLSBhL3NyYy9lZGl0LmMKKysrIGIvc3JjL2VkaXQuYwpAQCAtNDY3LDE1ICs0NjcsNiBAQAogCiAgICAgaWYgKGNtZGNoYXIgPT0gJ1InKQogICAgIHsKLSNpZmRlZiBGRUFUX0ZLTUFQCi0JaWYgKHBfZmttYXAgJiYgcF9yaSkKLQl7Ci0JICAgIGJlZXBfZmx1c2goKTsKLQkgICAgZW1zZyhmYXJzaV90ZXh0XzMpOwkgICAgLyogZW5jb2RlZCBpbiBGYXJzaSAqLwotCSAgICBTdGF0ZSA9IElOU0VSVDsKLQl9Ci0JZWxzZQotI2VuZGlmCiAJU3RhdGUgPSBSRVBMQUNFOwogICAgIH0KICAgICBlbHNlIGlmIChjbWRjaGFyID09ICdWJyB8fCBjbWRjaGFyID09ICd2JykKQEAgLTgxMiwxMCArODAzLDYgQEAKIAlpZiAocF9oa21hcCAmJiBLZXlUeXBlZCkKIAkgICAgYyA9IGhrbWFwKGMpOwkJLyogSGVicmV3IG1vZGUgbWFwcGluZyAqLwogI2VuZGlmCi0jaWZkZWYgRkVBVF9GS01BUAotCWlmIChwX2ZrbWFwICYmIEtleVR5cGVkKQotCSAgICBjID0gZmttYXAoYyk7CQkvKiBGYXJzaSBtb2RlIG1hcHBpbmcgKi8KLSNlbmRpZgogCiAjaWZkZWYgRkVBVF9JTlNfRVhQQU5ECiAJLyoKQEAgLTYyODEsOSArNjI2OCw2IEBACiAJCSYmICFJU1NQRUNJQUwoYykKIAkJJiYgKCFoYXNfbWJ5dGUgfHwgTUJfQllURTJMRU5fQ0hFQ0soYykgPT0gMSkKIAkJJiYgaSA8IElOUFVUX0JVRkxFTgotIyBpZmRlZiBGRUFUX0ZLTUFQCi0JCSYmICEocF9ma21hcCAmJiBLZXlUeXBlZCkgLyogRmFyc2kgbW9kZSBtYXBwaW5nIG1vdmVzIGN1cnNvciAqLwotIyBlbmRpZgogCQkmJiAodGV4dHdpZHRoID09IDAKIAkJICAgIHx8ICh2aXJ0Y29sICs9IGJ5dGUyY2VsbHMoYnVmW2kgLSAxXSkpIDwgKGNvbG5yX1QpdGV4dHdpZHRoKQogCQkmJiAhKCFub19hYmJyICYmICF2aW1faXN3b3JkYyhjKSAmJiB2aW1faXN3b3JkYyhidWZbaSAtIDFdKSkpCkBAIC04NDA2LDIzICs4MzkwLDcgQEAKICAgICB9CiAgICAgZWxzZQogCXJldmluc19zY29sID0gLTE7Ci0jaWZkZWYgRkVBVF9GS01BUAotICAgIGlmIChwX2FsdGtleW1hcCkKLSAgICB7Ci0JLyoKLQkgKiB0byBiZSBjb25zaXN0ZW50IGFsc28gZm9yIHJlZG8gY29tbWFuZCwgdXNpbmcgJy4nCi0JICogc2V0IGFycm93X3VzZWQgdG8gdHJ1ZSBhbmQgc3RvcCBpdCAtIGNhdXNpbmcgdG8gcmVkbwotCSAqIGNoYXJhY3RlcnMgZW50ZXJlZCBpbiBvbmUgbW9kZSAobm9ybWFsL3JldmVyc2UgaW5zZXJ0KS4KLQkgKi8KLQlhcnJvd191c2VkID0gVFJVRTsKLQkodm9pZClzdG9wX2Fycm93KCk7Ci0JcF9ma21hcCA9IGN1cndpbi0+d19wX3JsIF4gcF9yaTsKLQlpZiAocF9ma21hcCAmJiBwX3JpKQotCSAgICBTdGF0ZSA9IElOU0VSVDsKLSAgICB9Ci0gICAgZWxzZQotI2VuZGlmCi0JcF9oa21hcCA9IGN1cndpbi0+d19wX3JsIF4gcF9yaTsgICAgLyogYmUgY29uc2lzdGVudCEgKi8KKyAgICBwX2hrbWFwID0gY3Vyd2luLT53X3BfcmwgXiBwX3JpOyAgICAvLyBiZSBjb25zaXN0ZW50IQogICAgIHNob3dtb2RlKCk7CiB9CiAjZW5kaWYKQEAgLTg0ODgsMjEgKzg0NTYsMTIgQEAKICAgICBzdGF0aWMgdm9pZAogaW5zX2luc2VydChpbnQgcmVwbGFjZVN0YXRlKQogewotI2lmZGVmIEZFQVRfRktNQVAKLSAgICBpZiAocF9ma21hcCAmJiBwX3JpKQotICAgIHsKLQliZWVwX2ZsdXNoKCk7Ci0JZW1zZyhmYXJzaV90ZXh0XzMpOwkvKiBlbmNvZGVkIGluIEZhcnNpICovCi0JcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0jIGlmZGVmIEZFQVRfRVZBTAorI2lmZGVmIEZFQVRfRVZBTAogICAgIHNldF92aW1fdmFyX3N0cmluZyhWVl9JTlNFUlRNT0RFLAogCQkgICAoY2hhcl91ICopKChTdGF0ZSAmIFJFUExBQ0VfRkxBRykgPyAiaSIKIAkJICAgICAgICAgIDogcmVwbGFjZVN0YXRlID09IFZSRVBMQUNFID8gInYiCiAJCQkJCQkgICAgIDogInIiKSwgMSk7Ci0jIGVuZGlmCisjZW5kaWYKICAgICBpbnNfYXBwbHlfYXV0b2NtZHMoRVZFTlRfSU5TRVJUQ0hBTkdFKTsKICAgICBpZiAoU3RhdGUgJiBSRVBMQUNFX0ZMQUcpCiAJU3RhdGUgPSBJTlNFUlQgfCAoU3RhdGUgJiBMQU5HTUFQKTsKQEAgLTk5MTYsMTAgKzk4NzUsNiBAQAogCWNvbGFkdmFuY2UoZ2V0dmlzY29sKCkpOwogCiAjaWZkZWYgRkVBVF9SSUdIVExFRlQKLSMgaWZkZWYgRkVBVF9GS01BUAotICAgIGlmIChwX2FsdGtleW1hcCAmJiBwX2ZrbWFwKQotCWZrbWFwKE5MKTsKLSMgZW5kaWYKICAgICAvKiBOTCBpbiByZXZlcnNlIGluc2VydCB3aWxsIGFsd2F5cyBzdGFydCBpbiB0aGUgZW5kIG9mCiAgICAgICogY3VycmVudCBsaW5lLiAqLwogICAgIGlmIChyZXZpbnNfb24pCmRpZmYgLS1naXQgYS9zcmMvZXZhbGZ1bmMuYyBiL3NyYy9ldmFsZnVuYy5jCmluZGV4IGYxY2I5ZGMuLmU5ZjYzNDIgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsZnVuYy5jCisrKyBiL3NyYy9ldmFsZnVuYy5jCkBAIC02MjY4LDkgKzYyNjgsNiBAQAogI2lmZGVmIEZFQVRfU0VBUkNIX0VYVFJBCiAJImV4dHJhX3NlYXJjaCIsCiAjZW5kaWYKLSNpZmRlZiBGRUFUX0ZLTUFQCi0JImZhcnNpIiwKLSNlbmRpZgogI2lmZGVmIEZFQVRfU0VBUkNIUEFUSAogCSJmaWxlX2luX3BhdGgiLAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvZXhfY21kcy5jIGIvc3JjL2V4X2NtZHMuYwppbmRleCBlOWZhOTRmLi43OWI5YmMxIDEwMDY0NAotLS0gYS9zcmMvZXhfY21kcy5jCisrKyBiL3NyYy9leF9jbWRzLmMKQEAgLTQ5MTEsMTAgKzQ5MTEsNiBAQAogCX0KIAllbHNlCQkvKiBmaW5kIHRoZSBlbmQgb2YgdGhlIHJlZ2V4cCAqLwogCXsKLSNpZmRlZiBGRUFUX0ZLTUFQCS8qIHJldmVyc2UgdGhlIGZsb3cgb2YgdGhlIEZhcnNpIGNoYXJhY3RlcnMgKi8KLQkgICAgaWYgKHBfYWx0a2V5bWFwICYmIGN1cndpbi0+d19wX3JsKQotCQlsckZfc3ViKGNtZCk7Ci0jZW5kaWYKIAkgICAgd2hpY2hfcGF0ID0gUkVfTEFTVDsJICAgIC8qIHVzZSBsYXN0IHVzZWQgcmVnZXhwICovCiAJICAgIGRlbGltaXRlciA9ICpjbWQrKzsJCSAgICAvKiByZW1lbWJlciBkZWxpbWl0ZXIgY2hhcmFjdGVyICovCiAJICAgIHBhdCA9IGNtZDsJCQkgICAgLyogcmVtZW1iZXIgc3RhcnQgb2Ygc2VhcmNoIHBhdCAqLwpAQCAtNjA3MCwxMSArNjA2Niw2IEBACiAJICAgICpjbWQrKyA9IE5VTDsJCSAgICAvKiByZXBsYWNlIGl0IHdpdGggYSBOVUwgKi8KICAgICB9CiAKLSNpZmRlZiBGRUFUX0ZLTUFQCS8qIHdoZW4gaW4gRmFyc2kgbW9kZSwgcmV2ZXJzZSB0aGUgY2hhcmFjdGVyIGZsb3cgKi8KLSAgICBpZiAocF9hbHRrZXltYXAgJiYgY3Vyd2luLT53X3BfcmwpCi0JbHJGc3dhcChwYXQsMCk7Ci0jZW5kaWYKLQogICAgIGlmIChzZWFyY2hfcmVnY29tcChwYXQsIFJFX0JPVEgsIHdoaWNoX3BhdCwgU0VBUkNIX0hJUywgJnJlZ21hdGNoKSA9PSBGQUlMKQogICAgIHsKIAllbXNnKF8oZV9pbnZjbWQpKTsKZGlmZiAtLWdpdCBhL3NyYy9leF9nZXRsbi5jIGIvc3JjL2V4X2dldGxuLmMKaW5kZXggY2JhMDgyYS4uMDA5NjczNyAxMDA2NDQKLS0tIGEvc3JjL2V4X2dldGxuLmMKKysrIGIvc3JjL2V4X2dldGxuLmMKQEAgLTgxLDEwICs4MSw2IEBACiBzdGF0aWMgaW50CWNtZF9oa21hcCA9IDA7CS8qIEhlYnJldyBtYXBwaW5nIGR1cmluZyBjb21tYW5kIGxpbmUgKi8KICNlbmRpZgogCi0jaWZkZWYgRkVBVF9GS01BUAotc3RhdGljIGludAljbWRfZmttYXAgPSAwOwkvKiBGYXJzaSBtYXBwaW5nIGR1cmluZyBjb21tYW5kIGxpbmUgKi8KLSNlbmRpZgotCiBzdGF0aWMgY2hhcl91CSpnZXRjbWRsaW5lX2ludChpbnQgZmlyc3RjLCBsb25nIGNvdW50LCBpbnQgaW5kZW50LCBpbnQgaW5pdF9jY2xpbmUpOwogc3RhdGljIGludAljbWRsaW5lX2NoYXJzaXplKGludCBpZHgpOwogc3RhdGljIHZvaWQJc2V0X2NtZHNwb3Modm9pZCk7CkBAIC0xMDQzLDEwICsxMDM5LDYgQEAKICNpZmRlZiBGRUFUX1JJR0hUTEVGVAogCSAgICBpZiAoY21kX2hrbWFwKQogCQljID0gaGttYXAoYyk7Ci0jIGlmZGVmIEZFQVRfRktNQVAKLQkgICAgaWYgKGNtZF9ma21hcCkKLQkJYyA9IGNtZGxfZmttYXAoYyk7Ci0jIGVuZGlmCiAJICAgIGlmIChjbWRtc2dfcmwgJiYgIUtleVN0dWZmZWQpCiAJICAgIHsKIAkJLyogSW52ZXJ0IGhvcml6b250YWwgbW92ZW1lbnRzIGFuZCBvcGVyYXRpb25zLiAgT25seSB3aGVuCkBAIC0xNTk1LDEwICsxNTg3LDYgQEAKIAljYXNlIEtfREVMOgogCWNhc2UgS19LREVMOgogCWNhc2UgQ3RybF9XOgotI2lmZGVmIEZFQVRfRktNQVAKLQkJaWYgKGNtZF9ma21hcCAmJiBjID09IEtfQlMpCi0JCSAgICBjID0gS19ERUw7Ci0jZW5kaWYKIAkJaWYgKGMgPT0gS19LREVMKQogCQkgICAgYyA9IEtfREVMOwogCkBAIC0xNjk0LDEzICsxNjgyLDYgQEAKIAogCWNhc2UgS19JTlM6CiAJY2FzZSBLX0tJTlM6Ci0jaWZkZWYgRkVBVF9GS01BUAotCQkvKiBpZiBGYXJzaSBtb2RlIHNldCwgd2UgYXJlIGluIHJldmVyc2UgaW5zZXJ0IG1vZGUgLQotCQkgICBEbyBub3QgY2hhbmdlIHRoZSBtb2RlICovCi0JCWlmIChjbWRfZmttYXApCi0JCSAgICBiZWVwX2ZsdXNoKCk7Ci0JCWVsc2UKLSNlbmRpZgogCQljY2xpbmUub3ZlcnN0cmlrZSA9ICFjY2xpbmUub3ZlcnN0cmlrZTsKICNpZmRlZiBDVVJTT1JfU0hBUEUKIAkJdWlfY3Vyc29yX3NoYXBlKCk7CS8qIG1heSBzaG93IGRpZmZlcmVudCBjdXJzb3Igc2hhcGUgKi8KQEAgLTIzMDksMTYgKzIyOTAsNyBAQAogCWNhc2UgQ3RybF9fOgkgICAgLyogQ1RSTC1fOiBzd2l0Y2ggbGFuZ3VhZ2UgbW9kZSAqLwogCQlpZiAoIXBfYXJpKQogCQkgICAgYnJlYWs7Ci0jIGlmZGVmIEZFQVRfRktNQVAKLQkJaWYgKHBfYWx0a2V5bWFwKQotCQl7Ci0JCSAgICBjbWRfZmttYXAgPSAhY21kX2ZrbWFwOwotCQkgICAgaWYgKGNtZF9ma21hcCkJLyogaW4gRmFyc2kgYWx3YXlzIGluIEluc2VydCBtb2RlICovCi0JCQljY2xpbmUub3ZlcnN0cmlrZSA9IEZBTFNFOwotCQl9Ci0JCWVsc2UJCQkgICAgLyogSGVicmV3IGlzIGRlZmF1bHQgKi8KLSMgZW5kaWYKLQkJICAgIGNtZF9oa21hcCA9ICFjbWRfaGttYXA7CisJCWNtZF9oa21hcCA9ICFjbWRfaGttYXA7CiAJCWdvdG8gY21kbGluZV9ub3RfY2hhbmdlZDsKICNlbmRpZgogCkBAIC0yNDIxLDEwICsyMzkzLDYgQEAKICAgICBjbWRtc2dfcmwgPSBGQUxTRTsKICNlbmRpZgogCi0jaWZkZWYgRkVBVF9GS01BUAotICAgIGNtZF9ma21hcCA9IDA7Ci0jZW5kaWYKLQogICAgIEV4cGFuZENsZWFudXAoJnhwYyk7CiAgICAgY2NsaW5lLnhwYyA9IE5VTEw7CiAKQEAgLTM0NjMsNDQgKzM0MzEsMzUgQEAKIAkJbXNnX2Nscl9lb3MoKTsKIAkgICAgbXNnX25vX21vcmUgPSBGQUxTRTsKIAl9Ci0jaWZkZWYgRkVBVF9GS01BUAotCS8qCi0JICogSWYgd2UgYXJlIGluIEZhcnNpIGNvbW1hbmQgbW9kZSwgdGhlIGNoYXJhY3RlciBpbnB1dCBtdXN0IGJlIGluCi0JICogSW5zZXJ0IG1vZGUuIFNvIGRvIG5vdCBhZHZhbmNlIHRoZSBjbWRwb3MuCi0JICovCi0JaWYgKCFjbWRfZmttYXApCi0jZW5kaWYKKwlpZiAoS2V5VHlwZWQpCiAJewotCSAgICBpZiAoS2V5VHlwZWQpCi0JICAgIHsKLQkJbSA9IENvbHVtbnMgKiBSb3dzOwotCQlpZiAobSA8IDApCS8qIG92ZXJmbG93LCBDb2x1bW5zIG9yIFJvd3MgYXQgd2VpcmQgdmFsdWUgKi8KLQkJICAgIG0gPSBNQVhDT0w7Ci0JICAgIH0KLQkgICAgZWxzZQorCSAgICBtID0gQ29sdW1ucyAqIFJvd3M7CisJICAgIGlmIChtIDwgMCkJLyogb3ZlcmZsb3csIENvbHVtbnMgb3IgUm93cyBhdCB3ZWlyZCB2YWx1ZSAqLwogCQltID0gTUFYQ09MOwotCSAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCi0JICAgIHsKLQkJYyA9IGNtZGxpbmVfY2hhcnNpemUoY2NsaW5lLmNtZHBvcyk7Ci0JCS8qIGNvdW50ICI+IiBmb3IgYSBkb3VibGUtd2lkZSBjaGFyIHRoYXQgZG9lc24ndCBmaXQuICovCi0JCWlmIChoYXNfbWJ5dGUpCi0JCSAgICBjb3JyZWN0X2NtZHNwb3MoY2NsaW5lLmNtZHBvcywgYyk7Ci0JCS8qIFN0b3AgY3Vyc29yIGF0IHRoZSBlbmQgb2YgdGhlIHNjcmVlbiwgYnV0IGRvIGluY3JlbWVudCB0aGUKLQkJICogaW5zZXJ0IHBvc2l0aW9uLCBzbyB0aGF0IGVudGVyaW5nIGEgdmVyeSBsb25nIGNvbW1hbmQKLQkJICogd29ya3MsIGV2ZW4gdGhvdWdoIHlvdSBjYW4ndCBzZWUgaXQuICovCi0JCWlmIChjY2xpbmUuY21kc3BvcyArIGMgPCBtKQotCQkgICAgY2NsaW5lLmNtZHNwb3MgKz0gYzsKKwl9CisJZWxzZQorCSAgICBtID0gTUFYQ09MOworCWZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkKKwl7CisJICAgIGMgPSBjbWRsaW5lX2NoYXJzaXplKGNjbGluZS5jbWRwb3MpOworCSAgICAvKiBjb3VudCAiPiIgZm9yIGEgZG91YmxlLXdpZGUgY2hhciB0aGF0IGRvZXNuJ3QgZml0LiAqLworCSAgICBpZiAoaGFzX21ieXRlKQorCQljb3JyZWN0X2NtZHNwb3MoY2NsaW5lLmNtZHBvcywgYyk7CisJICAgIC8qIFN0b3AgY3Vyc29yIGF0IHRoZSBlbmQgb2YgdGhlIHNjcmVlbiwgYnV0IGRvIGluY3JlbWVudCB0aGUKKwkgICAgICogaW5zZXJ0IHBvc2l0aW9uLCBzbyB0aGF0IGVudGVyaW5nIGEgdmVyeSBsb25nIGNvbW1hbmQKKwkgICAgICogd29ya3MsIGV2ZW4gdGhvdWdoIHlvdSBjYW4ndCBzZWUgaXQuICovCisJICAgIGlmIChjY2xpbmUuY21kc3BvcyArIGMgPCBtKQorCQljY2xpbmUuY21kc3BvcyArPSBjOwogCi0JCWlmIChoYXNfbWJ5dGUpCi0JCXsKLQkJICAgIGMgPSAoKm1iX3B0cjJsZW4pKGNjbGluZS5jbWRidWZmICsgY2NsaW5lLmNtZHBvcykgLSAxOwotCQkgICAgaWYgKGMgPiBsZW4gLSBpIC0gMSkKLQkJCWMgPSBsZW4gLSBpIC0gMTsKLQkJICAgIGNjbGluZS5jbWRwb3MgKz0gYzsKLQkJICAgIGkgKz0gYzsKLQkJfQotCQkrK2NjbGluZS5jbWRwb3M7CisJICAgIGlmIChoYXNfbWJ5dGUpCisJICAgIHsKKwkJYyA9ICgqbWJfcHRyMmxlbikoY2NsaW5lLmNtZGJ1ZmYgKyBjY2xpbmUuY21kcG9zKSAtIDE7CisJCWlmIChjID4gbGVuIC0gaSAtIDEpCisJCSAgICBjID0gbGVuIC0gaSAtIDE7CisJCWNjbGluZS5jbWRwb3MgKz0gYzsKKwkJaSArPSBjOwogCSAgICB9CisJICAgICsrY2NsaW5lLmNtZHBvczsKIAl9CiAgICAgfQogICAgIGlmIChyZWRyYXcpCkBAIC03MTI2LDM1ICs3MDg1LDYgQEAKIH0KICNlbmRpZiAvKiBGRUFUX1ZJTUlORk8gKi8KIAotI2lmIGRlZmluZWQoRkVBVF9GS01BUCkgfHwgZGVmaW5lZChQUk9UTykKLS8qCi0gKiBXcml0ZSBhIGNoYXJhY3RlciBhdCB0aGUgY3VycmVudCBjdXJzb3Irb2Zmc2V0IHBvc2l0aW9uLgotICogSXQgaXMgZGlyZWN0bHkgd3JpdHRlbiBpbnRvIHRoZSBjb21tYW5kIGJ1ZmZlciBibG9jay4KLSAqLwotICAgIHZvaWQKLWNtZF9wY2hhcihpbnQgYywgaW50IG9mZnNldCkKLXsKLSAgICBpZiAoY2NsaW5lLmNtZHBvcyArIG9mZnNldCA+PSBjY2xpbmUuY21kbGVuIHx8IGNjbGluZS5jbWRwb3MgKyBvZmZzZXQgPCAwKQotICAgIHsKLQllbXNnKF8oIkUxOTg6IGNtZF9wY2hhciBiZXlvbmQgdGhlIGNvbW1hbmQgbGVuZ3RoIikpOwotCXJldHVybjsKLSAgICB9Ci0gICAgY2NsaW5lLmNtZGJ1ZmZbY2NsaW5lLmNtZHBvcyArIG9mZnNldF0gPSAoY2hhcl91KWM7Ci0gICAgY2NsaW5lLmNtZGJ1ZmZbY2NsaW5lLmNtZGxlbl0gPSBOVUw7Ci19Ci0KLSAgICBpbnQKLWNtZF9nY2hhcihpbnQgb2Zmc2V0KQotewotICAgIGlmIChjY2xpbmUuY21kcG9zICsgb2Zmc2V0ID49IGNjbGluZS5jbWRsZW4gfHwgY2NsaW5lLmNtZHBvcyArIG9mZnNldCA8IDApCi0gICAgewotCS8vIGVtc2coXygiY21kX2djaGFyIGJleW9uZCB0aGUgY29tbWFuZCBsZW5ndGgiKSk7Ci0JcmV0dXJuIE5VTDsKLSAgICB9Ci0gICAgcmV0dXJuIChpbnQpY2NsaW5lLmNtZGJ1ZmZbY2NsaW5lLmNtZHBvcyArIG9mZnNldF07Ci19Ci0jZW5kaWYKLQogI2lmIGRlZmluZWQoRkVBVF9DTURXSU4pIHx8IGRlZmluZWQoUFJPVE8pCiAvKgogICogT3BlbiBhIHdpbmRvdyBvbiB0aGUgY3VycmVudCBjb21tYW5kIGxpbmUgYW5kIGhpc3RvcnkuICBBbGxvdyBlZGl0aW5nIGluCmRpZmYgLS1naXQgYS9zcmMvZmFyc2kuYyBiL3NyYy9mYXJzaS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGRkOTkxLi4wMDAwMDAwCi0tLSBhL3NyYy9mYXJzaS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjE3OSArMCwwIEBACi0vKiB2aTpzZXQgdHM9OCBzdHM9NCBzdz00IG5vZXQ6Ci0gKgotICogVklNIC0gVmkgSU1wcm92ZWQJYnkgQnJhbSBNb29sZW5hYXIKLSAqCi0gKiBEbyAiOmhlbHAgdWdhbmRhIiAgaW4gVmltIHRvIHJlYWQgY29weWluZyBhbmQgdXNhZ2UgY29uZGl0aW9ucy4KLSAqIERvICI6aGVscCBjcmVkaXRzIiBpbiBWaW0gdG8gc2VlIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgotICogU2VlIFJFQURNRS50eHQgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBWaW0gc291cmNlIGNvZGUuCi0gKi8KLQotLyoKLSAqIGZhcnNpLmM6IGZ1bmN0aW9ucyBmb3IgRmFyc2kgbGFuZ3VhZ2UKLSAqLwotCi0jaW5jbHVkZSAidmltLmgiCi0KLSNpZiBkZWZpbmVkKEZFQVRfRktNQVApIHx8IGRlZmluZWQoUFJPVE8pCi0KLXN0YXRpYyBpbnQgRl9pc19UeUJfVHlDX1R5RChpbnQgc3JjLCBpbnQgb2Zmc2V0KTsKLQotLyoKLSAqIENvbnZlcnQgdGhlIGdpdmVuIEZhcnNpIGNoYXJhY3RlciBpbnRvIGEgX1ggb3IgX1hfIHR5cGUKLSAqLwotICAgIHN0YXRpYyBpbnQKLXRvRl9Yb3JfWF8oaW50IGMpCi17Ci0gICAgaW50IHRlbXBjOwotCi0gICAgc3dpdGNoIChjKQotICAgIHsKLQljYXNlIEJFOiByZXR1cm4gX0JFOwotCWNhc2UgUEU6IHJldHVybiBfUEU7Ci0JY2FzZSBURTogcmV0dXJuIF9URTsKLQljYXNlIFNFOiByZXR1cm4gX1NFOwotCWNhc2UgSklNOiByZXR1cm4gX0pJTTsKLQljYXNlIENIRTogcmV0dXJuIF9DSEU7Ci0JY2FzZSBIRV9KOiByZXR1cm4gX0hFX0o7Ci0JY2FzZSBYRTogcmV0dXJuIF9YRTsKLQljYXNlIFNJTjogcmV0dXJuIF9TSU47Ci0JY2FzZSBTSElOOiByZXR1cm4gX1NISU47Ci0JY2FzZSBTQUQ6IHJldHVybiBfU0FEOwotCWNhc2UgWkFEOiByZXR1cm4gX1pBRDsKLQljYXNlIEFZTjogcmV0dXJuIF9BWU47Ci0JY2FzZSBBWU5fOiByZXR1cm4gX0FZTl87Ci0JY2FzZSBHSEFZTjogcmV0dXJuIF9HSEFZTjsKLQljYXNlIEdIQVlOXzogcmV0dXJuIF9HSEFZTl87Ci0JY2FzZSBGRTogcmV0dXJuIF9GRTsKLQljYXNlIEdIQUY6IHJldHVybiBfR0hBRjsKLQljYXNlIEtBRjogcmV0dXJuIF9LQUY7Ci0JY2FzZSBHQUY6IHJldHVybiBfR0FGOwotCWNhc2UgTEFNOiByZXR1cm4gX0xBTTsKLQljYXNlIE1JTTogcmV0dXJuIF9NSU07Ci0JY2FzZSBOT09OOiByZXR1cm4gX05PT047Ci0JY2FzZSBZRToKLQljYXNlIFlFXzogcmV0dXJuIF9ZRTsKLQljYXNlIFlFRToKLQljYXNlIFlFRV86IHJldHVybiBfWUVFOwotCWNhc2UgSUU6Ci0JY2FzZSBJRV86IHJldHVybiBfSUU7Ci0JY2FzZSBGX0hFOgotCQl0ZW1wYyA9IF9IRTsKLQotCQlpZiAocF9yaSAmJiAoY3Vyd2luLT53X2N1cnNvci5jb2wgKyAxCi0JCQkJCSA8IChjb2xucl9UKVNUUkxFTihtbF9nZXRfY3VybGluZSgpKSkpCi0JCXsKLQkJICAgIGluY19jdXJzb3IoKTsKLQotCQkgICAgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0VEVCwgQVRfQ1VSU09SKSkKLQkJCXRlbXBjID0gX0hFXzsKLQotCQkgICAgZGVjX2N1cnNvcigpOwotCQl9Ci0JCWlmICghcF9yaSAmJiBTVFJMRU4obWxfZ2V0X2N1cmxpbmUoKSkpCi0JCXsKLQkJICAgIGRlY19jdXJzb3IoKTsKLQotCQkgICAgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0VEVCwgQVRfQ1VSU09SKSkKLQkJCXRlbXBjID0gX0hFXzsKLQotCQkgICAgaW5jX2N1cnNvcigpOwotCQl9Ci0KLQkJcmV0dXJuIHRlbXBjOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotLyoKLSAqIENvbnZlcnQgdGhlIGdpdmVuIEZhcnNpIGNoYXJhY3RlciBpbnRvIEZhcnNpIGNhcGl0YWwgY2hhcmFjdGVyLgotICovCi0gICAgc3RhdGljIGludAotdG9GX1R5QShpbnQgYykKLXsKLSAgICBzd2l0Y2ggKGMpCi0gICAgewotCWNhc2UgQUxFRl86IHJldHVybiBBTEVGOwotCWNhc2UgQUxFRl9VX0hfOiByZXR1cm4gQUxFRl9VX0g7Ci0JY2FzZSBfQkU6IHJldHVybiBCRTsKLQljYXNlIF9QRTogcmV0dXJuIFBFOwotCWNhc2UgX1RFOiByZXR1cm4gVEU7Ci0JY2FzZSBfU0U6IHJldHVybiBTRTsKLQljYXNlIF9KSU06IHJldHVybiBKSU07Ci0JY2FzZSBfQ0hFOiByZXR1cm4gQ0hFOwotCWNhc2UgX0hFX0o6IHJldHVybiBIRV9KOwotCWNhc2UgX1hFOiByZXR1cm4gWEU7Ci0JY2FzZSBfU0lOOiByZXR1cm4gU0lOOwotCWNhc2UgX1NISU46IHJldHVybiBTSElOOwotCWNhc2UgX1NBRDogcmV0dXJuIFNBRDsKLQljYXNlIF9aQUQ6IHJldHVybiBaQUQ7Ci0JY2FzZSBfQVlOOgotCWNhc2UgQVlOXzoKLQljYXNlIF9BWU5fOiByZXR1cm4gQVlOOwotCWNhc2UgX0dIQVlOOgotCWNhc2UgR0hBWU5fOgotCWNhc2UgX0dIQVlOXzogcmV0dXJuIEdIQVlOOwotCWNhc2UgX0ZFOiByZXR1cm4gRkU7Ci0JY2FzZSBfR0hBRjogcmV0dXJuIEdIQUY7Ci0JLyogSSBhbSBub3Qgc3VyZSB3aGF0IGl0IGlzICEhIQkgICAgY2FzZSBfS0FGX0g6ICovCi0JY2FzZSBfS0FGOiByZXR1cm4gS0FGOwotCWNhc2UgX0dBRjogcmV0dXJuIEdBRjsKLQljYXNlIF9MQU06IHJldHVybiBMQU07Ci0JY2FzZSBfTUlNOiByZXR1cm4gTUlNOwotCWNhc2UgX05PT046IHJldHVybiBOT09OOwotCWNhc2UgX1lFOgotCWNhc2UgWUVfOiByZXR1cm4gWUU7Ci0JY2FzZSBfWUVFOgotCWNhc2UgWUVFXzogcmV0dXJuIFlFRTsKLQljYXNlIFRFRV86IHJldHVybiBURUU7Ci0JY2FzZSBfSUU6Ci0JY2FzZSBJRV86IHJldHVybiBJRTsKLQljYXNlIF9IRToKLQljYXNlIF9IRV86IHJldHVybiBGX0hFOwotICAgIH0KLSAgICByZXR1cm4gYzsKLX0KLQotLyoKLSAqIElzIHRoZSBjaGFyYWN0ZXIgdW5kZXIgdGhlIGN1cnNvcitvZmZzZXQgaW4gdGhlIGdpdmVuIGJ1ZmZlciBhIGpvaW4gdHlwZS4KLSAqIFRoYXQgaXMgYSBjaGFyYWN0ZXIgdGhhdCBpcyBjb21iaW5lZCB3aXRoIHRoZSBvdGhlcnMuCi0gKiBOb3RlOiB0aGUgb2Zmc2V0IGlzIHVzZWQgb25seSBmb3IgY29tbWFuZCBsaW5lIGJ1ZmZlci4KLSAqLwotICAgIHN0YXRpYyBpbnQKLUZfaXNfVHlCX1R5Q19UeUQoaW50IHNyYywgaW50IG9mZnNldCkKLXsKLSAgICBpbnQJCWM7Ci0KLSAgICBpZiAoc3JjID09IFNSQ19FRFQpCi0JYyA9IGdjaGFyX2N1cnNvcigpOwotICAgIGVsc2UKLQljID0gY21kX2djaGFyKEFUX0NVUlNPUitvZmZzZXQpOwotCi0gICAgc3dpdGNoIChjKQotICAgIHsKLQljYXNlIF9MQU06Ci0JY2FzZSBfQkU6Ci0JY2FzZSBfUEU6Ci0JY2FzZSBfVEU6Ci0JY2FzZSBfU0U6Ci0JY2FzZSBfSklNOgotCWNhc2UgX0NIRToKLQljYXNlIF9IRV9KOgotCWNhc2UgX1hFOgotCWNhc2UgX1NJTjoKLQljYXNlIF9TSElOOgotCWNhc2UgX1NBRDoKLQljYXNlIF9aQUQ6Ci0JY2FzZSBfVEE6Ci0JY2FzZSBfWkE6Ci0JY2FzZSBfQVlOOgotCWNhc2UgX0FZTl86Ci0JY2FzZSBfR0hBWU46Ci0JY2FzZSBfR0hBWU5fOgotCWNhc2UgX0ZFOgotCWNhc2UgX0dIQUY6Ci0JY2FzZSBfS0FGOgotCWNhc2UgX0tBRl9IOgotCWNhc2UgX0dBRjoKLQljYXNlIF9NSU06Ci0JY2FzZSBfTk9PTjoKLQljYXNlIF9ZRToKLQljYXNlIF9ZRUU6Ci0JY2FzZSBfSUU6Ci0JY2FzZSBfSEVfOgotCWNhc2UgX0hFOgotCQlyZXR1cm4gVFJVRTsKLSAgICB9Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi0vKgotICogSXMgdGhlIEZhcnNpIGNoYXJhY3RlciBvbmUgb2YgdGhlIHRlcm1pbmF0aW5nIG9ubHkgdHlwZS4KLSAqLwotICAgIHN0YXRpYyBpbnQKLUZfaXNfVHlFKGludCBjKQotewotICAgIHN3aXRjaCAoYykKLSAgICB7Ci0JY2FzZSBBTEVGX0E6Ci0JY2FzZSBBTEVGX0RfSDoKLQljYXNlIERBTDoKLQljYXNlIFpBTDoKLQljYXNlIFJFOgotCWNhc2UgWkU6Ci0JY2FzZSBKRToKLQljYXNlIFdBVzoKLQljYXNlIFdBV19IOgotCWNhc2UgSEFNWkU6Ci0JCXJldHVybiBUUlVFOwotICAgIH0KLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLS8qCi0gKiBJcyB0aGUgRmFyc2kgY2hhcmFjdGVyIG9uZSBvZiB0aGUgbm9uZSBsZWFkaW5nIHR5cGUuCi0gKi8KLSAgICBzdGF0aWMgaW50Ci1GX2lzX1R5Q19UeUQoaW50IGMpCi17Ci0gICAgc3dpdGNoIChjKQotICAgIHsKLQljYXNlIEFMRUZfOgotCWNhc2UgQUxFRl9VX0hfOgotCWNhc2UgX0FZTl86Ci0JY2FzZSBBWU5fOgotCWNhc2UgX0dIQVlOXzoKLQljYXNlIEdIQVlOXzoKLQljYXNlIF9IRV86Ci0JY2FzZSBZRV86Ci0JY2FzZSBJRV86Ci0JY2FzZSBURUVfOgotCWNhc2UgWUVFXzoKLQkJcmV0dXJuIFRSVUU7Ci0gICAgfQotICAgIHJldHVybiBGQUxTRTsKLX0KLQotLyoKLSAqIENvbnZlcnQgYSBub25lIGxlYWRpbmcgRmFyc2kgY2hhciBpbnRvIGEgbGVhZGluZyB0eXBlLgotICovCi0gICAgc3RhdGljIGludAotdG9GX1R5QihpbnQgYykKLXsKLSAgICBzd2l0Y2ggKGMpCi0gICAgewotCWNhc2UgQUxFRl86CXJldHVybiBBTEVGOwotCWNhc2UgQUxFRl9VX0hfOglyZXR1cm4gQUxFRl9VX0g7Ci0JY2FzZSBfQVlOXzoJcmV0dXJuIF9BWU47Ci0JY2FzZSBBWU5fOglyZXR1cm4gQVlOOwkvKiBleGNlcHRpb24gLSB0aGVyZSBhcmUgbWFueSBvZiB0aGVtICovCi0JY2FzZSBfR0hBWU5fOglyZXR1cm4gX0dIQVlOOwotCWNhc2UgR0hBWU5fOglyZXR1cm4gR0hBWU47CS8qIGV4Y2VwdGlvbiAtIHRoZXJlIGFyZSBtYW55IG9mIHRoZW0gKi8KLQljYXNlIF9IRV86CXJldHVybiBfSEU7Ci0JY2FzZSBZRV86CXJldHVybiBZRTsKLQljYXNlIElFXzoJcmV0dXJuIElFOwotCWNhc2UgVEVFXzoJcmV0dXJuIFRFRTsKLQljYXNlIFlFRV86CXJldHVybiBZRUU7Ci0gICAgfQotICAgIHJldHVybiBjOwotfQotCi0KLSAgICBzdGF0aWMgdm9pZAotcHV0X2FuZF9yZWRvKGludCBjKQotewotICAgIHBjaGFyX2N1cnNvcihjKTsKLSAgICBBcHBlbmRDaGFyVG9SZWRvYnVmZihLX0JTKTsKLSAgICBBcHBlbmRDaGFyVG9SZWRvYnVmZihjKTsKLX0KLQotLyoKLSAqIE92ZXJ3cml0ZSB0aGUgY3VycmVudCByZWRvIGFuZCBjdXJzb3IgY2hhcmFjdGVycyArIGxlZnQgYWRqdXN0LgotICovCi0gICAgc3RhdGljIHZvaWQKLXB1dF9jdXJyX2FuZF9sX3RvX1goaW50IGMpCi17Ci0gICAgaW50CXRlbXBjOwotCi0gICAgaWYgKGN1cndpbi0+d19wX3JsICYmIHBfcmkpCi0JcmV0dXJuOwotCi0gICAgaWYgKChjdXJ3aW4tPndfY3Vyc29yLmNvbCA8IChjb2xucl9UKVNUUkxFTihtbF9nZXRfY3VybGluZSgpKSkpCi0gICAgewotCWlmICgocF9yaSAmJiBjdXJ3aW4tPndfY3Vyc29yLmNvbCkgfHwgIXBfcmkpCi0JewotCSAgICBpZiAocF9yaSkKLQkJZGVjX2N1cnNvcigpOwotCSAgICBlbHNlCi0JCWluY19jdXJzb3IoKTsKLQotCSAgICBpZiAoRl9pc19UeUNfVHlEKCh0ZW1wYyA9IGdjaGFyX2N1cnNvcigpKSkpCi0JICAgIHsKLQkJcGNoYXJfY3Vyc29yKHRvRl9UeUIodGVtcGMpKTsKLQkJQXBwZW5kQ2hhclRvUmVkb2J1ZmYoS19CUyk7Ci0JCUFwcGVuZENoYXJUb1JlZG9idWZmKHRlbXBjKTsKLQkgICAgfQotCi0JICAgIGlmIChwX3JpKQotCQlpbmNfY3Vyc29yKCk7Ci0JICAgIGVsc2UKLQkJZGVjX2N1cnNvcigpOwotCX0KLSAgICB9Ci0KLSAgICBwdXRfYW5kX3JlZG8oYyk7Ci19Ci0KLS8qCi0gKiBDaGFuZ2UgdGhlIGNoYXIuIHVuZGVyIHRoZSBjdXJzb3IgdG8gYSBYXyBvciBYIHR5cGUKLSAqLwotICAgIHN0YXRpYyB2b2lkCi1jaGdfY190b1hfb3JYKHZvaWQpCi17Ci0gICAgaW50CXRlbXBjLCBjdXJjOwotCi0gICAgc3dpdGNoICgoY3VyYyA9IGdjaGFyX2N1cnNvcigpKSkKLSAgICB7Ci0JY2FzZSBfQkU6Ci0JCXRlbXBjID0gQkU7Ci0JCWJyZWFrOwotCWNhc2UgX1BFOgotCQl0ZW1wYyA9IFBFOwotCQlicmVhazsKLQljYXNlIF9URToKLQkJdGVtcGMgPSBURTsKLQkJYnJlYWs7Ci0JY2FzZSBfU0U6Ci0JCXRlbXBjID0gU0U7Ci0JCWJyZWFrOwotCWNhc2UgX0pJTToKLQkJdGVtcGMgPSBKSU07Ci0JCWJyZWFrOwotCWNhc2UgX0NIRToKLQkJdGVtcGMgPSBDSEU7Ci0JCWJyZWFrOwotCWNhc2UgX0hFX0o6Ci0JCXRlbXBjID0gSEVfSjsKLQkJYnJlYWs7Ci0JY2FzZSBfWEU6Ci0JCXRlbXBjID0gWEU7Ci0JCWJyZWFrOwotCWNhc2UgX1NJTjoKLQkJdGVtcGMgPSBTSU47Ci0JCWJyZWFrOwotCWNhc2UgX1NISU46Ci0JCXRlbXBjID0gU0hJTjsKLQkJYnJlYWs7Ci0JY2FzZSBfU0FEOgotCQl0ZW1wYyA9IFNBRDsKLQkJYnJlYWs7Ci0JY2FzZSBfWkFEOgotCQl0ZW1wYyA9IFpBRDsKLQkJYnJlYWs7Ci0JY2FzZSBfRkU6Ci0JCXRlbXBjID0gRkU7Ci0JCWJyZWFrOwotCWNhc2UgX0dIQUY6Ci0JCXRlbXBjID0gR0hBRjsKLQkJYnJlYWs7Ci0JY2FzZSBfS0FGX0g6Ci0JY2FzZSBfS0FGOgotCQl0ZW1wYyA9IEtBRjsKLQkJYnJlYWs7Ci0JY2FzZSBfR0FGOgotCQl0ZW1wYyA9IEdBRjsKLQkJYnJlYWs7Ci0JY2FzZSBfQVlOOgotCQl0ZW1wYyA9IEFZTjsKLQkJYnJlYWs7Ci0JY2FzZSBfQVlOXzoKLQkJdGVtcGMgPSBBWU5fOwotCQlicmVhazsKLQljYXNlIF9HSEFZTjoKLQkJdGVtcGMgPSBHSEFZTjsKLQkJYnJlYWs7Ci0JY2FzZSBfR0hBWU5fOgotCQl0ZW1wYyA9IEdIQVlOXzsKLQkJYnJlYWs7Ci0JY2FzZSBfTEFNOgotCQl0ZW1wYyA9IExBTTsKLQkJYnJlYWs7Ci0JY2FzZSBfTUlNOgotCQl0ZW1wYyA9IE1JTTsKLQkJYnJlYWs7Ci0JY2FzZSBfTk9PTjoKLQkJdGVtcGMgPSBOT09OOwotCQlicmVhazsKLQljYXNlIF9IRToKLQljYXNlIF9IRV86Ci0JCXRlbXBjID0gRl9IRTsKLQkJYnJlYWs7Ci0JY2FzZSBfWUU6Ci0JY2FzZSBfSUU6Ci0JY2FzZSBfWUVFOgotCQlpZiAocF9yaSkKLQkJewotCQkgICAgaW5jX2N1cnNvcigpOwotCQkgICAgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0VEVCwgQVRfQ1VSU09SKSkKLQkJCSAgICB0ZW1wYyA9IChjdXJjID09IF9ZRSA/IFlFXyA6Ci0JCQkgICAgKGN1cmMgPT0gX0lFID8gSUVfIDogWUVFXykpOwotCQkgICAgZWxzZQotCQkJICAgIHRlbXBjID0gKGN1cmMgPT0gX1lFID8gWUUgOgotCQkJICAgIChjdXJjID09IF9JRSA/IElFIDogWUVFKSk7Ci0JCSAgICBkZWNfY3Vyc29yKCk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCSAgICBpZiAoY3Vyd2luLT53X2N1cnNvci5jb2wpCi0JCSAgICB7Ci0JCQlkZWNfY3Vyc29yKCk7Ci0JCQlpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfRURULCBBVF9DVVJTT1IpKQotCQkJCXRlbXBjID0gKGN1cmMgPT0gX1lFID8gWUVfIDoKLQkJCQkoY3VyYyA9PSBfSUUgPyBJRV8gOiBZRUVfKSk7Ci0JCQllbHNlCi0JCQkJdGVtcGMgPSAoY3VyYyA9PSBfWUUgPyBZRSA6Ci0JCQkJKGN1cmMgPT0gX0lFID8gSUUgOiBZRUUpKTsKLQkJCWluY19jdXJzb3IoKTsKLQkJICAgIH0KLQkJICAgIGVsc2UKLQkJCSAgICB0ZW1wYyA9IChjdXJjID09IF9ZRSA/IFlFIDoKLQkJCSAgICAoY3VyYyA9PSBfSUUgPyBJRSA6IFlFRSkpOwotCQl9Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXRlbXBjID0gMDsKLSAgICB9Ci0KLSAgICBpZiAodGVtcGMpCi0JcHV0X2FuZF9yZWRvKHRlbXBjKTsKLX0KLQotLyoKLSAqIENoYW5nZSB0aGUgY2hhci4gdW5kZXIgdGhlIGN1cnNvciB0byBhIF9YXyBvciBYXyB0eXBlCi0gKi8KLSAgICBzdGF0aWMgdm9pZAotY2hnX2NfdG9fWF9vclhfKHZvaWQpCi17Ci0gICAgaW50CXRlbXBjOwotCi0gICAgc3dpdGNoIChnY2hhcl9jdXJzb3IoKSkKLSAgICB7Ci0JY2FzZSBBTEVGOgotCQl0ZW1wYyA9IEFMRUZfOwotCQlicmVhazsKLQljYXNlIEFMRUZfVV9IOgotCQl0ZW1wYyA9IEFMRUZfVV9IXzsKLQkJYnJlYWs7Ci0JY2FzZSBfQVlOOgotCQl0ZW1wYyA9IF9BWU5fOwotCQlicmVhazsKLQljYXNlIEFZTjoKLQkJdGVtcGMgPSBBWU5fOwotCQlicmVhazsKLQljYXNlIF9HSEFZTjoKLQkJdGVtcGMgPSBfR0hBWU5fOwotCQlicmVhazsKLQljYXNlIEdIQVlOOgotCQl0ZW1wYyA9IEdIQVlOXzsKLQkJYnJlYWs7Ci0JY2FzZSBfSEU6Ci0JCXRlbXBjID0gX0hFXzsKLQkJYnJlYWs7Ci0JY2FzZSBZRToKLQkJdGVtcGMgPSBZRV87Ci0JCWJyZWFrOwotCWNhc2UgSUU6Ci0JCXRlbXBjID0gSUVfOwotCQlicmVhazsKLQljYXNlIFRFRToKLQkJdGVtcGMgPSBURUVfOwotCQlicmVhazsKLQljYXNlIFlFRToKLQkJdGVtcGMgPSBZRUVfOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQl0ZW1wYyA9IDA7Ci0gICAgfQotCi0gICAgaWYgKHRlbXBjKQotCXB1dF9hbmRfcmVkbyh0ZW1wYyk7Ci19Ci0KLS8qCi0gKiBDaGFuZ2UgdGhlIGNoYXIuIHVuZGVyIHRoZSBjdXJzb3IgdG8gYSBfWF8gb3IgX1ggdHlwZQotICovCi0gICAgc3RhdGljIHZvaWQKLWNoZ19jX3RvX1hfb3JfWCh2b2lkKQotewotICAgIGludAl0ZW1wYzsKLQotICAgIHRlbXBjID0gZ2NoYXJfY3Vyc29yKCk7Ci0KLSAgICBpZiAoY3Vyd2luLT53X2N1cnNvci5jb2wgKyAxIDwgKGNvbG5yX1QpU1RSTEVOKG1sX2dldF9jdXJsaW5lKCkpKQotICAgIHsKLQlpbmNfY3Vyc29yKCk7Ci0KLQlpZiAoKHRlbXBjID09IEZfSEUpICYmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19FRFQsIEFUX0NVUlNPUikpKQotCXsKLQkgICAgdGVtcGMgPSBfSEVfOwotCi0JICAgIGRlY19jdXJzb3IoKTsKLQotCSAgICBwdXRfYW5kX3JlZG8odGVtcGMpOwotCSAgICByZXR1cm47Ci0JfQotCi0JZGVjX2N1cnNvcigpOwotICAgIH0KLQotICAgIGlmICgodGVtcGMgPSB0b0ZfWG9yX1hfKHRlbXBjKSkgIT0gMCkKLQlwdXRfYW5kX3JlZG8odGVtcGMpOwotfQotCi0vKgotICogQ2hhbmdlIHRoZSBjaGFyYWN0ZXIgbGVmdCB0byB0aGUgY3Vyc29yIHRvIGEgX1hfIG9yIFhfIHR5cGUKLSAqLwotICAgIHN0YXRpYyB2b2lkCi1jaGdfbF90b19YX29yWF8odm9pZCkKLXsKLSAgICBpbnQJdGVtcGM7Ci0KLSAgICBpZiAoY3Vyd2luLT53X2N1cnNvci5jb2wgIT0gMCAmJgotCShjdXJ3aW4tPndfY3Vyc29yLmNvbCArIDEgPT0gKGNvbG5yX1QpU1RSTEVOKG1sX2dldF9jdXJsaW5lKCkpKSkKLQlyZXR1cm47Ci0KLSAgICBpZiAoIWN1cndpbi0+d19jdXJzb3IuY29sICYmIHBfcmkpCi0JcmV0dXJuOwotCi0gICAgaWYgKHBfcmkpCi0JZGVjX2N1cnNvcigpOwotICAgIGVsc2UKLQlpbmNfY3Vyc29yKCk7Ci0KLSAgICBzd2l0Y2ggKGdjaGFyX2N1cnNvcigpKQotICAgIHsKLQljYXNlIEFMRUY6Ci0JCXRlbXBjID0gQUxFRl87Ci0JCWJyZWFrOwotCWNhc2UgQUxFRl9VX0g6Ci0JCXRlbXBjID0gQUxFRl9VX0hfOwotCQlicmVhazsKLQljYXNlIF9BWU46Ci0JCXRlbXBjID0gX0FZTl87Ci0JCWJyZWFrOwotCWNhc2UgQVlOOgotCQl0ZW1wYyA9IEFZTl87Ci0JCWJyZWFrOwotCWNhc2UgX0dIQVlOOgotCQl0ZW1wYyA9IF9HSEFZTl87Ci0JCWJyZWFrOwotCWNhc2UgR0hBWU46Ci0JCXRlbXBjID0gR0hBWU5fOwotCQlicmVhazsKLQljYXNlIF9IRToKLQkJdGVtcGMgPSBfSEVfOwotCQlicmVhazsKLQljYXNlIFlFOgotCQl0ZW1wYyA9IFlFXzsKLQkJYnJlYWs7Ci0JY2FzZSBJRToKLQkJdGVtcGMgPSBJRV87Ci0JCWJyZWFrOwotCWNhc2UgVEVFOgotCQl0ZW1wYyA9IFRFRV87Ci0JCWJyZWFrOwotCWNhc2UgWUVFOgotCQl0ZW1wYyA9IFlFRV87Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXRlbXBjID0gMDsKLSAgICB9Ci0KLSAgICBpZiAodGVtcGMpCi0JcHV0X2FuZF9yZWRvKHRlbXBjKTsKLQotICAgIGlmIChwX3JpKQotCWluY19jdXJzb3IoKTsKLSAgICBlbHNlCi0JZGVjX2N1cnNvcigpOwotfQotCi0vKgotICogQ2hhbmdlIHRoZSBjaGFyYWN0ZXIgbGVmdCB0byB0aGUgY3Vyc29yIHRvIGEgWCBvciBfWCB0eXBlCi0gKi8KLSAgICBzdGF0aWMgdm9pZAotY2hnX2xfdG9Yb3JfWCh2b2lkKQotewotICAgIGludAl0ZW1wYzsKLQotICAgIGlmIChjdXJ3aW4tPndfY3Vyc29yLmNvbCAhPSAwICYmCi0JKGN1cndpbi0+d19jdXJzb3IuY29sICsgMSA9PSAoY29sbnJfVClTVFJMRU4obWxfZ2V0X2N1cmxpbmUoKSkpKQotCXJldHVybjsKLQotICAgIGlmICghY3Vyd2luLT53X2N1cnNvci5jb2wgJiYgcF9yaSkKLQlyZXR1cm47Ci0KLSAgICBpZiAocF9yaSkKLQlkZWNfY3Vyc29yKCk7Ci0gICAgZWxzZQotCWluY19jdXJzb3IoKTsKLQotICAgIHN3aXRjaCAoZ2NoYXJfY3Vyc29yKCkpCi0gICAgewotCWNhc2UgQUxFRl86Ci0JCXRlbXBjID0gQUxFRjsKLQkJYnJlYWs7Ci0JY2FzZSBBTEVGX1VfSF86Ci0JCXRlbXBjID0gQUxFRl9VX0g7Ci0JCWJyZWFrOwotCWNhc2UgX0FZTl86Ci0JCXRlbXBjID0gX0FZTjsKLQkJYnJlYWs7Ci0JY2FzZSBBWU5fOgotCQl0ZW1wYyA9IEFZTjsKLQkJYnJlYWs7Ci0JY2FzZSBfR0hBWU5fOgotCQl0ZW1wYyA9IF9HSEFZTjsKLQkJYnJlYWs7Ci0JY2FzZSBHSEFZTl86Ci0JCXRlbXBjID0gR0hBWU47Ci0JCWJyZWFrOwotCWNhc2UgX0hFXzoKLQkJdGVtcGMgPSBfSEU7Ci0JCWJyZWFrOwotCWNhc2UgWUVfOgotCQl0ZW1wYyA9IFlFOwotCQlicmVhazsKLQljYXNlIElFXzoKLQkJdGVtcGMgPSBJRTsKLQkJYnJlYWs7Ci0JY2FzZSBURUVfOgotCQl0ZW1wYyA9IFRFRTsKLQkJYnJlYWs7Ci0JY2FzZSBZRUVfOgotCQl0ZW1wYyA9IFlFRTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJdGVtcGMgPSAwOwotICAgIH0KLQotICAgIGlmICh0ZW1wYykKLQlwdXRfYW5kX3JlZG8odGVtcGMpOwotCi0gICAgaWYgKHBfcmkpCi0JaW5jX2N1cnNvcigpOwotICAgIGVsc2UKLQlkZWNfY3Vyc29yKCk7Ci19Ci0KLS8qCi0gKiBDaGFuZ2UgdGhlIGNoYXJhY3RlciByaWdodCB0byB0aGUgY3Vyc29yIHRvIGEgX1ggb3IgX1hfIHR5cGUKLSAqLwotICAgIHN0YXRpYyB2b2lkCi1jaGdfcl90b19Yb3JfWF8odm9pZCkKLXsKLSAgICBpbnQgdGVtcGMsIGM7Ci0KLSAgICBpZiAoY3Vyd2luLT53X2N1cnNvci5jb2wpCi0gICAgewotCWlmICghcF9yaSkKLQkgICAgZGVjX2N1cnNvcigpOwotCi0JdGVtcGMgPSBnY2hhcl9jdXJzb3IoKTsKLQotCWlmICgoYyA9IHRvRl9Yb3JfWF8odGVtcGMpKSAhPSAwKQotCSAgICBwdXRfYW5kX3JlZG8oYyk7Ci0KLQlpZiAoIXBfcmkpCi0JICAgIGluY19jdXJzb3IoKTsKLQotICAgIH0KLX0KLQotLyoKLSAqIE1hcCBGYXJzaSBrZXlib2FyZCB3aGVuIGluIGZrbWFwIG1vZGUuCi0gKi8KLSAgICBpbnQKLWZrbWFwKGludCBjKQotewotICAgIGludAkJdGVtcGM7Ci0gICAgaW50CQlpbnNlcnRfbW9kZSA9IChTdGF0ZSAmIElOU0VSVCk7Ci0gICAgc3RhdGljIGludAlyZXZpbnMgPSAwOwotCi0gICAgaWYgKElTX1NQRUNJQUwoYykpCi0JcmV0dXJuIGM7Ci0KLSAgICBpZiAoaW5zZXJ0X21vZGUpCi0gICAgewotCWlmIChWSU1fSVNESUdJVChjKSB8fCAoKGMgPT0gJy4nIHx8IGMgPT0gJysnIHx8IGMgPT0gJy0nIHx8Ci0JICAgIGMgPT0gJ14nIHx8IGMgPT0gJyUnIHx8IGMgPT0gJyMnIHx8IGMgPT0gJz0nKSAmJiByZXZpbnMpKQotCXsKLQkgICAgLyogTnVtYmVycyBhcmUgZW50ZXJlZCBsZWZ0LXRvLXJpZ2h0LiAqLwotCSAgICBpZiAoIXJldmlucykKLQkgICAgewotCQlpZiAoY3Vyd2luLT53X2N1cnNvci5jb2wpCi0JCXsKLQkJICAgIGlmICghcF9yaSkKLQkJCWRlY19jdXJzb3IoKTsKLQotCQkgICAgY2hnX2NfdG9YX29yWCAoKTsKLQkJICAgIGNoZ19sX3RvWG9yX1ggKCk7Ci0KLQkJICAgIGlmICghcF9yaSkKLQkJCWluY19jdXJzb3IoKTsKLQkJfQotCSAgICB9Ci0KLQkgICAgYXJyb3dfdXNlZCA9IFRSVUU7Ci0JICAgICh2b2lkKXN0b3BfYXJyb3coKTsKLQotCSAgICBpZiAoIWN1cndpbi0+d19wX3JsICYmIHJldmlucykKLQkJaW5jX2N1cnNvcigpOwotCi0JICAgICsrcmV2aW5zOwotCSAgICBwX3JpID0gMTsKLQl9Ci0JZWxzZSBpZiAocmV2aW5zKQotCXsKLQkgICAgLyogU3RvcCBlbnRlcmluZyBudW1iZXIuICovCi0JICAgIGFycm93X3VzZWQgPSBUUlVFOwotCSAgICAodm9pZClzdG9wX2Fycm93KCk7Ci0KLQkgICAgcmV2aW5zID0gMDsKLQkgICAgaWYgKGN1cndpbi0+d19wX3JsKQotCSAgICB7Ci0JCXdoaWxlICgoRl9pc2RpZ2l0KGdjaGFyX2N1cnNvcigpKQotCQkJICAgIHx8IChnY2hhcl9jdXJzb3IoKSA9PSBGX1BFUklPRAotCQkJCXx8IGdjaGFyX2N1cnNvcigpID09IEZfUExVUwotCQkJCXx8IGdjaGFyX2N1cnNvcigpID09IEZfTUlOVVMKLQkJCQl8fCBnY2hhcl9jdXJzb3IoKSA9PSBGX01VTAotCQkJCXx8IGdjaGFyX2N1cnNvcigpID09IEZfRElWSURFCi0JCQkJfHwgZ2NoYXJfY3Vyc29yKCkgPT0gRl9QRVJDRU5UCi0JCQkJfHwgZ2NoYXJfY3Vyc29yKCkgPT0gRl9FUVVBTFMpKQotCQkJJiYgZ2NoYXJfY3Vyc29yKCkgIT0gTlVMKQotCQkgICAgKytjdXJ3aW4tPndfY3Vyc29yLmNvbDsKLQkgICAgfQotCSAgICBlbHNlCi0JICAgIHsKLQkJaWYgKGN1cndpbi0+d19jdXJzb3IuY29sKQotCQkgICAgd2hpbGUgKChGX2lzZGlnaXQoZ2NoYXJfY3Vyc29yKCkpCi0JCQkgICAgfHwgKGdjaGFyX2N1cnNvcigpID09IEZfUEVSSU9ECi0JCQkJfHwgZ2NoYXJfY3Vyc29yKCkgPT0gRl9QTFVTCi0JCQkJfHwgZ2NoYXJfY3Vyc29yKCkgPT0gRl9NSU5VUwotCQkJCXx8IGdjaGFyX2N1cnNvcigpID09IEZfTVVMCi0JCQkJfHwgZ2NoYXJfY3Vyc29yKCkgPT0gRl9ESVZJREUKLQkJCQl8fCBnY2hhcl9jdXJzb3IoKSA9PSBGX1BFUkNFTlQKLQkJCQl8fCBnY2hhcl9jdXJzb3IoKSA9PSBGX0VRVUFMUykpCi0JCQkgICAgJiYgLS1jdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkJCTsKLQotCQlpZiAoIUZfaXNkaWdpdChnY2hhcl9jdXJzb3IoKSkpCi0JCSAgICArK2N1cndpbi0+d19jdXJzb3IuY29sOwotCSAgICB9Ci0JfQotICAgIH0KLQotICAgIGlmICghcmV2aW5zKQotICAgIHsKLQlpZiAoY3Vyd2luLT53X3BfcmwpCi0JICAgIHBfcmkgPSAwOwotCWlmICghY3Vyd2luLT53X3BfcmwpCi0JICAgIHBfcmkgPSAxOwotICAgIH0KLQotICAgIGlmICgoYyA8IDB4MTAwKSAmJiAoaXNhbHBoYShjKSB8fCBjID09ICcmJyB8fCBjID09ICdeJyB8fAljID09ICc7JyB8fAotCQkJICAgIGMgPT0gJ1wnJ3x8CWMgPT0gJywnIHx8IGMgPT0gJ1snIHx8Ci0JCQkgICAgYyA9PSAnXScgfHwJYyA9PSAneycgfHwgYyA9PSAnfScpKQotCWNoZ19yX3RvX1hvcl9YXygpOwotCi0gICAgdGVtcGMgPSAwOwotCi0gICAgc3dpdGNoIChjKQotICAgIHsKLQljYXNlICdgJzoKLQljYXNlICcgJzoKLQljYXNlICcuJzoKLQljYXNlICchJzoKLQljYXNlICciJzoKLQljYXNlICckJzoKLQljYXNlICclJzoKLQljYXNlICdeJzoKLQljYXNlICcmJzoKLQljYXNlICcvJzoKLQljYXNlICcoJzoKLQljYXNlICcpJzoKLQljYXNlICc9JzoKLQljYXNlICdcXCc6Ci0JY2FzZSAnPyc6Ci0JY2FzZSAnKyc6Ci0JY2FzZSAnLSc6Ci0JY2FzZSAnXyc6Ci0JY2FzZSAnKic6Ci0JY2FzZSAnOic6Ci0JY2FzZSAnIyc6Ci0JY2FzZSAnfic6Ci0JY2FzZSAnQCc6Ci0JY2FzZSAnPCc6Ci0JY2FzZSAnPic6Ci0JY2FzZSAneyc6Ci0JY2FzZSAnfSc6Ci0JY2FzZSAnfCc6Ci0JY2FzZSAnMCc6Ci0JY2FzZSAnMSc6Ci0JY2FzZSAnMic6Ci0JY2FzZSAnMyc6Ci0JY2FzZSAnNCc6Ci0JY2FzZSAnNSc6Ci0JY2FzZSAnNic6Ci0JY2FzZSAnNyc6Ci0JY2FzZSAnOCc6Ci0JY2FzZSAnOSc6Ci0JY2FzZSAnQic6Ci0JY2FzZSAnRSc6Ci0JY2FzZSAnRic6Ci0JY2FzZSAnSCc6Ci0JY2FzZSAnSSc6Ci0JY2FzZSAnSyc6Ci0JY2FzZSAnTCc6Ci0JY2FzZSAnTSc6Ci0JY2FzZSAnTyc6Ci0JY2FzZSAnUCc6Ci0JY2FzZSAnUSc6Ci0JY2FzZSAnUic6Ci0JY2FzZSAnVCc6Ci0JY2FzZSAnVSc6Ci0JY2FzZSAnVyc6Ci0JY2FzZSAnWSc6Ci0JY2FzZSAgTkw6Ci0JY2FzZSAgVEFCOgotCi0JICAgIGlmIChwX3JpICYmIGMgPT0gTkwgJiYgY3Vyd2luLT53X2N1cnNvci5jb2wgJiYgaW5zZXJ0X21vZGUpCi0JICAgIHsKLQkJLyoKLQkJICogSWYgdGhlIGNoYXIgYmVmb3JlIHRoZSBjdXJzb3IgaXMgX1hfIG9yIFhfIGRvIG5vdCBjaGFuZ2UKLQkJICogdGhlIG9uZSB1bmRlciB0aGUgY3Vyc29yIHdpdGggWCB0eXBlLgotCQkgKi8KLQkJZGVjX2N1cnNvcigpOwotCi0JCWlmIChGX2lzYWxwaGEoZ2NoYXJfY3Vyc29yKCkpKQotCQl7Ci0JCSAgICBpbmNfY3Vyc29yKCk7Ci0JCSAgICByZXR1cm4gTkw7Ci0JCX0KLQotCQlpbmNfY3Vyc29yKCk7Ci0JICAgIH0KLQotCSAgICBpZiAoIXBfcmkgJiYgIWN1cndpbi0+d19jdXJzb3IuY29sKQotCSAgICB7Ci0JCXN3aXRjaCAoYykKLQkJewotCQkgICAgY2FzZSAnMCc6CXJldHVybiBGQVJTSV8wOwotCQkgICAgY2FzZSAnMSc6CXJldHVybiBGQVJTSV8xOwotCQkgICAgY2FzZSAnMic6CXJldHVybiBGQVJTSV8yOwotCQkgICAgY2FzZSAnMyc6CXJldHVybiBGQVJTSV8zOwotCQkgICAgY2FzZSAnNCc6CXJldHVybiBGQVJTSV80OwotCQkgICAgY2FzZSAnNSc6CXJldHVybiBGQVJTSV81OwotCQkgICAgY2FzZSAnNic6CXJldHVybiBGQVJTSV82OwotCQkgICAgY2FzZSAnNyc6CXJldHVybiBGQVJTSV83OwotCQkgICAgY2FzZSAnOCc6CXJldHVybiBGQVJTSV84OwotCQkgICAgY2FzZSAnOSc6CXJldHVybiBGQVJTSV85OwotCQkgICAgY2FzZSAnQic6CXJldHVybiBGX1BTUDsKLQkJICAgIGNhc2UgJ0UnOglyZXR1cm4gSkFaUl9OOwotCQkgICAgY2FzZSAnRic6CXJldHVybiBBTEVGX0RfSDsKLQkJICAgIGNhc2UgJ0gnOglyZXR1cm4gQUxFRl9BOwotCQkgICAgY2FzZSAnSSc6CXJldHVybiBUQVNIOwotCQkgICAgY2FzZSAnSyc6CXJldHVybiBGX0xRVU9UOwotCQkgICAgY2FzZSAnTCc6CXJldHVybiBGX1JRVU9UOwotCQkgICAgY2FzZSAnTSc6CXJldHVybiBIQU1aRTsKLQkJICAgIGNhc2UgJ08nOglyZXR1cm4gJ1snOwotCQkgICAgY2FzZSAnUCc6CXJldHVybiAnXSc7Ci0JCSAgICBjYXNlICdRJzoJcmV0dXJuIE9POwotCQkgICAgY2FzZSAnUic6CXJldHVybiBNQURfTjsKLQkJICAgIGNhc2UgJ1QnOglyZXR1cm4gT1c7Ci0JCSAgICBjYXNlICdVJzoJcmV0dXJuIE1BRDsKLQkJICAgIGNhc2UgJ1cnOglyZXR1cm4gT1dfT1c7Ci0JCSAgICBjYXNlICdZJzoJcmV0dXJuIEpBWlI7Ci0JCSAgICBjYXNlICdgJzoJcmV0dXJuIEZfUENOOwotCQkgICAgY2FzZSAnISc6CXJldHVybiBGX0VYQ0w7Ci0JCSAgICBjYXNlICdAJzoJcmV0dXJuIEZfQ09NTUE7Ci0JCSAgICBjYXNlICcjJzoJcmV0dXJuIEZfRElWSURFOwotCQkgICAgY2FzZSAnJCc6CXJldHVybiBGX0NVUlJFTkNZOwotCQkgICAgY2FzZSAnJSc6CXJldHVybiBGX1BFUkNFTlQ7Ci0JCSAgICBjYXNlICdeJzoJcmV0dXJuIEZfTVVMOwotCQkgICAgY2FzZSAnJic6CXJldHVybiBGX0JDT01NQTsKLQkJICAgIGNhc2UgJyonOglyZXR1cm4gRl9TVEFSOwotCQkgICAgY2FzZSAnKCc6CXJldHVybiBGX0xQQVJFTlQ7Ci0JCSAgICBjYXNlICcpJzoJcmV0dXJuIEZfUlBBUkVOVDsKLQkJICAgIGNhc2UgJy0nOglyZXR1cm4gRl9NSU5VUzsKLQkJICAgIGNhc2UgJ18nOglyZXR1cm4gRl9VTkRFUkxJTkU7Ci0JCSAgICBjYXNlICc9JzoJcmV0dXJuIEZfRVFVQUxTOwotCQkgICAgY2FzZSAnKyc6CXJldHVybiBGX1BMVVM7Ci0JCSAgICBjYXNlICdcXCc6CXJldHVybiBGX0JTTEFTSDsKLQkJICAgIGNhc2UgJ3wnOglyZXR1cm4gRl9QSVBFOwotCQkgICAgY2FzZSAnOic6CXJldHVybiBGX0RDT0xPTjsKLQkJICAgIGNhc2UgJyInOglyZXR1cm4gRl9TRU1JQ09MT047Ci0JCSAgICBjYXNlICcuJzoJcmV0dXJuIEZfUEVSSU9EOwotCQkgICAgY2FzZSAnLyc6CXJldHVybiBGX1NMQVNIOwotCQkgICAgY2FzZSAnPCc6CXJldHVybiBGX0xFU1M7Ci0JCSAgICBjYXNlICc+JzoJcmV0dXJuIEZfR1JFQVRFUjsKLQkJICAgIGNhc2UgJz8nOglyZXR1cm4gRl9RVUVTVElPTjsKLQkJICAgIGNhc2UgJyAnOglyZXR1cm4gRl9CTEFOSzsKLQkJfQotCQlicmVhazsKLQkgICAgfQotCi0JICAgIGlmIChpbnNlcnRfbW9kZSkKLQkgICAgewotCQlpZiAoIXBfcmkpCi0JCSAgICBkZWNfY3Vyc29yKCk7Ci0KLQkJc3dpdGNoICgodGVtcGMgPSBnY2hhcl9jdXJzb3IoKSkpCi0JCXsKLQkJICAgIGNhc2UgX0JFOgotCQkgICAgY2FzZSBfUEU6Ci0JCSAgICBjYXNlIF9URToKLQkJICAgIGNhc2UgX1NFOgotCQkgICAgY2FzZSBfSklNOgotCQkgICAgY2FzZSBfQ0hFOgotCQkgICAgY2FzZSBfSEVfSjoKLQkJICAgIGNhc2UgX1hFOgotCQkgICAgY2FzZSBfU0lOOgotCQkgICAgY2FzZSBfU0hJTjoKLQkJICAgIGNhc2UgX1NBRDoKLQkJICAgIGNhc2UgX1pBRDoKLQkJICAgIGNhc2UgX0ZFOgotCQkgICAgY2FzZSBfR0hBRjoKLQkJICAgIGNhc2UgX0tBRjoKLQkJICAgIGNhc2UgX0tBRl9IOgotCQkgICAgY2FzZSBfR0FGOgotCQkgICAgY2FzZSBfTEFNOgotCQkgICAgY2FzZSBfTUlNOgotCQkgICAgY2FzZSBfTk9PTjoKLQkJICAgIGNhc2UgX0hFOgotCQkgICAgY2FzZSBfSEVfOgotCQkgICAgY2FzZSBfVEE6Ci0JCSAgICBjYXNlIF9aQToKLQkJCSAgICBwdXRfY3Vycl9hbmRfbF90b19YKHRvRl9UeUEodGVtcGMpKTsKLQkJCSAgICBicmVhazsKLQkJICAgIGNhc2UgX0FZTjoKLQkJICAgIGNhc2UgX0FZTl86Ci0KLQkJCSAgICBpZiAoIXBfcmkpCi0JCQkJaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkJCQl7Ci0JCQkJICAgIHB1dF9jdXJyX2FuZF9sX3RvX1goQVlOKTsKLQkJCQkgICAgYnJlYWs7Ci0JCQkJfQotCi0JCQkgICAgaWYgKHBfcmkpCi0JCQkJaW5jX2N1cnNvcigpOwotCQkJICAgIGVsc2UKLQkJCQlkZWNfY3Vyc29yKCk7Ci0KLQkJCSAgICBpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfRURULCBBVF9DVVJTT1IpKQotCQkJCXRlbXBjID0gQVlOXzsKLQkJCSAgICBlbHNlCi0JCQkJdGVtcGMgPSBBWU47Ci0KLQkJCSAgICBpZiAocF9yaSkKLQkJCQlkZWNfY3Vyc29yKCk7Ci0JCQkgICAgZWxzZQotCQkJCWluY19jdXJzb3IoKTsKLQotCQkJICAgIHB1dF9jdXJyX2FuZF9sX3RvX1godGVtcGMpOwotCi0JCQkgICAgYnJlYWs7Ci0JCSAgICBjYXNlIF9HSEFZTjoKLQkJICAgIGNhc2UgX0dIQVlOXzoKLQotCQkJICAgIGlmICghcF9yaSkKLQkJCQlpZiAoIWN1cndpbi0+d19jdXJzb3IuY29sKQotCQkJCXsKLQkJCQkgICAgcHV0X2N1cnJfYW5kX2xfdG9fWChHSEFZTik7Ci0JCQkJICAgIGJyZWFrOwotCQkJCX0KLQotCQkJICAgIGlmIChwX3JpKQotCQkJCWluY19jdXJzb3IoKTsKLQkJCSAgICBlbHNlCi0JCQkJZGVjX2N1cnNvcigpOwotCi0JCQkgICAgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0VEVCwgQVRfQ1VSU09SKSkKLQkJCQl0ZW1wYyA9IEdIQVlOXzsKLQkJCSAgICBlbHNlCi0JCQkJdGVtcGMgPSBHSEFZTjsKLQotCQkJICAgIGlmIChwX3JpKQotCQkJCWRlY19jdXJzb3IoKTsKLQkJCSAgICBlbHNlCi0JCQkJaW5jX2N1cnNvcigpOwotCi0JCQkgICAgcHV0X2N1cnJfYW5kX2xfdG9fWCh0ZW1wYyk7Ci0JCQkgICAgYnJlYWs7Ci0JCSAgICBjYXNlIF9ZRToKLQkJICAgIGNhc2UgX0lFOgotCQkgICAgY2FzZSBfWUVFOgotCQkJICAgIGlmICghcF9yaSkKLQkJCQlpZiAoIWN1cndpbi0+d19jdXJzb3IuY29sKQotCQkJCXsKLQkJCQkgICAgcHV0X2N1cnJfYW5kX2xfdG9fWCgodGVtcGMgPT0gX1lFID8gWUUgOgotCQkJCQkJKHRlbXBjID09IF9JRSA/IElFIDogWUVFKSkpOwotCQkJCSAgICBicmVhazsKLQkJCQl9Ci0KLQkJCSAgICBpZiAocF9yaSkKLQkJCQlpbmNfY3Vyc29yKCk7Ci0JCQkgICAgZWxzZQotCQkJCWRlY19jdXJzb3IoKTsKLQotCQkJICAgIGlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19FRFQsIEFUX0NVUlNPUikpCi0JCQkJICAgIHRlbXBjID0gKHRlbXBjID09IF9ZRSA/IFlFXyA6Ci0JCQkJCSh0ZW1wYyA9PSBfSUUgPyBJRV8gOiBZRUVfKSk7Ci0JCQkgICAgZWxzZQotCQkJCSAgICB0ZW1wYyA9ICh0ZW1wYyA9PSBfWUUgPyBZRSA6Ci0JCQkJCSh0ZW1wYyA9PSBfSUUgPyBJRSA6IFlFRSkpOwotCi0JCQkgICAgaWYgKHBfcmkpCi0JCQkJZGVjX2N1cnNvcigpOwotCQkJICAgIGVsc2UKLQkJCQlpbmNfY3Vyc29yKCk7Ci0KLQkJCSAgICBwdXRfY3Vycl9hbmRfbF90b19YKHRlbXBjKTsKLQkJCSAgICBicmVhazsKLQkJfQotCi0JCWlmICghcF9yaSkKLQkJICAgIGluY19jdXJzb3IoKTsKLQkgICAgfQotCi0JICAgIHRlbXBjID0gMDsKLQotCSAgICBzd2l0Y2ggKGMpCi0JICAgIHsKLQkJY2FzZSAnMCc6CXJldHVybiBGQVJTSV8wOwotCQljYXNlICcxJzoJcmV0dXJuIEZBUlNJXzE7Ci0JCWNhc2UgJzInOglyZXR1cm4gRkFSU0lfMjsKLQkJY2FzZSAnMyc6CXJldHVybiBGQVJTSV8zOwotCQljYXNlICc0JzoJcmV0dXJuIEZBUlNJXzQ7Ci0JCWNhc2UgJzUnOglyZXR1cm4gRkFSU0lfNTsKLQkJY2FzZSAnNic6CXJldHVybiBGQVJTSV82OwotCQljYXNlICc3JzoJcmV0dXJuIEZBUlNJXzc7Ci0JCWNhc2UgJzgnOglyZXR1cm4gRkFSU0lfODsKLQkJY2FzZSAnOSc6CXJldHVybiBGQVJTSV85OwotCQljYXNlICdCJzoJcmV0dXJuIEZfUFNQOwotCQljYXNlICdFJzoJcmV0dXJuIEpBWlJfTjsKLQkJY2FzZSAnRic6CXJldHVybiBBTEVGX0RfSDsKLQkJY2FzZSAnSCc6CXJldHVybiBBTEVGX0E7Ci0JCWNhc2UgJ0knOglyZXR1cm4gVEFTSDsKLQkJY2FzZSAnSyc6CXJldHVybiBGX0xRVU9UOwotCQljYXNlICdMJzoJcmV0dXJuIEZfUlFVT1Q7Ci0JCWNhc2UgJ00nOglyZXR1cm4gSEFNWkU7Ci0JCWNhc2UgJ08nOglyZXR1cm4gJ1snOwotCQljYXNlICdQJzoJcmV0dXJuICddJzsKLQkJY2FzZSAnUSc6CXJldHVybiBPTzsKLQkJY2FzZSAnUic6CXJldHVybiBNQURfTjsKLQkJY2FzZSAnVCc6CXJldHVybiBPVzsKLQkJY2FzZSAnVSc6CXJldHVybiBNQUQ7Ci0JCWNhc2UgJ1cnOglyZXR1cm4gT1dfT1c7Ci0JCWNhc2UgJ1knOglyZXR1cm4gSkFaUjsKLQkJY2FzZSAnYCc6CXJldHVybiBGX1BDTjsKLQkJY2FzZSAnISc6CXJldHVybiBGX0VYQ0w7Ci0JCWNhc2UgJ0AnOglyZXR1cm4gRl9DT01NQTsKLQkJY2FzZSAnIyc6CXJldHVybiBGX0RJVklERTsKLQkJY2FzZSAnJCc6CXJldHVybiBGX0NVUlJFTkNZOwotCQljYXNlICclJzoJcmV0dXJuIEZfUEVSQ0VOVDsKLQkJY2FzZSAnXic6CXJldHVybiBGX01VTDsKLQkJY2FzZSAnJic6CXJldHVybiBGX0JDT01NQTsKLQkJY2FzZSAnKic6CXJldHVybiBGX1NUQVI7Ci0JCWNhc2UgJygnOglyZXR1cm4gRl9MUEFSRU5UOwotCQljYXNlICcpJzoJcmV0dXJuIEZfUlBBUkVOVDsKLQkJY2FzZSAnLSc6CXJldHVybiBGX01JTlVTOwotCQljYXNlICdfJzoJcmV0dXJuIEZfVU5ERVJMSU5FOwotCQljYXNlICc9JzoJcmV0dXJuIEZfRVFVQUxTOwotCQljYXNlICcrJzoJcmV0dXJuIEZfUExVUzsKLQkJY2FzZSAnXFwnOglyZXR1cm4gRl9CU0xBU0g7Ci0JCWNhc2UgJ3wnOglyZXR1cm4gRl9QSVBFOwotCQljYXNlICc6JzoJcmV0dXJuIEZfRENPTE9OOwotCQljYXNlICciJzoJcmV0dXJuIEZfU0VNSUNPTE9OOwotCQljYXNlICcuJzoJcmV0dXJuIEZfUEVSSU9EOwotCQljYXNlICcvJzoJcmV0dXJuIEZfU0xBU0g7Ci0JCWNhc2UgJzwnOglyZXR1cm4gRl9MRVNTOwotCQljYXNlICc+JzoJcmV0dXJuIEZfR1JFQVRFUjsKLQkJY2FzZSAnPyc6CXJldHVybiBGX1FVRVNUSU9OOwotCQljYXNlICcgJzoJcmV0dXJuIEZfQkxBTks7Ci0JICAgIH0KLQkgICAgYnJlYWs7Ci0KLQljYXNlICdhJzoKLQkgICAgdGVtcGMgPSBfU0hJTjsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnQSc6Ci0JICAgIHRlbXBjID0gV0FXX0g7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ2InOgotCSAgICB0ZW1wYyA9IFpBTDsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnYyc6Ci0JICAgIHRlbXBjID0gWkU7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ0MnOgotCSAgICB0ZW1wYyA9IEpFOwotCSAgICBicmVhazsKLQljYXNlICdkJzoKLQkgICAgdGVtcGMgPSBfWUU7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ0QnOgotCSAgICB0ZW1wYyA9IF9ZRUU7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ2UnOgotCSAgICB0ZW1wYyA9IF9TRTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnZic6Ci0JICAgIHRlbXBjID0gX0JFOwotCSAgICBicmVhazsKLQljYXNlICdnJzoKLQkgICAgdGVtcGMgPSBfTEFNOwotCSAgICBicmVhazsKLQljYXNlICdHJzoKLQkgICAgaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCAgJiYgIFNUUkxFTihtbF9nZXRfY3VybGluZSgpKSkKLQkgICAgewotCi0JCWlmIChnY2hhcl9jdXJzb3IoKSA9PSBfTEFNKQotCQkgICAgY2hnX2NfdG9YX29yWCAoKTsKLQkJZWxzZSBpZiAocF9yaSkKLQkJICAgIGNoZ19jX3RvX1hfb3JfWCAoKTsKLQkgICAgfQotCi0JICAgIGlmICghcF9yaSkKLQkJaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkJICAgIHJldHVybiBBTEVGX1VfSDsKLQotCSAgICBpZiAoIXBfcmkpCi0JCWRlY19jdXJzb3IoKTsKLQotCSAgICBpZiAoZ2NoYXJfY3Vyc29yKCkgPT0gX0xBTSkKLQkgICAgewotCQljaGdfY190b1hfb3JYICgpOwotCQljaGdfbF90b1hvcl9YICgpOwotCQl0ZW1wYyA9IEFMRUZfVV9IOwotCSAgICB9Ci0JICAgIGVsc2UgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0VEVCwgQVRfQ1VSU09SKSkKLQkgICAgewotCQl0ZW1wYyA9IEFMRUZfVV9IXzsKLQkJY2hnX2xfdG9Yb3JfWCAoKTsKLQkgICAgfQotCSAgICBlbHNlCi0JCXRlbXBjID0gQUxFRl9VX0g7Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlpbmNfY3Vyc29yKCk7Ci0KLQkgICAgcmV0dXJuIHRlbXBjOwotCWNhc2UgJ2gnOgotCSAgICBpZiAoIWN1cndpbi0+d19jdXJzb3IuY29sICAmJiAgU1RSTEVOKG1sX2dldF9jdXJsaW5lKCkpKQotCQl7Ci0JCWlmIChwX3JpKQotCQkgICAgY2hnX2NfdG9fWF9vcl9YICgpOwotCi0JICAgIH0KLQotCSAgICBpZiAoIXBfcmkpCi0JCWlmICghY3Vyd2luLT53X2N1cnNvci5jb2wpCi0JCSAgICByZXR1cm4gQUxFRjsKLQotCSAgICBpZiAoIXBfcmkpCi0JCWRlY19jdXJzb3IoKTsKLQotCSAgICBpZiAoZ2NoYXJfY3Vyc29yKCkgPT0gX0xBTSkKLQkgICAgewotCQljaGdfbF90b1hvcl9YKCk7Ci0JCWRlbF9jaGFyKEZBTFNFKTsKLQkJQXBwZW5kQ2hhclRvUmVkb2J1ZmYoS19CUyk7Ci0KLQkJaWYgKCFwX3JpKQotCQkgICAgZGVjX2N1cnNvcigpOwotCi0JCXRlbXBjID0gTEE7Ci0JICAgIH0KLQkgICAgZWxzZQotCSAgICB7Ci0JCWlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19FRFQsIEFUX0NVUlNPUikpCi0JCXsKLQkJICAgIHRlbXBjID0gQUxFRl87Ci0JCSAgICBjaGdfbF90b1hvcl9YICgpOwotCQl9Ci0JCWVsc2UKLQkJICAgIHRlbXBjID0gQUxFRjsKLQkgICAgfQotCi0JICAgIGlmICghcF9yaSkKLQkJaW5jX2N1cnNvcigpOwotCi0JICAgIHJldHVybiB0ZW1wYzsKLQljYXNlICdpJzoKLQkgICAgaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCAmJiBTVFJMRU4obWxfZ2V0X2N1cmxpbmUoKSkpCi0JICAgIHsKLQkJaWYgKCFwX3JpICYmICFGX2lzX1R5RSh0ZW1wYykpCi0JCSAgICBjaGdfY190b19YX29yWF8gKCk7Ci0JCWlmIChwX3JpKQotCQkgICAgY2hnX2NfdG9fWF9vcl9YICgpOwotCi0JICAgIH0KLQotCSAgICBpZiAoIXBfcmkgJiYgIWN1cndpbi0+d19jdXJzb3IuY29sKQotCQlyZXR1cm4gX0hFOwotCi0JICAgIGlmICghcF9yaSkKLQkJZGVjX2N1cnNvcigpOwotCi0JICAgIGlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19FRFQsIEFUX0NVUlNPUikpCi0JCXRlbXBjID0gX0hFXzsKLQkgICAgZWxzZQotCQl0ZW1wYyA9IF9IRTsKLQotCSAgICBpZiAoIXBfcmkpCi0JCWluY19jdXJzb3IoKTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnaic6Ci0JICAgIHRlbXBjID0gX1RFOwotCSAgICBicmVhazsKLQljYXNlICdKJzoKLQkgICAgaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCAgJiYgIFNUUkxFTihtbF9nZXRfY3VybGluZSgpKSkKLQkgICAgewotCQlpZiAocF9yaSkKLQkJICAgIGNoZ19jX3RvX1hfb3JfWCAoKTsKLQotCSAgICB9Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlpZiAoIWN1cndpbi0+d19jdXJzb3IuY29sKQotCQkgICAgcmV0dXJuIFRFRTsKLQotCSAgICBpZiAoIXBfcmkpCi0JCWRlY19jdXJzb3IoKTsKLQotCSAgICBpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfRURULCBBVF9DVVJTT1IpKQotCSAgICB7Ci0JCXRlbXBjID0gVEVFXzsKLQkJY2hnX2xfdG9Yb3JfWCAoKTsKLQkgICAgfQotCSAgICBlbHNlCi0JCXRlbXBjID0gVEVFOwotCi0JICAgIGlmICghcF9yaSkKLQkJaW5jX2N1cnNvcigpOwotCi0JICAgIHJldHVybiB0ZW1wYzsKLQljYXNlICdrJzoKLQkgICAgdGVtcGMgPSBfTk9PTjsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnbCc6Ci0JICAgIHRlbXBjID0gX01JTTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnbSc6Ci0JICAgIHRlbXBjID0gX1BFOwotCSAgICBicmVhazsKLQljYXNlICduJzoKLQljYXNlICdOJzoKLQkgICAgdGVtcGMgPSBEQUw7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ28nOgotCSAgICB0ZW1wYyA9IF9YRTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAncCc6Ci0JICAgIHRlbXBjID0gX0hFX0o7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ3EnOgotCSAgICB0ZW1wYyA9IF9aQUQ7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ3InOgotCSAgICB0ZW1wYyA9IF9HSEFGOwotCSAgICBicmVhazsKLQljYXNlICdzJzoKLQkgICAgdGVtcGMgPSBfU0lOOwotCSAgICBicmVhazsKLQljYXNlICdTJzoKLQkgICAgdGVtcGMgPSBfSUU7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ3QnOgotCSAgICB0ZW1wYyA9IF9GRTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAndSc6Ci0JICAgIGlmICghY3Vyd2luLT53X2N1cnNvci5jb2wgICYmICBTVFJMRU4obWxfZ2V0X2N1cmxpbmUoKSkpCi0JICAgIHsKLQkJaWYgKCFwX3JpICYmICFGX2lzX1R5RSh0ZW1wYykpCi0JCSAgICBjaGdfY190b19YX29yWF8gKCk7Ci0JCWlmIChwX3JpKQotCQkgICAgY2hnX2NfdG9fWF9vcl9YICgpOwotCi0JICAgIH0KLQotCSAgICBpZiAoIXBfcmkgJiYgIWN1cndpbi0+d19jdXJzb3IuY29sKQotCQlyZXR1cm4gX0FZTjsKLQotCSAgICBpZiAoIXBfcmkpCi0JCWRlY19jdXJzb3IoKTsKLQotCSAgICBpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfRURULCBBVF9DVVJTT1IpKQotCQl0ZW1wYyA9IF9BWU5fOwotCSAgICBlbHNlCi0JCXRlbXBjID0gX0FZTjsKLQotCSAgICBpZiAoIXBfcmkpCi0JCWluY19jdXJzb3IoKTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAndic6Ci0JY2FzZSAnVic6Ci0JICAgIHRlbXBjID0gUkU7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ3cnOgotCSAgICB0ZW1wYyA9IF9TQUQ7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ3gnOgotCWNhc2UgJ1gnOgotCSAgICB0ZW1wYyA9IF9UQTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAneSc6Ci0JICAgIGlmICghY3Vyd2luLT53X2N1cnNvci5jb2wgICYmICBTVFJMRU4obWxfZ2V0X2N1cmxpbmUoKSkpCi0JICAgIHsKLQkJaWYgKCFwX3JpICYmICFGX2lzX1R5RSh0ZW1wYykpCi0JCSAgICBjaGdfY190b19YX29yWF8gKCk7Ci0JCWlmIChwX3JpKQotCQkgICAgY2hnX2NfdG9fWF9vcl9YICgpOwotCi0JICAgIH0KLQotCSAgICBpZiAoIXBfcmkgJiYgIWN1cndpbi0+d19jdXJzb3IuY29sKQotCQlyZXR1cm4gX0dIQVlOOwotCi0JICAgIGlmICghcF9yaSkKLQkJZGVjX2N1cnNvcigpOwotCi0JICAgIGlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19FRFQsIEFUX0NVUlNPUikpCi0JCXRlbXBjID0gX0dIQVlOXzsKLQkgICAgZWxzZQotCQl0ZW1wYyA9IF9HSEFZTjsKLQotCSAgICBpZiAoIXBfcmkpCi0JCWluY19jdXJzb3IoKTsKLQotCSAgICBicmVhazsKLQljYXNlICd6JzoKLQkgICAgdGVtcGMgPSBfWkE7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ1onOgotCSAgICB0ZW1wYyA9IF9LQUZfSDsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnOyc6Ci0JICAgIHRlbXBjID0gX0tBRjsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnXCcnOgotCSAgICB0ZW1wYyA9IF9HQUY7Ci0JICAgIGJyZWFrOwotCWNhc2UgJywnOgotCSAgICB0ZW1wYyA9IFdBVzsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnWyc6Ci0JICAgIHRlbXBjID0gX0pJTTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnXSc6Ci0JICAgIHRlbXBjID0gX0NIRTsKLQkgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKEZfaXNhbHBoYSh0ZW1wYykgfHwgRl9pc2RpZ2l0KHRlbXBjKSkKLSAgICB7Ci0JaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCAmJiBTVFJMRU4obWxfZ2V0X2N1cmxpbmUoKSkpCi0JewotCSAgICBpZiAoIXBfcmkgJiYgIUZfaXNfVHlFKHRlbXBjKSkKLQkJY2hnX2NfdG9fWF9vclhfKCk7Ci0JICAgIGlmIChwX3JpKQotCQljaGdfY190b19YX29yX1goKTsKLQl9Ci0KLQlpZiAoY3Vyd2luLT53X2N1cnNvci5jb2wpCi0JewotCSAgICBpZiAoIXBfcmkpCi0JCWRlY19jdXJzb3IoKTsKLQotCSAgICBpZiAoRl9pc19UeUUodGVtcGMpKQotCQljaGdfbF90b1hvcl9YKCk7Ci0JICAgIGVsc2UKLQkJY2hnX2xfdG9fWF9vclhfKCk7Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlpbmNfY3Vyc29yKCk7Ci0JfQotICAgIH0KLSAgICBpZiAodGVtcGMpCi0JcmV0dXJuIHRlbXBjOwotICAgIHJldHVybiBjOwotfQotCi0vKgotICogQ29udmVydCBhIG5vbmUgbGVhZGluZyBGYXJzaSBjaGFyIGludG8gYSBsZWFkaW5nIHR5cGUuCi0gKi8KLSAgICBzdGF0aWMgaW50Ci10b0ZfbGVhZGluZyhpbnQgYykKLXsKLSAgICBzd2l0Y2ggKGMpCi0gICAgewotCWNhc2UgQUxFRl86CXJldHVybiBBTEVGOwotCWNhc2UgQUxFRl9VX0hfOgkgICAgcmV0dXJuIEFMRUZfVV9IOwotCWNhc2UgQkU6ICAgIHJldHVybiBfQkU7Ci0JY2FzZSBQRTogICAgcmV0dXJuIF9QRTsKLQljYXNlIFRFOiAgICByZXR1cm4gX1RFOwotCWNhc2UgU0U6ICAgIHJldHVybiBfU0U7Ci0JY2FzZSBKSU06ICAgcmV0dXJuIF9KSU07Ci0JY2FzZSBDSEU6ICAgcmV0dXJuIF9DSEU7Ci0JY2FzZSBIRV9KOiAgcmV0dXJuIF9IRV9KOwotCWNhc2UgWEU6ICAgIHJldHVybiBfWEU7Ci0JY2FzZSBTSU46ICAgcmV0dXJuIF9TSU47Ci0JY2FzZSBTSElOOiAgcmV0dXJuIF9TSElOOwotCWNhc2UgU0FEOiAgIHJldHVybiBfU0FEOwotCWNhc2UgWkFEOiAgIHJldHVybiBfWkFEOwotCi0JY2FzZSBBWU46Ci0JY2FzZSBBWU5fOgotCWNhc2UgX0FZTl86IHJldHVybiBfQVlOOwotCi0JY2FzZSBHSEFZTjoKLQljYXNlIEdIQVlOXzoKLQljYXNlIF9HSEFZTl86CXJldHVybiBfR0hBWU47Ci0KLQljYXNlIEZFOiAgICByZXR1cm4gX0ZFOwotCWNhc2UgR0hBRjogIHJldHVybiBfR0hBRjsKLQljYXNlIEtBRjogICByZXR1cm4gX0tBRjsKLQljYXNlIEdBRjogICByZXR1cm4gX0dBRjsKLQljYXNlIExBTTogICByZXR1cm4gX0xBTTsKLQljYXNlIE1JTTogICByZXR1cm4gX01JTTsKLQljYXNlIE5PT046ICByZXR1cm4gX05PT047Ci0KLQljYXNlIF9IRV86Ci0JY2FzZSBGX0hFOglyZXR1cm4gX0hFOwotCi0JY2FzZSBZRToKLQljYXNlIFlFXzoJcmV0dXJuIF9ZRTsKLQotCWNhc2UgSUVfOgotCWNhc2UgSUU6CXJldHVybiBfSUU7Ci0KLQljYXNlIFlFRToKLQljYXNlIFlFRV86CXJldHVybiBfWUVFOwotICAgIH0KLSAgICByZXR1cm4gYzsKLX0KLQotLyoKLSAqIENvbnZlcnQgYSBnaXZlbiBGYXJzaSBjaGFyIGludG8gcmlnaHQgam9pbmluZyB0eXBlLgotICovCi0gICAgc3RhdGljIGludAotdG9GX1Jqb2luKGludCBjKQotewotICAgIHN3aXRjaCAoYykKLSAgICB7Ci0JY2FzZSBBTEVGOiAgcmV0dXJuIEFMRUZfOwotCWNhc2UgQUxFRl9VX0g6CXJldHVybiBBTEVGX1VfSF87Ci0JY2FzZSBCRTogICAgcmV0dXJuIF9CRTsKLQljYXNlIFBFOiAgICByZXR1cm4gX1BFOwotCWNhc2UgVEU6ICAgIHJldHVybiBfVEU7Ci0JY2FzZSBTRTogICAgcmV0dXJuIF9TRTsKLQljYXNlIEpJTTogICByZXR1cm4gX0pJTTsKLQljYXNlIENIRTogICByZXR1cm4gX0NIRTsKLQljYXNlIEhFX0o6ICByZXR1cm4gX0hFX0o7Ci0JY2FzZSBYRTogICAgcmV0dXJuIF9YRTsKLQljYXNlIFNJTjogICByZXR1cm4gX1NJTjsKLQljYXNlIFNISU46ICByZXR1cm4gX1NISU47Ci0JY2FzZSBTQUQ6ICAgcmV0dXJuIF9TQUQ7Ci0JY2FzZSBaQUQ6ICAgcmV0dXJuIF9aQUQ7Ci0KLQljYXNlIEFZTjoKLQljYXNlIEFZTl86Ci0JY2FzZSBfQVlOOiAgcmV0dXJuIF9BWU5fOwotCi0JY2FzZSBHSEFZTjoKLQljYXNlIEdIQVlOXzoKLQljYXNlIF9HSEFZTl86CXJldHVybiBfR0hBWU5fOwotCi0JY2FzZSBGRTogICAgcmV0dXJuIF9GRTsKLQljYXNlIEdIQUY6ICByZXR1cm4gX0dIQUY7Ci0JY2FzZSBLQUY6ICAgcmV0dXJuIF9LQUY7Ci0JY2FzZSBHQUY6ICAgcmV0dXJuIF9HQUY7Ci0JY2FzZSBMQU06ICAgcmV0dXJuIF9MQU07Ci0JY2FzZSBNSU06ICAgcmV0dXJuIF9NSU07Ci0JY2FzZSBOT09OOiAgcmV0dXJuIF9OT09OOwotCi0JY2FzZSBfSEU6Ci0JY2FzZSBGX0hFOglyZXR1cm4gX0hFXzsKLQotCWNhc2UgWUU6Ci0JY2FzZSBZRV86CXJldHVybiBfWUU7Ci0KLQljYXNlIElFXzoKLQljYXNlIElFOglyZXR1cm4gX0lFOwotCi0JY2FzZSBURUU6CXJldHVybiBURUVfOwotCi0JY2FzZSBZRUU6Ci0JY2FzZSBZRUVfOglyZXR1cm4gX1lFRTsKLSAgICB9Ci0gICAgcmV0dXJuIGM7Ci19Ci0KLS8qCi0gKiBDYW4gYSBnaXZlbiBGYXJzaSBjaGFyYWN0ZXIgam9pbiB2aWEgaXRzIGxlZnQgZWRqLgotICovCi0gICAgc3RhdGljIGludAotY2FuRl9Mam9pbihpbnQgYykKLXsKLSAgICBzd2l0Y2ggKGMpCi0gICAgewotCWNhc2UgX0JFOgotCWNhc2UgQkU6Ci0JY2FzZSBQRToKLQljYXNlIF9QRToKLQljYXNlIFRFOgotCWNhc2UgX1RFOgotCWNhc2UgU0U6Ci0JY2FzZSBfU0U6Ci0JY2FzZSBKSU06Ci0JY2FzZSBfSklNOgotCWNhc2UgQ0hFOgotCWNhc2UgX0NIRToKLQljYXNlIEhFX0o6Ci0JY2FzZSBfSEVfSjoKLQljYXNlIFhFOgotCWNhc2UgX1hFOgotCWNhc2UgU0lOOgotCWNhc2UgX1NJTjoKLQljYXNlIFNISU46Ci0JY2FzZSBfU0hJTjoKLQljYXNlIFNBRDoKLQljYXNlIF9TQUQ6Ci0JY2FzZSBaQUQ6Ci0JY2FzZSBfWkFEOgotCWNhc2UgX1RBOgotCWNhc2UgX1pBOgotCWNhc2UgQVlOOgotCWNhc2UgX0FZTjoKLQljYXNlIF9BWU5fOgotCWNhc2UgQVlOXzoKLQljYXNlIEdIQVlOOgotCWNhc2UgR0hBWU5fOgotCWNhc2UgX0dIQVlOXzoKLQljYXNlIF9HSEFZTjoKLQljYXNlIEZFOgotCWNhc2UgX0ZFOgotCWNhc2UgR0hBRjoKLQljYXNlIF9HSEFGOgotCWNhc2UgX0tBRl9IOgotCWNhc2UgS0FGOgotCWNhc2UgX0tBRjoKLQljYXNlIEdBRjoKLQljYXNlIF9HQUY6Ci0JY2FzZSBMQU06Ci0JY2FzZSBfTEFNOgotCWNhc2UgTUlNOgotCWNhc2UgX01JTToKLQljYXNlIE5PT046Ci0JY2FzZSBfTk9PTjoKLQljYXNlIElFOgotCWNhc2UgX0lFOgotCWNhc2UgSUVfOgotCWNhc2UgWUU6Ci0JY2FzZSBfWUU6Ci0JY2FzZSBZRV86Ci0JY2FzZSBZRUU6Ci0JY2FzZSBfWUVFOgotCWNhc2UgWUVFXzoKLQljYXNlIEZfSEU6Ci0JY2FzZSBfSEU6Ci0JY2FzZSBfSEVfOgotCSAgICByZXR1cm4gVFJVRTsKLSAgICB9Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi0vKgotICogQ2FuIGEgZ2l2ZW4gRmFyc2kgY2hhcmFjdGVyIGpvaW4gdmlhIGl0cyByaWdodCBlZGouCi0gKi8KLSAgICBzdGF0aWMgaW50Ci1jYW5GX1Jqb2luKGludCBjKQotewotICAgIHN3aXRjaCAoYykKLSAgICB7Ci0JY2FzZSBBTEVGOgotCWNhc2UgQUxFRl86Ci0JY2FzZSBBTEVGX1VfSDoKLQljYXNlIEFMRUZfVV9IXzoKLQljYXNlIERBTDoKLQljYXNlIFpBTDoKLQljYXNlIFJFOgotCWNhc2UgSkU6Ci0JY2FzZSBaRToKLQljYXNlIFRFRToKLQljYXNlIFRFRV86Ci0JY2FzZSBXQVc6Ci0JY2FzZSBXQVdfSDoKLQkgICAgcmV0dXJuIFRSVUU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNhbkZfTGpvaW4oYyk7Ci0KLX0KLQotLyoKLSAqIGlzIGEgZ2l2ZW4gRmFyc2kgY2hhcmFjdGVyIGEgdGVybWluYXRpbmcgdHlwZS4KLSAqLwotICAgIHN0YXRpYyBpbnQKLUZfaXN0ZXJtKGludCBjKQotewotICAgIHN3aXRjaCAoYykKLSAgICB7Ci0JY2FzZSBBTEVGOgotCWNhc2UgQUxFRl86Ci0JY2FzZSBBTEVGX1VfSDoKLQljYXNlIEFMRUZfVV9IXzoKLQljYXNlIERBTDoKLQljYXNlIFpBTDoKLQljYXNlIFJFOgotCWNhc2UgSkU6Ci0JY2FzZSBaRToKLQljYXNlIFdBVzoKLQljYXNlIFdBV19IOgotCWNhc2UgVEVFOgotCWNhc2UgVEVFXzoKLQkgICAgcmV0dXJuIFRSVUU7Ci0gICAgfQotCi0gICAgcmV0dXJuIEZBTFNFOwotfQotCi0vKgotICogQ29udmVydCB0aGUgZ2l2ZW4gRmFyc2kgY2hhcmFjdGVyIGludG8gYSBlbmRpbmcgdHlwZSAuCi0gKi8KLSAgICBzdGF0aWMgaW50Ci10b0ZfZW5kaW5nKGludCBjKQotewotICAgIHN3aXRjaCAoYykKLSAgICB7Ci0JY2FzZSBfQkU6IHJldHVybiBCRTsKLQljYXNlIF9QRTogcmV0dXJuIFBFOwotCWNhc2UgX1RFOiByZXR1cm4gVEU7Ci0JY2FzZSBfU0U6IHJldHVybiBTRTsKLQljYXNlIF9KSU06IHJldHVybiBKSU07Ci0JY2FzZSBfQ0hFOiByZXR1cm4gQ0hFOwotCWNhc2UgX0hFX0o6IHJldHVybiBIRV9KOwotCWNhc2UgX1hFOiByZXR1cm4gWEU7Ci0JY2FzZSBfU0lOOiByZXR1cm4gU0lOOwotCWNhc2UgX1NISU46IHJldHVybiBTSElOOwotCWNhc2UgX1NBRDogcmV0dXJuIFNBRDsKLQljYXNlIF9aQUQ6IHJldHVybiBaQUQ7Ci0JY2FzZSBfQVlOOiByZXR1cm4gQVlOOwotCWNhc2UgX0FZTl86IHJldHVybiBBWU5fOwotCWNhc2UgX0dIQVlOOiByZXR1cm4gR0hBWU47Ci0JY2FzZSBfR0hBWU5fOiByZXR1cm4gR0hBWU5fOwotCWNhc2UgX0ZFOiByZXR1cm4gRkU7Ci0JY2FzZSBfR0hBRjogcmV0dXJuIEdIQUY7Ci0JY2FzZSBfS0FGX0g6Ci0JY2FzZSBfS0FGOiByZXR1cm4gS0FGOwotCWNhc2UgX0dBRjogcmV0dXJuIEdBRjsKLQljYXNlIF9MQU06IHJldHVybiBMQU07Ci0JY2FzZSBfTUlNOiByZXR1cm4gTUlNOwotCWNhc2UgX05PT046IHJldHVybiBOT09OOwotCWNhc2UgX1lFOiByZXR1cm4gWUVfOwotCWNhc2UgWUVfOiByZXR1cm4gWUU7Ci0JY2FzZSBfWUVFOiByZXR1cm4gWUVFXzsKLQljYXNlIFlFRV86IHJldHVybiBZRUU7Ci0JY2FzZSBURUU6IHJldHVybiBURUVfOwotCWNhc2UgX0lFOiByZXR1cm4gSUVfOwotCWNhc2UgSUVfOiByZXR1cm4gSUU7Ci0JY2FzZSBfSEU6Ci0JY2FzZSBfSEVfOiByZXR1cm4gRl9IRTsKLSAgICB9Ci0gICAgcmV0dXJuIGM7Ci19Ci0KLS8qCi0gKiBDb252ZXJ0IHRoZSBGYXJzaSAzMzQyIHN0YW5kYXJkIGludG8gRmFyc2kgVklNLgotICovCi0gICAgc3RhdGljIHZvaWQKLWNvbnZfdG9fcHZpbSh2b2lkKQotewotICAgIGNoYXJfdQkqcHRyOwotICAgIGludAkJbG51bSwgbGxlbiwgaTsKLQotICAgIGZvciAobG51bSA9IDE7IGxudW0gPD0gY3VyYnVmLT5iX21sLm1sX2xpbmVfY291bnQ7ICsrbG51bSkKLSAgICB7Ci0JcHRyID0gbWxfZ2V0KChsaW5lbnJfVClsbnVtKTsKLQotCWxsZW4gPSAoaW50KVNUUkxFTihwdHIpOwotCi0JZm9yIChpID0gMDsgaSA8IGxsZW4tMTsgaSsrKQotCXsKLQkgICAgaWYgKGNhbkZfTGpvaW4ocHRyW2ldKSAmJiBjYW5GX1Jqb2luKHB0cltpKzFdKSkKLQkgICAgewotCQlwdHJbaV0gPSB0b0ZfbGVhZGluZyhwdHJbaV0pOwotCQkrK2k7Ci0KLQkJd2hpbGUgKGkgPCBsbGVuICYmIGNhbkZfUmpvaW4ocHRyW2ldKSkKLQkJewotCQkgICAgcHRyW2ldID0gdG9GX1Jqb2luKHB0cltpXSk7Ci0JCSAgICBpZiAoRl9pc3Rlcm0ocHRyW2ldKSB8fCAhRl9pc2FscGhhKHB0cltpXSkpCi0JCQlicmVhazsKLQkJICAgICsraTsKLQkJfQotCQlpZiAoIUZfaXNhbHBoYShwdHJbaV0pIHx8ICFjYW5GX1Jqb2luKHB0cltpXSkpCi0JCSAgICBwdHJbaS0xXSA9IHRvRl9lbmRpbmcocHRyW2ktMV0pOwotCSAgICB9Ci0JICAgIGVsc2UKLQkJcHRyW2ldID0gdG9GX1R5QShwdHJbaV0pOwotCX0KLSAgICB9Ci0KLSAgICAvKgotICAgICAqIEZvbGxvd2luZyBsaW5lcyBjb250YWlucyBGYXJzaSBlbmNvZGVkIGNoYXJhY3Rlci4KLSAgICAgKi8KLQotICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikiJXMvXDIwMlwyMzEvXDIzMi9nZSIpOwotICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikiJXMvXDIwMVwyMzEvXDM3MFwzMzQvZ2UiKTsKLQotICAgIC8qIEFzc3VtZSB0aGUgc2NyZWVuIGhhcyBiZWVuIG1lc3NlZCB1cDogY2xlYXIgaXQgYW5kIHJlZHJhdy4gKi8KLSAgICByZWRyYXdfbGF0ZXIoQ0xFQVIpOwotICAgIG1zZ19hdHRyKGZhcnNpX3RleHRfMSwgSExfQVRUUihITEZfUykpOwotfQotCi0vKgotICogQ29udmVydCB0aGUgRmFyc2kgVklNIGludG8gRmFyc2kgMzM0MiBzdGFuZGFyZC4KLSAqLwotICAgIHN0YXRpYyB2b2lkCi1jb252X3RvX3BzdGQodm9pZCkKLXsKLSAgICBjaGFyX3UJKnB0cjsKLSAgICBpbnQJCWxudW0sIGxsZW4sIGk7Ci0KLSAgICAvKgotICAgICAqIEZvbGxvd2luZyBsaW5lIGNvbnRhaW5zIEZhcnNpIGVuY29kZWQgY2hhcmFjdGVyLgotICAgICAqLwotICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikiJXMvXDIzMi9cMjAyXDIzMS9nZSIpOwotCi0gICAgZm9yIChsbnVtID0gMTsgbG51bSA8PSBjdXJidWYtPmJfbWwubWxfbGluZV9jb3VudDsgKytsbnVtKQotICAgIHsKLQlwdHIgPSBtbF9nZXQoKGxpbmVucl9UKWxudW0pOwotCWxsZW4gPSAoaW50KVNUUkxFTihwdHIpOwotCi0JZm9yIChpID0gMDsgaSA8IGxsZW47IGkrKykKLQkgICAgcHRyW2ldID0gdG9GX1R5QShwdHJbaV0pOwotICAgIH0KLQotICAgIC8qIEFzc3VtZSB0aGUgc2NyZWVuIGhhcyBiZWVuIG1lc3NlZCB1cDogY2xlYXIgaXQgYW5kIHJlZHJhdy4gKi8KLSAgICByZWRyYXdfbGF0ZXIoQ0xFQVIpOwotICAgIG1zZ19hdHRyKGZhcnNpX3RleHRfMiwgSExfQVRUUihITEZfUykpOwotfQotCi0vKgotICogbGVmdC1yaWdodCBzd2FwIHRoZSBjaGFyYWN0ZXJzIGluIGJ1ZltsZW5dLgotICovCi0gICAgc3RhdGljIHZvaWQKLWxyc3dhcGJ1ZihjaGFyX3UgKmJ1ZiwgaW50IGxlbikKLXsKLSAgICBjaGFyX3UJKnMsICplOwotICAgIGludAkJYzsKLQotICAgIHMgPSBidWY7Ci0gICAgZSA9IGJ1ZiArIGxlbiAtIDE7Ci0KLSAgICB3aGlsZSAoZSA+IHMpCi0gICAgewotCWMgPSAqczsKLQkqcyA9ICplOwotCSplID0gYzsKLQkrK3M7Ci0JLS1lOwotICAgIH0KLX0KLQotLyoKLSAqIHN3YXAgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHJldmVyc2UgZGlyZWN0aW9uCi0gKi8KLSAgICBjaGFyX3UgKgotbHJzd2FwKGNoYXJfdSAqaWJ1ZikKLXsKLSAgICBpZiAoaWJ1ZiAhPSBOVUxMICYmICppYnVmICE9IE5VTCkKLQlscnN3YXBidWYoaWJ1ZiwgKGludClTVFJMRU4oaWJ1ZikpOwotICAgIHJldHVybiBpYnVmOwotfQotCi0vKgotICogc3dhcCBhbGwgdGhlIEZhcnNpIGNoYXJhY3RlcnMgaW4gcmV2ZXJzZSBkaXJlY3Rpb24KLSAqLwotICAgIGNoYXJfdSAqCi1sckZzd2FwKGNoYXJfdSAqY21kYnVmLCBpbnQgbGVuKQotewotICAgIGludAkJaSwgY250OwotCi0gICAgaWYgKGNtZGJ1ZiA9PSBOVUxMKQotCXJldHVybiBjbWRidWY7Ci0KLSAgICBpZiAobGVuID09IDAgJiYgKGxlbiA9IChpbnQpU1RSTEVOKGNtZGJ1ZikpID09IDApCi0JcmV0dXJuIGNtZGJ1ZjsKLQotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICB7Ci0JZm9yIChjbnQgPSAwOyBpICsgY250IDwgbGVuCi0JCQkmJiAoRl9pc2FscGhhKGNtZGJ1ZltpICsgY250XSkKLQkJCSAgICB8fCBGX2lzZGlnaXQoY21kYnVmW2kgKyBjbnRdKQotCQkJICAgIHx8IGNtZGJ1ZltpICsgY250XSA9PSAnICcpOyArK2NudCkKLQkgICAgOwotCi0JbHJzd2FwYnVmKGNtZGJ1ZiArIGksIGNudCk7Ci0JaSArPSBjbnQ7Ci0gICAgfQotICAgIHJldHVybiBjbWRidWY7Ci19Ci0KLS8qCi0gKiBSZXZlcnNlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzZWFyY2ggcGF0aCBhbmQgc3Vic3RpdHV0ZSBzZWN0aW9uCi0gKiBhY2NvcmRpbmdseS4KLSAqIFRPRE86IGhhbmRsZSBkaWZmZXJlbnQgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICBVc2Ugc2tpcF9yZWdleHAoKS4KLSAqLwotICAgIGNoYXJfdSAqCi1sckZfc3ViKGNoYXJfdSAqaWJ1ZikKLXsKLSAgICBjaGFyX3UJKnAsICplcDsKLSAgICBpbnQJCWksIGNudDsKLQotICAgIHAgPSBpYnVmOwotCi0gICAgLyogRmluZCB0aGUgYm91bmRhcnkgb2YgdGhlIHNlYXJjaCBwYXRoICovCi0gICAgd2hpbGUgKCgocCA9IHZpbV9zdHJjaHIocCArIDEsICcvJykpICE9IE5VTEwpICYmIHBbLTFdID09ICdcXCcpCi0JOwotCi0gICAgaWYgKHAgPT0gTlVMTCkKLQlyZXR1cm4gaWJ1ZjsKLQotICAgIC8qIFJldmVyc2UgdGhlIEZhcnNpIGNoYXJhY3RlcnMgaW4gdGhlIHNlYXJjaCBwYXRoLiAqLwotICAgIGxyRnN3YXAoaWJ1ZiwgKGludCkocC1pYnVmKSk7Ci0KLSAgICAvKiBOb3cgZmluZCB0aGUgYm91bmRhcnkgb2YgdGhlIHN1YnN0aXR1dGUgc2VjdGlvbiAqLwotICAgIGlmICgoZXAgPSAoY2hhcl91ICopc3RycmNocigoY2hhciAqKSsrcCwgJy8nKSkgIT0gTlVMTCkKLQljbnQgPSAoaW50KShlcCAtIHApOwotICAgIGVsc2UKLQljbnQgPSAoaW50KVNUUkxFTihwKTsKLQotICAgIC8qIFJldmVyc2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHN1YnN0aXR1dGUgc2VjdGlvbiBhbmQgdGFrZSBjYXJlIG9mICdcJyAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBjbnQtMTsgaSsrKQotCWlmIChwW2ldID09ICdcXCcpCi0JewotCSAgICBwW2ldID0gcFtpKzFdIDsKLQkgICAgcFsrK2ldID0gJ1xcJzsKLQl9Ci0KLSAgICBscnN3YXBidWYocCwgY250KTsKLQotICAgIHJldHVybiBpYnVmOwotfQotCi0vKgotICogTWFwIEZhcnNpIGtleWJvYXJkIHdoZW4gaW4gY21kX2ZrbWFwIG1vZGUuCi0gKi8KLSAgICBpbnQKLWNtZGxfZmttYXAoaW50IGMpCi17Ci0gICAgaW50CSAgICB0ZW1wYzsKLQotICAgIHN3aXRjaCAoYykKLSAgICB7Ci0JY2FzZSAnMCc6Ci0JY2FzZSAnMSc6Ci0JY2FzZSAnMic6Ci0JY2FzZSAnMyc6Ci0JY2FzZSAnNCc6Ci0JY2FzZSAnNSc6Ci0JY2FzZSAnNic6Ci0JY2FzZSAnNyc6Ci0JY2FzZSAnOCc6Ci0JY2FzZSAnOSc6Ci0JY2FzZSAnYCc6Ci0JY2FzZSAnICc6Ci0JY2FzZSAnLic6Ci0JY2FzZSAnISc6Ci0JY2FzZSAnIic6Ci0JY2FzZSAnJCc6Ci0JY2FzZSAnJSc6Ci0JY2FzZSAnXic6Ci0JY2FzZSAnJic6Ci0JY2FzZSAnLyc6Ci0JY2FzZSAnKCc6Ci0JY2FzZSAnKSc6Ci0JY2FzZSAnPSc6Ci0JY2FzZSAnXFwnOgotCWNhc2UgJz8nOgotCWNhc2UgJysnOgotCWNhc2UgJy0nOgotCWNhc2UgJ18nOgotCWNhc2UgJyonOgotCWNhc2UgJzonOgotCWNhc2UgJyMnOgotCWNhc2UgJ34nOgotCWNhc2UgJ0AnOgotCWNhc2UgJzwnOgotCWNhc2UgJz4nOgotCWNhc2UgJ3snOgotCWNhc2UgJ30nOgotCWNhc2UgJ3wnOgotCWNhc2UgJ0InOgotCWNhc2UgJ0UnOgotCWNhc2UgJ0YnOgotCWNhc2UgJ0gnOgotCWNhc2UgJ0knOgotCWNhc2UgJ0snOgotCWNhc2UgJ0wnOgotCWNhc2UgJ00nOgotCWNhc2UgJ08nOgotCWNhc2UgJ1AnOgotCWNhc2UgJ1EnOgotCWNhc2UgJ1InOgotCWNhc2UgJ1QnOgotCWNhc2UgJ1UnOgotCWNhc2UgJ1cnOgotCWNhc2UgJ1knOgotCWNhc2UgIE5MOgotCWNhc2UgIFRBQjoKLQotCSAgICBzd2l0Y2ggKCh0ZW1wYyA9IGNtZF9nY2hhcihBVF9DVVJTT1IpKSkKLQkgICAgewotCQljYXNlIF9CRToKLQkJY2FzZSBfUEU6Ci0JCWNhc2UgX1RFOgotCQljYXNlIF9TRToKLQkJY2FzZSBfSklNOgotCQljYXNlIF9DSEU6Ci0JCWNhc2UgX0hFX0o6Ci0JCWNhc2UgX1hFOgotCQljYXNlIF9TSU46Ci0JCWNhc2UgX1NISU46Ci0JCWNhc2UgX1NBRDoKLQkJY2FzZSBfWkFEOgotCQljYXNlIF9BWU46Ci0JCWNhc2UgX0dIQVlOOgotCQljYXNlIF9GRToKLQkJY2FzZSBfR0hBRjoKLQkJY2FzZSBfS0FGOgotCQljYXNlIF9HQUY6Ci0JCWNhc2UgX0xBTToKLQkJY2FzZSBfTUlNOgotCQljYXNlIF9OT09OOgotCQljYXNlIF9IRToKLQkJY2FzZSBfSEVfOgotCQkgICAgY21kX3BjaGFyKHRvRl9UeUEodGVtcGMpLCBBVF9DVVJTT1IpOwotCQkgICAgYnJlYWs7Ci0JCWNhc2UgX0FZTl86Ci0JCSAgICBjbWRfcGNoYXIoQVlOXywgQVRfQ1VSU09SKTsKLQkJICAgIGJyZWFrOwotCQljYXNlIF9HSEFZTl86Ci0JCSAgICBjbWRfcGNoYXIoR0hBWU5fLCBBVF9DVVJTT1IpOwotCQkgICAgYnJlYWs7Ci0JCWNhc2UgX0lFOgotCQkgICAgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0NNRCwgQVRfQ1VSU09SKzEpKQotCQkJY21kX3BjaGFyKElFXywgQVRfQ1VSU09SKTsKLQkJICAgIGVsc2UKLQkJCWNtZF9wY2hhcihJRSwgQVRfQ1VSU09SKTsKLQkJICAgIGJyZWFrOwotCQljYXNlIF9ZRUU6Ci0JCSAgICBpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfQ01ELCBBVF9DVVJTT1IrMSkpCi0JCQljbWRfcGNoYXIoWUVFXywgQVRfQ1VSU09SKTsKLQkJICAgIGVsc2UKLQkJCWNtZF9wY2hhcihZRUUsIEFUX0NVUlNPUik7Ci0JCSAgICBicmVhazsKLQkJY2FzZSBfWUU6Ci0JCSAgICBpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfQ01ELCBBVF9DVVJTT1IrMSkpCi0JCQljbWRfcGNoYXIoWUVfLCBBVF9DVVJTT1IpOwotCQkgICAgZWxzZQotCQkJY21kX3BjaGFyKFlFLCBBVF9DVVJTT1IpOwotCSAgICB9Ci0KLQkgICAgc3dpdGNoIChjKQotCSAgICB7Ci0JCWNhc2UgJzAnOiAgIHJldHVybiBGQVJTSV8wOwotCQljYXNlICcxJzogICByZXR1cm4gRkFSU0lfMTsKLQkJY2FzZSAnMic6ICAgcmV0dXJuIEZBUlNJXzI7Ci0JCWNhc2UgJzMnOiAgIHJldHVybiBGQVJTSV8zOwotCQljYXNlICc0JzogICByZXR1cm4gRkFSU0lfNDsKLQkJY2FzZSAnNSc6ICAgcmV0dXJuIEZBUlNJXzU7Ci0JCWNhc2UgJzYnOiAgIHJldHVybiBGQVJTSV82OwotCQljYXNlICc3JzogICByZXR1cm4gRkFSU0lfNzsKLQkJY2FzZSAnOCc6ICAgcmV0dXJuIEZBUlNJXzg7Ci0JCWNhc2UgJzknOiAgIHJldHVybiBGQVJTSV85OwotCQljYXNlICdCJzogICByZXR1cm4gRl9QU1A7Ci0JCWNhc2UgJ0UnOiAgIHJldHVybiBKQVpSX047Ci0JCWNhc2UgJ0YnOiAgIHJldHVybiBBTEVGX0RfSDsKLQkJY2FzZSAnSCc6ICAgcmV0dXJuIEFMRUZfQTsKLQkJY2FzZSAnSSc6ICAgcmV0dXJuIFRBU0g7Ci0JCWNhc2UgJ0snOiAgIHJldHVybiBGX0xRVU9UOwotCQljYXNlICdMJzogICByZXR1cm4gRl9SUVVPVDsKLQkJY2FzZSAnTSc6ICAgcmV0dXJuIEhBTVpFOwotCQljYXNlICdPJzogICByZXR1cm4gJ1snOwotCQljYXNlICdQJzogICByZXR1cm4gJ10nOwotCQljYXNlICdRJzogICByZXR1cm4gT087Ci0JCWNhc2UgJ1InOiAgIHJldHVybiBNQURfTjsKLQkJY2FzZSAnVCc6ICAgcmV0dXJuIE9XOwotCQljYXNlICdVJzogICByZXR1cm4gTUFEOwotCQljYXNlICdXJzogICByZXR1cm4gT1dfT1c7Ci0JCWNhc2UgJ1knOiAgIHJldHVybiBKQVpSOwotCQljYXNlICdgJzogICByZXR1cm4gRl9QQ047Ci0JCWNhc2UgJyEnOiAgIHJldHVybiBGX0VYQ0w7Ci0JCWNhc2UgJ0AnOiAgIHJldHVybiBGX0NPTU1BOwotCQljYXNlICcjJzogICByZXR1cm4gRl9ESVZJREU7Ci0JCWNhc2UgJyQnOiAgIHJldHVybiBGX0NVUlJFTkNZOwotCQljYXNlICclJzogICByZXR1cm4gRl9QRVJDRU5UOwotCQljYXNlICdeJzogICByZXR1cm4gRl9NVUw7Ci0JCWNhc2UgJyYnOiAgIHJldHVybiBGX0JDT01NQTsKLQkJY2FzZSAnKic6ICAgcmV0dXJuIEZfU1RBUjsKLQkJY2FzZSAnKCc6ICAgcmV0dXJuIEZfTFBBUkVOVDsKLQkJY2FzZSAnKSc6ICAgcmV0dXJuIEZfUlBBUkVOVDsKLQkJY2FzZSAnLSc6ICAgcmV0dXJuIEZfTUlOVVM7Ci0JCWNhc2UgJ18nOiAgIHJldHVybiBGX1VOREVSTElORTsKLQkJY2FzZSAnPSc6ICAgcmV0dXJuIEZfRVFVQUxTOwotCQljYXNlICcrJzogICByZXR1cm4gRl9QTFVTOwotCQljYXNlICdcXCc6ICByZXR1cm4gRl9CU0xBU0g7Ci0JCWNhc2UgJ3wnOiAgIHJldHVybiBGX1BJUEU7Ci0JCWNhc2UgJzonOiAgIHJldHVybiBGX0RDT0xPTjsKLQkJY2FzZSAnIic6ICAgcmV0dXJuIEZfU0VNSUNPTE9OOwotCQljYXNlICcuJzogICByZXR1cm4gRl9QRVJJT0Q7Ci0JCWNhc2UgJy8nOiAgIHJldHVybiBGX1NMQVNIOwotCQljYXNlICc8JzogICByZXR1cm4gRl9MRVNTOwotCQljYXNlICc+JzogICByZXR1cm4gRl9HUkVBVEVSOwotCQljYXNlICc/JzogICByZXR1cm4gRl9RVUVTVElPTjsKLQkJY2FzZSAnICc6ICAgcmV0dXJuIEZfQkxBTks7Ci0JICAgIH0KLQotCSAgICBicmVhazsKLQotCWNhc2UgJ2EnOiAgIHJldHVybiBfU0hJTjsKLQljYXNlICdBJzogICByZXR1cm4gV0FXX0g7Ci0JY2FzZSAnYic6ICAgcmV0dXJuIFpBTDsKLQljYXNlICdjJzogICByZXR1cm4gWkU7Ci0JY2FzZSAnQyc6ICAgcmV0dXJuIEpFOwotCWNhc2UgJ2QnOiAgIHJldHVybiBfWUU7Ci0JY2FzZSAnRCc6ICAgcmV0dXJuIF9ZRUU7Ci0JY2FzZSAnZSc6ICAgcmV0dXJuIF9TRTsKLQljYXNlICdmJzogICByZXR1cm4gX0JFOwotCWNhc2UgJ2cnOiAgIHJldHVybiBfTEFNOwotCWNhc2UgJ0cnOgotCQlpZiAoY21kX2djaGFyKEFUX0NVUlNPUikgPT0gX0xBTSkKLQkJewotCQkgICAgY21kX3BjaGFyKExBTSwgQVRfQ1VSU09SKTsKLQkJCSAgICByZXR1cm4gQUxFRl9VX0g7Ci0JCX0KLQotCQlpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfQ01ELCBBVF9DVVJTT1IpKQotCQkJcmV0dXJuIEFMRUZfVV9IXzsKLQkJZWxzZQotCQkJcmV0dXJuIEFMRUZfVV9IOwotCWNhc2UgJ2gnOgotCQlpZiAoY21kX2djaGFyKEFUX0NVUlNPUikgPT0gX0xBTSkKLQkJewotCQkgICAgY21kX3BjaGFyKExBLCBBVF9DVVJTT1IpOwotCQkgICAgcmVkcmF3Y21kbGluZSgpOwotCQkgICAgcmV0dXJuIEtfSUdOT1JFOwotCQl9Ci0KLQkJaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0NNRCwgQVRfQ1VSU09SKSkKLQkJCXJldHVybiBBTEVGXzsKLQkJZWxzZQotCQkJcmV0dXJuIEFMRUY7Ci0JY2FzZSAnaSc6Ci0JCWlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19DTUQsIEFUX0NVUlNPUikpCi0JCQlyZXR1cm4gX0hFXzsKLQkJZWxzZQotCQkJcmV0dXJuIF9IRTsKLQljYXNlICdqJzogICByZXR1cm4gX1RFOwotCWNhc2UgJ0onOgotCQlpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfQ01ELCBBVF9DVVJTT1IpKQotCQkJcmV0dXJuIFRFRV87Ci0JCWVsc2UKLQkJCXJldHVybiBURUU7Ci0JY2FzZSAnayc6ICAgcmV0dXJuIF9OT09OOwotCWNhc2UgJ2wnOiAgIHJldHVybiBfTUlNOwotCWNhc2UgJ20nOiAgIHJldHVybiBfUEU7Ci0JY2FzZSAnbic6Ci0JY2FzZSAnTic6ICAgcmV0dXJuIERBTDsKLQljYXNlICdvJzogICByZXR1cm4gX1hFOwotCWNhc2UgJ3AnOiAgIHJldHVybiBfSEVfSjsKLQljYXNlICdxJzogICByZXR1cm4gX1pBRDsKLQljYXNlICdyJzogICByZXR1cm4gX0dIQUY7Ci0JY2FzZSAncyc6ICAgcmV0dXJuIF9TSU47Ci0JY2FzZSAnUyc6ICAgcmV0dXJuIF9JRTsKLQljYXNlICd0JzogICByZXR1cm4gX0ZFOwotCWNhc2UgJ3UnOgotCQlpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfQ01ELCBBVF9DVVJTT1IpKQotCQkJcmV0dXJuIF9BWU5fOwotCQllbHNlCi0JCQlyZXR1cm4gX0FZTjsKLQljYXNlICd2JzoKLQljYXNlICdWJzogICByZXR1cm4gUkU7Ci0JY2FzZSAndyc6ICAgcmV0dXJuIF9TQUQ7Ci0JY2FzZSAneCc6Ci0JY2FzZSAnWCc6ICAgcmV0dXJuIF9UQTsKLQljYXNlICd5JzoKLQkJaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0NNRCwgQVRfQ1VSU09SKSkKLQkJCXJldHVybiBfR0hBWU5fOwotCQllbHNlCi0JCQlyZXR1cm4gX0dIQVlOOwotCWNhc2UgJ3onOgotCWNhc2UgJ1onOiAgIHJldHVybiBfWkE7Ci0JY2FzZSAnOyc6ICAgcmV0dXJuIF9LQUY7Ci0JY2FzZSAnXCcnOiAgcmV0dXJuIF9HQUY7Ci0JY2FzZSAnLCc6ICAgcmV0dXJuIFdBVzsKLQljYXNlICdbJzogICByZXR1cm4gX0pJTTsKLQljYXNlICddJzogICByZXR1cm4gX0NIRTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYzsKLX0KLQotLyoKLSAqIEZfaXNhbHBoYSByZXR1cm5zIFRSVUUgaWYgJ2MnIGlzIGEgRmFyc2kgYWxwaGFiZXQKLSAqLwotICAgIGludAotRl9pc2FscGhhKGludCBjKQotewotICAgIHJldHVybiAoKGMgPj0gVEVFXyAmJiBjIDw9IF9ZRSkKLQkgICAgfHwgKGMgPj0gQUxFRl9BICYmIGMgPD0gWUUpCi0JICAgIHx8IChjID49IF9JRSAmJiBjIDw9IFlFXykpOwotfQotCi0vKgotICogRl9pc2RpZ2l0IHJldHVybnMgVFJVRSBpZiAnYycgaXMgYSBGYXJzaSBkaWdpdAotICovCi0gICAgaW50Ci1GX2lzZGlnaXQoaW50IGMpCi17Ci0gICAgcmV0dXJuIChjID49IEZBUlNJXzAgJiYgYyA8PSBGQVJTSV85KTsKLX0KLQotLyoKLSAqIEZfaXNjaGFyIHJldHVybnMgVFJVRSBpZiAnYycgaXMgYSBGYXJzaSBjaGFyYWN0ZXIuCi0gKi8KLSAgICBpbnQKLUZfaXNjaGFyKGludCBjKQotewotICAgIHJldHVybiAoYyA+PSBURUVfICYmIGMgPD0gWUVfKTsKLX0KLQotICAgIHZvaWQKLWZhcnNpX2Y4KGNtZGFyZ19UICpjYXAgVU5VU0VEKQotewotICAgIGlmIChwX2FsdGtleW1hcCkKLSAgICB7Ci0JaWYgKGN1cndpbi0+d19mYXJzaSAmIFdfUl9MKQotCXsKLQkgICAgcF9ma21hcCA9IDA7Ci0JICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikic2V0IG5vcmwiKTsKLQkgICAgbXNnKCIiKTsKLQl9Ci0JZWxzZQotCXsKLQkgICAgcF9ma21hcCA9IDE7Ci0JICAgIGRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikic2V0IHJsIik7Ci0JICAgIG1zZygiIik7Ci0JfQotCi0JY3Vyd2luLT53X2ZhcnNpID0gY3Vyd2luLT53X2ZhcnNpIF4gV19SX0w7Ci0gICAgfQotfQotCi0gICAgdm9pZAotZmFyc2lfZjkoY21kYXJnX1QgKmNhcCBVTlVTRUQpCi17Ci0gICAgaWYgKHBfYWx0a2V5bWFwICYmIGN1cndpbi0+d19wX3JsKQotICAgIHsKLQljdXJ3aW4tPndfZmFyc2kgPSBjdXJ3aW4tPndfZmFyc2kgXiBXX0NPTlY7Ci0JaWYgKGN1cndpbi0+d19mYXJzaSAmIFdfQ09OVikKLQkgICAgY29udl90b19wdmltKCk7Ci0JZWxzZQotCSAgICBjb252X3RvX3BzdGQoKTsKLSAgICB9Ci19Ci0KLSNlbmRpZiAvKiBGRUFUX0ZLTUFQICovCmRpZmYgLS1naXQgYS9zcmMvZmFyc2kuaCBiL3NyYy9mYXJzaS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTFiZGY3Li4wMDAwMDAwCi0tLSBhL3NyYy9mYXJzaS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLS8qIHZpOnNldCB0cz04IHN0cz00IHN3PTQgbm9ldDoKLSAqCi0gKiBWSU0gLSBWaSBJTXByb3ZlZAlieSBCcmFtIE1vb2xlbmFhcgotICoKLSAqIERvICI6aGVscCB1Z2FuZGEiICBpbiBWaW0gdG8gcmVhZCBjb3B5aW5nIGFuZCB1c2FnZSBjb25kaXRpb25zLgotICogRG8gIjpoZWxwIGNyZWRpdHMiIGluIFZpbSB0byBzZWUgYSBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQuCi0gKi8KLQotLyoKLSAqIEZhcnNpIGNoYXJhY3RlcnMgYXJlIGNhdGVnb3JpemVkIGludG8gZm9sbG93aW5nIHR5cGVzOgotICoKLSAqIFR5QQkoZm9yIGNhcGl0YWwgbGV0dGVyIHJlcHJlc2VudGF0aW9uKQotICogVHlCCShmb3IgdHlwZXMgdGhhdCBsb29rIGxpa2UgX1ggIGUuZy4gQVlOKQotICogVHlDCShmb3IgdHlwZXMgdGhhdCBsb29rIGxpa2UgWF8gIGUuZy4gWUVfKQotICogVHlECShmb3IgdHlwZXMgdGhhdCBsb29rIGxpa2UgX1hfICBlLmcuIF9BWU5fKQotICogVHlFCShmb3IgdHlwZXMgdGhhdCBsb29rIGxpa2UgWCAgZS5nLiBSRSkKLSAqLwotCi0vKgotICogRmFyc2kgY2hhcmFjdGVyIHNldCBkZWZpbml0aW9uCi0gKi8KLQotLyoKLSAqIEJlZ2luIG9mIHRoZSBub24tc3RhbmRhcmQgcGFydAotICovCi0KLSNkZWZpbmUgVEVFXwkJMHg4MAotI2RlZmluZSBBTEVGX1VfSF8JMHg4MQotI2RlZmluZSBBTEVGXwkJMHg4MgotI2RlZmluZSBfQkUJCTB4ODMKLSNkZWZpbmUgX1BFCQkweDg0Ci0jZGVmaW5lIF9URQkJMHg4NQotI2RlZmluZSBfU0UJCTB4ODYKLSNkZWZpbmUgX0pJTQkJMHg4NwotI2RlZmluZSBfQ0hFCQkweDg4Ci0jZGVmaW5lIF9IRV9KCQkweDg5Ci0jZGVmaW5lIF9YRQkJMHg4YQotI2RlZmluZSBfU0lOCQkweDhiCi0jZGVmaW5lIF9TSElOCQkweDhjCi0jZGVmaW5lIF9TQUQJCTB4OGQKLSNkZWZpbmUgX1pBRAkJMHg4ZQotI2RlZmluZSBfQVlOCQkweDhmCi0jZGVmaW5lIF9BWU5fCQkweDkwCi0jZGVmaW5lIEFZTl8JCTB4OTEKLSNkZWZpbmUgX0dIQVlOCQkweDkyCi0jZGVmaW5lIF9HSEFZTl8JCTB4OTMKLSNkZWZpbmUgR0hBWU5fCQkweDk0Ci0jZGVmaW5lIF9GRQkJMHg5NQotI2RlZmluZSBfR0hBRgkJMHg5NgotI2RlZmluZSBfS0FGCQkweDk3Ci0jZGVmaW5lIF9HQUYJCTB4OTgKLSNkZWZpbmUgX0xBTQkJMHg5OQotI2RlZmluZSBMQQkJMHg5YQotI2RlZmluZSBfTUlNCQkweDliCi0jZGVmaW5lIF9OT09OCQkweDljCi0jZGVmaW5lIF9IRQkJMHg5ZAotI2RlZmluZSBfSEVfCQkweDllCi0jZGVmaW5lIF9ZRQkJMHg5ZgotI2RlZmluZSBfSUUJCTB4ZWMKLSNkZWZpbmUgSUVfCQkweGVkCi0jZGVmaW5lIElFCQkweGZiCi0jZGVmaW5lIF9ZRUUJCTB4ZWUKLSNkZWZpbmUgWUVFXwkJMHhlZgotI2RlZmluZSBZRV8JCTB4ZmYKLQotLyoKLSAqIEVuZCBvZiB0aGUgbm9uLXN0YW5kYXJkIHBhcnQKLSAqLwotCi0vKgotICogU3RhbmRhcmQgcGFydAotICovCi0KLSNkZWZpbmUgRl9CTEFOSwkJMHhhMAkvKiBGYXJzaSAnICcgKFNQKSBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9QU1AJCTB4YTEJLyogUFNQIGZvciBjYXBpdGFsaXppbmcgb2YgYSBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9QQ04JCTB4YTIJLyogUENOIGZvciByZWRlZmluaW5nIG9mIHRoZSBoYW15ZSBtZWFuaW5nICovCi0jZGVmaW5lIEZfRVhDTAkJMHhhMwkvKiBGYXJzaSAhIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX0NVUlJFTkNZCTB4YTQJLyogRmFyc2kgUmlhbCBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9QRVJDRU5UCTB4YTUJLyogRmFyc2kgJSBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9QRVJJT0QJMHhhNgkvKiBGYXJzaSAnLicgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfQ09NTUEJCTB4YTcJLyogRmFyc2kgJywnIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX0xQQVJFTlQJMHhhOAkvKiBGYXJzaSAnKCcgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfUlBBUkVOVAkweGE5CS8qIEZhcnNpICcpJyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9NVUwJCTB4YWEJLyogRmFyc2kgJ3gnIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX1BMVVMJCTB4YWIJLyogRmFyc2kgJysnIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX0JDT01NQQkweGFjCS8qIEZhcnNpIGNvbW1hIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX01JTlVTCQkweGFkCS8qIEZhcnNpICctJyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9ESVZJREUJMHhhZQkvKiBGYXJzaSBkaXZpZGUgKC8pIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX1NMQVNICQkweGFmCS8qIEZhcnNpICcvJyBjaGFyYWN0ZXIgKi8KLQotI2RlZmluZSBGQVJTSV8wCQkweGIwCi0jZGVmaW5lIEZBUlNJXzEJCTB4YjEKLSNkZWZpbmUgRkFSU0lfMgkJMHhiMgotI2RlZmluZSBGQVJTSV8zCQkweGIzCi0jZGVmaW5lIEZBUlNJXzQJCTB4YjQKLSNkZWZpbmUgRkFSU0lfNQkJMHhiNQotI2RlZmluZSBGQVJTSV82CQkweGI2Ci0jZGVmaW5lIEZBUlNJXzcJCTB4YjcKLSNkZWZpbmUgRkFSU0lfOAkJMHhiOAotI2RlZmluZSBGQVJTSV85CQkweGI5Ci0KLSNkZWZpbmUgRl9EQ09MT04JMHhiYQkvKiBGYXJzaSAnOicgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfU0VNSUNPTE9OCTB4YmIJLyogRmFyc2kgJzsnIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX0dSRUFURVIJMHhiYwkvKiBGYXJzaSAnPicgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfRVFVQUxTCTB4YmQJLyogRmFyc2kgJz0nIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX0xFU1MJCTB4YmUJLyogRmFyc2kgJzwnIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX1FVRVNUSU9OCTB4YmYJLyogRmFyc2kgPyBjaGFyYWN0ZXIgKi8KLQotI2RlZmluZSBBTEVGX0EJMHhjMAotI2RlZmluZSBBTEVGCTB4YzEKLSNkZWZpbmUgSEFNWkUJMHhjMgotI2RlZmluZSBCRQkweGMzCi0jZGVmaW5lIFBFCTB4YzQKLSNkZWZpbmUgVEUJMHhjNQotI2RlZmluZSBTRQkweGM2Ci0jZGVmaW5lIEpJTQkweGM3Ci0jZGVmaW5lIENIRQkweGM4Ci0jZGVmaW5lIEhFX0oJMHhjOQotI2RlZmluZSBYRQkweGNhCi0jZGVmaW5lIERBTAkweGNiCi0jZGVmaW5lIFpBTAkweGNjCi0jZGVmaW5lIFJFCTB4Y2QKLSNkZWZpbmUgWkUJMHhjZQotI2RlZmluZSBKRQkweGNmCi0jZGVmaW5lIFNJTgkweGQwCi0jZGVmaW5lIFNISU4JMHhkMQotI2RlZmluZSBTQUQJMHhkMgotI2RlZmluZSBaQUQJMHhkMwotI2RlZmluZSBfVEEJMHhkNAotI2RlZmluZSBfWkEJMHhkNQotI2RlZmluZSBBWU4JMHhkNgotI2RlZmluZSBHSEFZTgkweGQ3Ci0jZGVmaW5lIEZFCTB4ZDgKLSNkZWZpbmUgR0hBRgkweGQ5Ci0jZGVmaW5lIEtBRgkweGRhCi0jZGVmaW5lIEdBRgkweGRiCi0jZGVmaW5lIExBTQkweGRjCi0jZGVmaW5lIE1JTQkweGRkCi0jZGVmaW5lIE5PT04JMHhkZQotI2RlZmluZSBXQVcJMHhkZgotI2RlZmluZSBGX0hFCTB4ZTAJCS8qIEZfIGFkZGVkIGZvciBuYW1lIGNsYXNoIHdpdGggUGVybCAqLwotI2RlZmluZSBZRQkweGUxCi0jZGVmaW5lIFRFRQkweGZjCi0jZGVmaW5lIF9LQUZfSAkweGZkCi0jZGVmaW5lIFlFRQkweGZlCi0KLSNkZWZpbmUgRl9MQlJBQ0sJMHhlMgkvKiBGYXJzaSAnWycgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfUkJSQUNLCTB4ZTMJLyogRmFyc2kgJ10nIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX0xCUkFDRQkweGU0CS8qIEZhcnNpICd7JyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9SQlJBQ0UJMHhlNQkvKiBGYXJzaSAnfScgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfTFFVT1QJCTB4ZTYJLyogRmFyc2kgbGVmdCBxdW90YXRpb24gY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfUlFVT1QJCTB4ZTcJLyogRmFyc2kgcmlnaHQgcXVvdGF0aW9uIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX1NUQVIJCTB4ZTgJLyogRmFyc2kgJyonIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX1VOREVSTElORQkweGU5CS8qIEZhcnNpICdfJyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9QSVBFCQkweGVhCS8qIEZhcnNpICd8JyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9CU0xBU0gJMHhlYgkvKiBGYXJzaSAnXCcgY2hhcmFjdGVyICovCi0KLSNkZWZpbmUgTUFECQkweGYwCi0jZGVmaW5lIEpBWlIJCTB4ZjEKLSNkZWZpbmUgT1cJCTB4ZjIKLSNkZWZpbmUgTUFEX04JCTB4ZjMKLSNkZWZpbmUgSkFaUl9OCQkweGY0Ci0jZGVmaW5lIE9XX09XCQkweGY1Ci0jZGVmaW5lIFRBU0gJCTB4ZjYKLSNkZWZpbmUgT08JCTB4ZjcKLSNkZWZpbmUgQUxFRl9VX0gJMHhmOAotI2RlZmluZSBXQVdfSAkJMHhmOQotI2RlZmluZSBBTEVGX0RfSAkweGZhCi0KLS8qCi0gKiBnbG9iYWwgZGVmaW5pdGlvbnMKLSAqID09PT09PT09PT09PT09PT09PQotICovCi0KLSNkZWZpbmUgU1JDX0VEVAkwCi0jZGVmaW5lIFNSQ19DTUQgMQotCi0jZGVmaW5lIEFUX0NVUlNPUiAwCi0KLS8qCi0gKiBkZWZpbml0aW9ucyBmb3IgdGhlIHdpbmRvdyBkZXBlbmRlbnQgZnVuY3Rpb25zICh3X2ZhcnNpKS4KLSAqLwotI2RlZmluZSBXX0NPTlYgMHgxCi0jZGVmaW5lIFdfUl9MICAweDIKLQotCi0vKiBzcGVjaWFsIEZhcnNpIHRleHQgbWVzc2FnZXMgKi8KLQotRVhURVJOIGNoYXIgZmFyc2lfdGV4dF8xW10KLSNpZmRlZiBET19JTklUCi0JCT0geyBZRV8sIF9TSU4sIFJFLCBBTEVGXywgX0ZFLCAnICcsICdWJywgJ0knLCAnTScsCi0JCSAgICAnICcsIEZfSEUsIF9CRSwgJyAnLCBTSElOLCBSRSwgX0dBRiwgREFMLCcgJywgTk9PTiwKLQkJICAgIEFMRUZfLCBfWUUsIEFMRUZfLCBfUEUsICdcMCd9Ci0jZW5kaWYKLQkJICAgICA7Ci0KLUVYVEVSTiBjaGFyIGZhcnNpX3RleHRfMltdCi0jaWZkZWYgRE9fSU5JVAotCQk9IHsgWUVfLCBfU0lOLCBSRSwgQUxFRl8sIF9GRSwgJyAnLCBGQVJTSV8zLCBGQVJTSV8zLAotCQkgICAgRkFSU0lfNCwgRkFSU0lfMiwgJyAnLCBEQUwsIFJFLCBBTEVGLCBEQUwsIF9OT09OLAotCQkgICAgQUxFRl8sIF9URSwgX1NJTiwgQUxFRiwgJyAnLCBGX0hFLCBfQkUsICcgJywgU0hJTiwKLQkJICAgIFJFLCAgX0dBRiwgREFMLCAnICcsIE5PT04sIEFMRUZfLCBfWUUsIEFMRUZfLCBfUEUsICdcMCd9Ci0jZW5kaWYKLQkJICAgICA7Ci0KLUVYVEVSTiBjaGFyIGZhcnNpX3RleHRfM1tdCi0jaWZkZWYgRE9fSU5JVAotCQk9IHsgREFMLCBXQVcsIF9TSElOLCBfWUUsIF9NSU0sIF9OT09OLCAnICcsIFlFXywgX05PT04sCi0JCSAgICBBTEVGXyxfQkUsIF9ZRSwgX1RFLCBfU0hJTiwgX1BFLCAnICcsICdSJywnRScsJ1AnLCdMJywKLQkJICAgICdBJywnQycsJ0UnLCAnICcsIE5PT04sIEFMRUZfLCBfTUlNLCBSRSwgX0ZFLCBaRSwgQUxFRiwKLQkJICAgICcgJywgJ1InLCAnRScsICdWJywgJ0UnLCAnUicsICdTJywgJ0UnLCAnICcsICdJJywgJ04nLAotCQkgICAgJ1MnLCAnRScsICdSJywgJ1QnLCAnICcsIFNISU4sIFdBVywgUkUsICcgJywgQUxFRl8sIF9CRSwKLQkJICAgICcgJywgWUVfLCBfU0lOLCBSRSwgQUxFRl8sIF9GRSwgJyAnLCBSRSwgREFMLCAnICcsIFJFLAotCQkgICAgQUxFRl8sIF9LQUYsJyAnLCBNSU0sIEFMRUZfLCBfR0FGLCBfTk9PTiwgX0hFLCAnXDAnfQotI2VuZGlmCi0JCSAgICA7Ci0KLSNpZiAwIC8qIG5vdCB1c2VkICovCi1FWFRFUk4gY2hhcl91IGZhcnNpX3RleHRfNFtdCi0jaWZkZWYgRE9fSU5JVAotCQk9IHsgREFMLCBXQVcsIF9TSElOLCBfWUUsIF9NSU0sIF9OT09OLCAnICcsIFlFXywgX05PT04sCi0JCSAgICBBTEVGXywgX0JFLCBfWUUsIF9URSwgX1NISU4sIF9QRSwgJyAnLCAnPCcsICdDJywnVCcsJ1InLAotCQkgICAgJ0wnLCctJywnQicsJz4nLCAnICcsIE5PT04sIEFMRUZfLCBfTUlNLCBSRSwgX0ZFLCBaRSwKLQkJICAgIEFMRUYsICcgJywgWUVfLCBfU0lOLCBSRSwgQUxFRl8sIF9GRSwgJyAnLCBSRSwgREFMLCAnICcsCi0JCSAgICBSRSwgQUxFRl8sIF9LQUYsJyAnLCBNSU0sIEFMRUZfLCBfR0FGLCBfTk9PTiwgX0hFLCAnXDAnfQotI2VuZGlmCi0JCSAgICA7Ci0jZW5kaWYKLQotRVhURVJOIGNoYXIgZmFyc2lfdGV4dF81W10KLSNpZmRlZiBET19JTklUCi0JCT0geyAnICcsIFlFXywgX1NJTiwgUkUsIEFMRUZfLCBfRkUsICdcMCd9Ci0jZW5kaWYKLQkJICAgIDsKZGlmZiAtLWdpdCBhL3NyYy9nZXRjaGFyLmMgYi9zcmMvZ2V0Y2hhci5jCmluZGV4IGZlNzRkYmYuLmVhZWYxYWIgMTAwNjQ0Ci0tLSBhL3NyYy9nZXRjaGFyLmMKKysrIGIvc3JjL2dldGNoYXIuYwpAQCAtMzM2MSwxNSArMzM2MSw2IEBACiAJICAgIHJocyA9IHJlcGxhY2VfdGVybWNvZGVzKHJocywgJmFyZ19idWYsIEZBTFNFLCBUUlVFLCBzcGVjaWFsKTsKICAgICB9CiAKLSNpZmRlZiBGRUFUX0ZLTUFQCi0gICAgLyoKLSAgICAgKiBXaGVuIGluIHJpZ2h0LXRvLWxlZnQgbW9kZSBhbmQgYWx0ZXJuYXRlIGtleW1hcCBvcHRpb24gc2V0LAotICAgICAqIHJldmVyc2UgdGhlIGNoYXJhY3RlciBmbG93IGluIHRoZSByaHMgaW4gRmFyc2kuCi0gICAgICovCi0gICAgaWYgKHBfYWx0a2V5bWFwICYmIGN1cndpbi0+d19wX3JsKQotCWxyc3dhcChyaHMpOwotI2VuZGlmCi0KICAgICAvKgogICAgICAqIGNoZWNrIGFyZ3VtZW50cyBhbmQgdHJhbnNsYXRlIGZ1bmN0aW9uIGtleXMKICAgICAgKi8KZGlmZiAtLWdpdCBhL3NyYy9nbG9iYWxzLmggYi9zcmMvZ2xvYmFscy5oCmluZGV4IDZjYzNiZTIuLjgyZTY2M2UgMTAwNjQ0Ci0tLSBhL3NyYy9nbG9iYWxzLmgKKysrIGIvc3JjL2dsb2JhbHMuaApAQCAtMTQ1MCw5ICsxNDUwLDcgQEAKICNpZm5kZWYgRkVBVF9SSUdIVExFRlQKIEVYVEVSTiBjaGFyIGVfbm9oZWJyZXdbXQlJTklUKD0gTl8oIkUyNjogSGVicmV3IGNhbm5vdCBiZSB1c2VkOiBOb3QgZW5hYmxlZCBhdCBjb21waWxlIHRpbWVcbiIpKTsKICNlbmRpZgotI2lmbmRlZiBGRUFUX0ZLTUFQCi1FWFRFUk4gY2hhciBlX25vZmFyc2lbXQlJTklUKD0gTl8oIkUyNzogRmFyc2kgY2Fubm90IGJlIHVzZWQ6IE5vdCBlbmFibGVkIGF0IGNvbXBpbGUgdGltZVxuIikpOwotI2VuZGlmCitFWFRFUk4gY2hhciBlX25vZmFyc2lbXQkJSU5JVCg9IE5fKCJFMjc6IEZhcnNpIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZFxuIikpOwogI2lmbmRlZiBGRUFUX0FSQUJJQwogRVhURVJOIGNoYXIgZV9ub2FyYWJpY1tdCUlOSVQoPSBOXygiRTgwMDogQXJhYmljIGNhbm5vdCBiZSB1c2VkOiBOb3QgZW5hYmxlZCBhdCBjb21waWxlIHRpbWVcbiIpKTsKICNlbmRpZgpAQCAtMTY1NiwxMyArMTY1NCw2IEBACiAjZW5kaWYKIAogLyoKLSAqIE9wdGlvbmFsIEZhcnNpIHN1cHBvcnQuICBJbmNsdWRlIGl0IGhlcmUsIHNvIEVYVEVSTiBhbmQgSU5JVCBhcmUgZGVmaW5lZC4KLSAqLwotI2lmZGVmIEZFQVRfRktNQVAKLSMgaW5jbHVkZSAiZmFyc2kuaCIKLSNlbmRpZgotCi0vKgogICogT3B0aW9uYWwgQXJhYmljIHN1cHBvcnQuIEluY2x1ZGUgaXQgaGVyZSwgc28gRVhURVJOIGFuZCBJTklUIGFyZSBkZWZpbmVkLgogICovCiAjaWZkZWYgRkVBVF9BUkFCSUMKZGlmZiAtLWdpdCBhL3NyYy9tYWluLmMgYi9zcmMvbWFpbi5jCmluZGV4IGRmMjA0YmMuLjZhZDZmZmYgMTAwNjQ0Ci0tLSBhL3NyYy9tYWluLmMKKysrIGIvc3JjL21haW4uYwpAQCAtNTM1LDE3ICs1MzUsNiBAQAogICAgIGlmIChwYXJhbXMubm9fc3dhcF9maWxlKQogCXBfdWMgPSAwOwogCi0jaWZkZWYgRkVBVF9GS01BUAotICAgIGlmIChjdXJ3aW4tPndfcF9ybCAmJiBwX2FsdGtleW1hcCkKLSAgICB7Ci0JcF9oa21hcCA9IEZBTFNFOwkvKiBSZXNldCB0aGUgSGVicmV3IGtleW1hcCBtb2RlICovCi0jIGlmZGVmIEZFQVRfQVJBQklDCi0JY3Vyd2luLT53X3BfYXJhYiA9IEZBTFNFOyAvKiBSZXNldCB0aGUgQXJhYmljIGtleW1hcCBtb2RlICovCi0jIGVuZGlmCi0JcF9ma21hcCA9IFRSVUU7CQkvKiBTZXQgdGhlIEZhcnNpIGtleW1hcCBtb2RlICovCi0gICAgfQotI2VuZGlmCi0KICNpZmRlZiBGRUFUX0dVSQogICAgIGlmIChndWkuc3RhcnRpbmcpCiAgICAgewpAQCAtMjAyNSwxNCArMjAxNCw5IEBACiAJCW1haW5fc3RhcnRfZ3VpKCk7CiAJCWJyZWFrOwogCi0JICAgIGNhc2UgJ0YnOgkJLyogIi1GIiBzdGFydCBpbiBGYXJzaSBtb2RlOiBybCArIGZrbWFwIHNldCAqLwotI2lmZGVmIEZFQVRfRktNQVAKLQkJcF9ma21hcCA9IFRSVUU7Ci0JCXNldF9vcHRpb25fdmFsdWUoKGNoYXJfdSAqKSJybCIsIDFMLCBOVUxMLCAwKTsKLSNlbHNlCisJICAgIGNhc2UgJ0YnOgkJLyogIi1GIiB3YXMgZm9yIEZhcnNpIG1vZGUgKi8KIAkJbWNoX2Vycm1zZyhfKGVfbm9mYXJzaSkpOwogCQltY2hfZXhpdCgyKTsKLSNlbmRpZgogCQlicmVhazsKIAogCSAgICBjYXNlICc/JzoJCS8qICItPyIgZ2l2ZSBoZWxwIG1lc3NhZ2UgKGZvciBNUy1XaW5kb3dzKSAqLwpAQCAtMzM1MSw5ICszMzM1LDYgQEAKICNpZmRlZiBGRUFUX1JJR0hUTEVGVAogICAgIG1haW5fbXNnKF8oIi1IXHRcdFx0U3RhcnQgaW4gSGVicmV3IG1vZGUiKSk7CiAjZW5kaWYKLSNpZmRlZiBGRUFUX0ZLTUFQCi0gICAgbWFpbl9tc2coXygiLUZcdFx0XHRTdGFydCBpbiBGYXJzaSBtb2RlIikpOwotI2VuZGlmCiAgICAgbWFpbl9tc2coXygiLVQgPHRlcm1pbmFsPlx0U2V0IHRlcm1pbmFsIHR5cGUgdG8gPHRlcm1pbmFsPiIpKTsKICAgICBtYWluX21zZyhfKCItLW5vdC1hLXRlcm1cdFx0U2tpcCB3YXJuaW5nIGZvciBpbnB1dC9vdXRwdXQgbm90IGJlaW5nIGEgdGVybWluYWwiKSk7CiAgICAgbWFpbl9tc2coXygiLS10dHlmYWlsXHRcdEV4aXQgaWYgaW5wdXQgb3Igb3V0cHV0IGlzIG5vdCBhIHRlcm1pbmFsIikpOwpkaWZmIC0tZ2l0IGEvc3JjL25vcm1hbC5jIGIvc3JjL25vcm1hbC5jCmluZGV4IDQxYWY5NjYuLjYyNGUzNDcgMTAwNjQ0Ci0tLSBhL3NyYy9ub3JtYWwuYworKysgYi9zcmMvbm9ybWFsLmMKQEAgLTM5NywxMCArMzk3LDYgQEAKICAgICB7S19UQUJMSU5FLCBudl90YWJsaW5lLAkwLAkJCTB9LAogICAgIHtLX1RBQk1FTlUsIG52X3RhYm1lbnUsCTAsCQkJMH0sCiAjZW5kaWYKLSNpZmRlZiBGRUFUX0ZLTUFQCi0gICAge0tfRjgsCWZhcnNpX2Y4LAkwLAkJCTB9LAotICAgIHtLX0Y5LAlmYXJzaV9mOSwJMCwJCQkwfSwKLSNlbmRpZgogI2lmZGVmIEZFQVRfTkVUQkVBTlNfSU5URwogICAgIHtLX0YyMSwJbnZfbmJjbWQsCU5WX05DSF9BTFcsCQkwfSwKICNlbmRpZgpAQCAtOTg3LDExICs5ODMsNiBAQAogCQkvKiBhZGp1c3QgSGVicmV3IG1hcHBlZCBjaGFyICovCiAJCWlmIChwX2hrbWFwICYmIGxhbmcgJiYgS2V5VHlwZWQpCiAJCSAgICAqY3AgPSBoa21hcCgqY3ApOwotIyBpZmRlZiBGRUFUX0ZLTUFQCi0JCS8qIGFkanVzdCBGYXJzaSBtYXBwZWQgY2hhciAqLwotCQlpZiAocF9ma21hcCAmJiBsYW5nICYmIEtleVR5cGVkKQotCQkgICAgKmNwID0gZmttYXAoKmNwKTsKLSMgZW5kaWYKICNlbmRpZgogCSAgICB9CiAKZGlmZiAtLWdpdCBhL3NyYy9vcHRpb24uYyBiL3NyYy9vcHRpb24uYwppbmRleCBjODgwOGJlLi5iOWZlM2RhIDEwMDY0NAotLS0gYS9zcmMvb3B0aW9uLmMKKysrIGIvc3JjL29wdGlvbi5jCkBAIC01NDIsMTEgKzU0Miw3IEBACiAjZW5kaWYKIAkJCSAgICB7KGNoYXJfdSAqKUZBTFNFLCAoY2hhcl91ICopMEx9IFNDVFhfSU5JVH0sCiAgICAgeyJhbHRrZXltYXAiLCAgICJha20iLCAgUF9CT09MfFBfVklfREVGLAotI2lmZGVmIEZFQVRfRktNQVAKLQkJCSAgICAoY2hhcl91ICopJnBfYWx0a2V5bWFwLCBQVl9OT05FLAotI2Vsc2UKIAkJCSAgICAoY2hhcl91ICopTlVMTCwgUFZfTk9ORSwKLSNlbmRpZgogCQkJICAgIHsoY2hhcl91ICopRkFMU0UsIChjaGFyX3UgKikwTH0gU0NUWF9JTklUfSwKICAgICB7ImFtYml3aWR0aCIsICAiYW1idyIsICBQX1NUUklOR3xQX1ZJX0RFRnxQX1JDTFIsCiAJCQkgICAgKGNoYXJfdSAqKSZwX2FtYncsIFBWX05PTkUsCkBAIC0xMTQxLDExICsxMTM3LDcgQEAKIAkJCSAgICAoY2hhcl91ICopJnBfZml4ZW9sLCBQVl9GSVhFT0wsCiAJCQkgICAgeyhjaGFyX3UgKilUUlVFLCAoY2hhcl91ICopMEx9IFNDVFhfSU5JVH0sCiAgICAgeyJma21hcCIsCSAgICAiZmsiLCAgIFBfQk9PTHxQX1ZJX0RFRiwKLSNpZmRlZiBGRUFUX0ZLTUFQCi0JCQkgICAgKGNoYXJfdSAqKSZwX2ZrbWFwLCBQVl9OT05FLAotI2Vsc2UKIAkJCSAgICAoY2hhcl91ICopTlVMTCwgUFZfTk9ORSwKLSNlbmRpZgogCQkJICAgIHsoY2hhcl91ICopRkFMU0UsIChjaGFyX3UgKikwTH0gU0NUWF9JTklUfSwKICAgICB7ImZsYXNoIiwJICAgICJmbCIsICAgUF9CT09MfFBfVklfREVGLAogCQkJICAgIChjaGFyX3UgKilOVUxMLCBQVl9OT05FLApAQCAtODcwNyw2OSArODY5OSw2IEBACiAgICAgfQogI2VuZGlmCiAKLSNpZmRlZiBGRUFUX0ZLTUFQCi0gICAgZWxzZSBpZiAoKGludCAqKXZhcnAgPT0gJnBfYWx0a2V5bWFwKQotICAgIHsKLQlpZiAob2xkX3ZhbHVlICE9IHBfYWx0a2V5bWFwKQotCXsKLQkgICAgaWYgKCFwX2FsdGtleW1hcCkKLQkgICAgewotCQlwX2hrbWFwID0gcF9ma21hcDsKLQkJcF9ma21hcCA9IDA7Ci0JICAgIH0KLQkgICAgZWxzZQotCSAgICB7Ci0JCXBfZmttYXAgPSBwX2hrbWFwOwotCQlwX2hrbWFwID0gMDsKLQkgICAgfQotCSAgICAodm9pZClpbml0X2NoYXJ0YWIoKTsKLQl9Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBJbiBjYXNlIHNvbWUgc2Vjb25kIGxhbmd1YWdlIGtleW1hcHBpbmcgb3B0aW9ucyBoYXZlIGNoYW5nZWQsIGNoZWNrCi0gICAgICogYW5kIGNvcnJlY3QgdGhlIHNldHRpbmcgaW4gYSBjb25zaXN0ZW50IHdheS4KLSAgICAgKi8KLQotICAgIC8qCi0gICAgICogSWYgaGttYXAgb3IgZmttYXAgYXJlIHNldCwgcmVzZXQgQXJhYmljIGtleW1hcHBpbmcuCi0gICAgICovCi0gICAgaWYgKChwX2hrbWFwIHx8IHBfZmttYXApICYmIHBfYWx0a2V5bWFwKQotICAgIHsKLQlwX2FsdGtleW1hcCA9IHBfZmttYXA7Ci0jIGlmZGVmIEZFQVRfQVJBQklDCi0JY3Vyd2luLT53X3BfYXJhYiA9IEZBTFNFOwotIyBlbmRpZgotCSh2b2lkKWluaXRfY2hhcnRhYigpOwotICAgIH0KLQotICAgIC8qCi0gICAgICogSWYgaGttYXAgc2V0LCByZXNldCBGYXJzaSBrZXltYXBwaW5nLgotICAgICAqLwotICAgIGlmIChwX2hrbWFwICYmIHBfYWx0a2V5bWFwKQotICAgIHsKLQlwX2FsdGtleW1hcCA9IDA7Ci0JcF9ma21hcCA9IDA7Ci0jIGlmZGVmIEZFQVRfQVJBQklDCi0JY3Vyd2luLT53X3BfYXJhYiA9IEZBTFNFOwotIyBlbmRpZgotCSh2b2lkKWluaXRfY2hhcnRhYigpOwotICAgIH0KLQotICAgIC8qCi0gICAgICogSWYgZmttYXAgc2V0LCByZXNldCBIZWJyZXcga2V5bWFwcGluZy4KLSAgICAgKi8KLSAgICBpZiAocF9ma21hcCAmJiAhcF9hbHRrZXltYXApCi0gICAgewotCXBfYWx0a2V5bWFwID0gMTsKLQlwX2hrbWFwID0gMDsKLSMgaWZkZWYgRkVBVF9BUkFCSUMKLQljdXJ3aW4tPndfcF9hcmFiID0gRkFMU0U7Ci0jIGVuZGlmCi0JKHZvaWQpaW5pdF9jaGFydGFiKCk7Ci0gICAgfQotI2VuZGlmCi0KICNpZmRlZiBGRUFUX0FSQUJJQwogICAgIGlmICgoaW50ICopdmFycCA9PSAmY3Vyd2luLT53X3BfYXJhYikKICAgICB7CkBAIC04ODE2LDEyICs4NzQ1LDYgQEAKIAkgICAgc2V0X29wdGlvbl92YWx1ZSgoY2hhcl91ICopImtleW1hcCIsIDBMLCAoY2hhcl91ICopImFyYWJpYyIsCiAJCQkJCQkJCSAgIE9QVF9MT0NBTCk7CiAjIGVuZGlmCi0jIGlmZGVmIEZFQVRfRktNQVAKLQkgICAgcF9hbHRrZXltYXAgPSAwOwotCSAgICBwX2hrbWFwID0gMDsKLQkgICAgcF9ma21hcCA9IDA7Ci0JICAgICh2b2lkKWluaXRfY2hhcnRhYigpOwotIyBlbmRpZgogCX0KIAllbHNlCiAJewpAQCAtMTEwODUsMTIgKzExMDA4LDYgQEAKIHsKICAgICBjb3B5X3dpbm9wdCgmd3BfZnJvbS0+d19vbmVidWZfb3B0LCAmd3BfdG8tPndfb25lYnVmX29wdCk7CiAgICAgY29weV93aW5vcHQoJndwX2Zyb20tPndfYWxsYnVmX29wdCwgJndwX3RvLT53X2FsbGJ1Zl9vcHQpOwotIyBpZmRlZiBGRUFUX1JJR0hUTEVGVAotIyAgaWZkZWYgRkVBVF9GS01BUAotICAgIC8qIElzIHRoaXMgcmlnaHQ/ICovCi0gICAgd3BfdG8tPndfZmFyc2kgPSB3cF9mcm9tLT53X2ZhcnNpOwotIyAgZW5kaWYKLSMgZW5kaWYKICNpZiBkZWZpbmVkKEZFQVRfTElORUJSRUFLKQogICAgIGJyaW9wdF9jaGVjayh3cF90byk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9wcm90by5oIGIvc3JjL3Byb3RvLmgKaW5kZXggMWFiNWNmNy4uYzE5ZDE1NSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvLmgKKysrIGIvc3JjL3Byb3RvLmgKQEAgLTk5LDkgKzk5LDYgQEAKICMgaWZkZWYgRkVBVF9NRU5VCiAjICBpbmNsdWRlICJtZW51LnBybyIKICMgZW5kaWYKLSMgaWZkZWYgRkVBVF9GS01BUAotIyAgaW5jbHVkZSAiZmFyc2kucHJvIgotIyBlbmRpZgogIyBpZmRlZiBGRUFUX0FSQUJJQwogIyAgaW5jbHVkZSAiYXJhYmljLnBybyIKICMgZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9mYXJzaS5wcm8gYi9zcmMvcHJvdG8vZmFyc2kucHJvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmUxODM2Li4wMDAwMDAwCi0tLSBhL3NyYy9wcm90by9mYXJzaS5wcm8KKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vKiBmYXJzaS5jICovCi1pbnQgZmttYXAoaW50IGMpOwotY2hhcl91ICpscnN3YXAoY2hhcl91ICppYnVmKTsKLWNoYXJfdSAqbHJGc3dhcChjaGFyX3UgKmNtZGJ1ZiwgaW50IGxlbik7Ci1jaGFyX3UgKmxyRl9zdWIoY2hhcl91ICppYnVmKTsKLWludCBjbWRsX2ZrbWFwKGludCBjKTsKLWludCBGX2lzYWxwaGEoaW50IGMpOwotaW50IEZfaXNkaWdpdChpbnQgYyk7Ci1pbnQgRl9pc2NoYXIoaW50IGMpOwotdm9pZCBmYXJzaV9mOChjbWRhcmdfVCAqY2FwKTsKLXZvaWQgZmFyc2lfZjkoY21kYXJnX1QgKmNhcCk7Ci0vKiB2aW06IHNldCBmdD1jIDogKi8KZGlmZiAtLWdpdCBhL3NyYy9zY3JlZW4uYyBiL3NyYy9zY3JlZW4uYwppbmRleCBjYWY2ZTJjLi5kMDZjYzNmIDEwMDY0NAotLS0gYS9zcmMvc2NyZWVuLmMKKysrIGIvc3JjL3NjcmVlbi5jCkBAIC0xMDI0NywxMCArMTAyNDcsNiBAQAogI2lmZGVmIEZFQVRfUklHSFRMRUZUCiAJCWlmIChwX2hrbWFwKQogCQkgICAgbXNnX3B1dHNfYXR0cihfKCIgSGVicmV3IiksIGF0dHIpOwotIyBpZmRlZiBGRUFUX0ZLTUFQCi0JCWlmIChwX2ZrbWFwKQotCQkgICAgbXNnX3B1dHNfYXR0cihmYXJzaV90ZXh0XzUsIGF0dHIpOwotIyBlbmRpZgogI2VuZGlmCiAjaWZkZWYgRkVBVF9LRVlNQVAKIAkJaWYgKFN0YXRlICYgTEFOR01BUCkKZGlmZiAtLWdpdCBhL3NyYy9zZWFyY2guYyBiL3NyYy9zZWFyY2guYwppbmRleCBkZjcwNjdiLi45YTQ3ZWQ0IDEwMDY0NAotLS0gYS9zcmMvc2VhcmNoLmMKKysrIGIvc3JjL3NlYXJjaC5jCkBAIC0xNDc3LDEyICsxNDc3LDggQEAKIAkgICAgfQogCX0KIAotI2lmZGVmIEZFQVRfRktNQVAJLyogd2hlbiBpbiBGYXJzaSBtb2RlLCByZXZlcnNlIHRoZSBjaGFyYWN0ZXIgZmxvdyAqLwotCWlmIChwX2FsdGtleW1hcCAmJiBjdXJ3aW4tPndfcF9ybCkKLQkgICAgIGxyRnN3YXAoc2VhcmNoc3RyLDApOwotI2VuZGlmCi0KLQljID0gc2VhcmNoaXQoY3Vyd2luLCBjdXJidWYsICZwb3MsIE5VTEwsIGRpcmMgPT0gJy8nID8gRk9SV0FSRCA6IEJBQ0tXQVJELAorCWMgPSBzZWFyY2hpdChjdXJ3aW4sIGN1cmJ1ZiwgJnBvcywgTlVMTCwKKwkJCQkJICAgICAgZGlyYyA9PSAnLycgPyBGT1JXQVJEIDogQkFDS1dBUkQsCiAJCXNlYXJjaHN0ciwgY291bnQsIHNwYXRzWzBdLm9mZi5lbmQgKyAob3B0aW9ucyAmCiAJCSAgICAgICAoU0VBUkNIX0tFRVAgKyBTRUFSQ0hfUEVFSyArIFNFQVJDSF9ISVMKIAkJCSsgU0VBUkNIX01TRyArIFNFQVJDSF9TVEFSVApAQCAtMjk3NiwxMCArMjk3Miw2IEBACiAgICAgaW50CSAgICBjOwogCiAgICAgYyA9IGdjaGFyX2N1cnNvcigpOwotI2lmZGVmIEZFQVRfRktNQVAJLyogd2hlbiAnYWttJyAoRmFyc2kgbW9kZSksIHRha2UgY2FyZSBvZiBGYXJzaSBibGFuayAqLwotICAgIGlmIChwX2FsdGtleW1hcCAmJiBjID09IEZfQkxBTkspCi0JcmV0dXJuIDA7Ci0jZW5kaWYKICAgICBpZiAoYyA9PSAnICcgfHwgYyA9PSAnXHQnIHx8IGMgPT0gTlVMKQogCXJldHVybiAwOwogICAgIGlmIChlbmNfZGJjcyAhPSAwICYmIGMgPiAweEZGKQpkaWZmIC0tZ2l0IGEvc3JjL3N0cnVjdHMuaCBiL3NyYy9zdHJ1Y3RzLmgKaW5kZXggNDQ2NGM0Yi4uZmRlZjgxMSAxMDA2NDQKLS0tIGEvc3JjL3N0cnVjdHMuaAorKysgYi9zcmMvc3RydWN0cy5oCkBAIC0yOTUyLDEwICsyOTUyLDYgQEAKICAgICBkaWN0X1QJKndfdmFyczsJLyogaW50ZXJuYWwgdmFyaWFibGVzLCBsb2NhbCB0byB3aW5kb3cgKi8KICNlbmRpZgogCi0jaWYgZGVmaW5lZChGRUFUX1JJR0hUTEVGVCkgJiYgZGVmaW5lZChGRUFUX0ZLTUFQKQotICAgIGludAkJd19mYXJzaTsJLyogZm9yIHRoZSB3aW5kb3cgZGVwZW5kZW50IEZhcnNpIGZ1bmN0aW9ucyAqLwotI2VuZGlmCi0KICAgICAvKgogICAgICAqIFRoZSB3X3ByZXZfcGNtYXJrIGZpZWxkIGlzIHVzZWQgdG8gY2hlY2sgd2hldGhlciB3ZSByZWFsbHkgZGlkIGp1bXAgdG8KICAgICAgKiBhIG5ldyBsaW5lIGFmdGVyIHNldHRpbmcgdGhlIHdfcGNtYXJrLiAgSWYgbm90LCB0aGVuIHdlIHJldmVydCB0bwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvTWFrZV9hbGwubWFrIGIvc3JjL3Rlc3RkaXIvTWFrZV9hbGwubWFrCmluZGV4IDkyZTJhZTMuLjdjYzVlN2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL01ha2VfYWxsLm1haworKysgYi9zcmMvdGVzdGRpci9NYWtlX2FsbC5tYWsKQEAgLTExOCw3ICsxMTgsNiBAQAogCXRlc3RfZXhwYW5kX2Z1bmMgXAogCXRlc3RfZXhwciBcCiAJdGVzdF9leHByX3V0ZjggXAotCXRlc3RfZmFyc2kgXAogCXRlc3RfZmVlZGtleXMgXAogCXRlc3RfZmlsZV9wZXJtIFwKIAl0ZXN0X2ZpbGVfc2l6ZSBcCkBAIC0zMTgsNyArMzE3LDYgQEAKIAl0ZXN0X2V4aXN0cy5yZXMgXAogCXRlc3RfZXhpc3RzX2F1dG9jbWQucmVzIFwKIAl0ZXN0X2V4aXQucmVzIFwKLQl0ZXN0X2ZhcnNpLnJlcyBcCiAJdGVzdF9maWxlX3NpemUucmVzIFwKIAl0ZXN0X2ZpbGVjaGFuZ2VkLnJlcyBcCiAJdGVzdF9maW5kX2NvbXBsZXRlLnJlcyBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X2ZhcnNpLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfZmFyc2kudmltCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2ZhMDI0Li4wMDAwMDAwCi0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3RfZmFyc2kudmltCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLSIgU2ltcGxpc3RpYyB0ZXN0aW5nIG9mIEZhcnNpIG1vZGUuCi0iIE5vdGU6IG11c3QgYmUgZWRpdGVkIHdpdGggbGF0aW4xIGVuY29kaW5nLgotCi1pZiAhaGFzKCdmYXJzaScpCi0gIGZpbmlzaAotZW5kaWYKLSIgRmFyc2kgdXNlcyBhIHNpbmdsZSBieXRlIGVuY29kaW5nLgotc2V0IGVuYz1sYXRpbjEKLQotZnVuYyBUZXN0X2ZhcnNpX3RvZ2dsZSgpCi0gIG5ldwotCi0gIHNldCBhbHRrZXltYXAKLSAgY2FsbCBhc3NlcnRfZXF1YWwoMCwgJmZrbWFwKQotICBjYWxsIGFzc2VydF9lcXVhbCgwLCAmcmwpCi0gIGNhbGwgZmVlZGtleXMoIlw8Rjg+IiwgJ3gnKQotICBjYWxsIGFzc2VydF9lcXVhbCgxLCAmZmttYXApCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDEsICZybCkKLSAgY2FsbCBmZWVka2V5cygiXDxGOD4iLCAneCcpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDAsICZma21hcCkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoMCwgJnJsKQotCi0gIHNldCBybAotICAiIGNvbnZlcnNpb24gZnJvbSBGYXJzaSAzMzQyIHRvIEZhcnNpIFZJTS4KLSAgY2FsbCBzZXRsaW5lKDEsIGpvaW4obWFwKHJhbmdlKDB4ODAsIDB4ZmYpLCAnbnIyY2hhcih2OnZhbCknKSwgJycpKQotICBjYWxsIGZlZWRrZXlzKCJcPEY5PiIsICd4JykKLSAgbGV0IGV4cCA9IFsweGZjLCAweGY4LCAweGMxLCAweGMzLCAweGM0LCAweGM1LCAweGM2LCAweGM3LAotCSAgIFwgMHhjOCwgMHhjOSwgMHhjYSwgMHhkMCwgMHhkMSwgMHhkMiwgMHhkMywgMHhkNiwKLQkgICBcIDB4ZDYsIDB4ZDYsIDB4ZDcsIDB4ZDcsIDB4ZDcsIDB4ZDgsIDB4ZDksIDB4ZGEsCi0JICAgXCAweGRiLCAweGRjLCAweGRjLCAweGMxLCAweGRkLCAweGRlLCAweGUwLCAweGUwLAotCSAgIFwgMHhlMSwgMHhhMCwgMHhhMSwgMHhhMiwgMHhhMywgMHhhNCwgMHhhNSwgMHhhNiwKLQkgICBcIDB4YTcsIDB4YTgsIDB4YTksIDB4YWEsIDB4YWIsIDB4YWMsIDB4YWQsIDB4YWUsCi0JICAgXCAweGFmLCAweGIwLCAweGIxLCAweGIyLCAweGIzLCAweGI0LCAweGI1LCAweGI2LAotCSAgIFwgMHhiNywgMHhiOCwgMHhiOSwgMHhiYSwgMHhiYiwgMHhiYywgMHhiZCwgMHhiZSwKLQkgICBcIDB4YmYsIDB4YzAsIDB4YzEsIDB4YzIsIDB4YzMsIDB4YzQsIDB4YzUsIDB4YzYsCi0JICAgXCAweGM3LCAweGM4LCAweGM5LCAweGNhLCAweGNiLCAweGNjLCAweGNkLCAweGNlLAotCSAgIFwgMHhjZiwgMHhkMCwgMHhkMSwgMHhkMiwgMHhkMywgMHhkNCwgMHhkNSwgMHhkNiwKLQkgICBcIDB4ZDcsIDB4ZDgsIDB4ZDksIDB4ZGEsIDB4ZGIsIDB4ZGMsIDB4ZGQsIDB4ZGUsCi0JICAgXCAweGRmLCAweGUwLCAweGUxLCAweGUyLCAweGUzLCAweGU0LCAweGU1LCAweGU2LAotCSAgIFwgMHhlNywgMHhlOCwgMHhlOSwgMHhlYSwgMHhlYiwgMHhmYiwgMHhmYiwgMHhmZSwKLQkgICBcIDB4ZmUsIDB4ZjAsIDB4ZjEsIDB4ZjIsIDB4ZjMsIDB4ZjQsIDB4ZjUsIDB4ZjYsCi0JICAgXCAweGY3LCAweGY4LCAweGY5LCAweGZhLCAweGZiLCAweGZjLCAweGZkLCAweGZlLCAweGUxLAotICAgICAgICAgICBcIF0KLSAgY2FsbCBhc3NlcnRfZXF1YWwoam9pbihtYXAoZXhwLCAnbnIyY2hhcih2OnZhbCknKSwgJycpLCBnZXRsaW5lKDEpKQotCi0gICIgY29udmVyc2lvbiBmcm9tIEZhcnNpIFZJTSB0byBGYXJzaSAzMzQyLgotICBjYWxsIHNldGxpbmUoMSwgam9pbihtYXAocmFuZ2UoMHg4MCwgMHhmZiksICducjJjaGFyKHY6dmFsKScpLCAnJykpCi0gIGNhbGwgZmVlZGtleXMoIlw8Rjk+IiwgJ3gnKQotICBsZXQgZXhwID0gWzB4ZmMsIDB4ZjgsIDB4YzEsIDB4ODMsIDB4ODQsIDB4ODUsIDB4ODYsIDB4ODcsCi0JICAgXCAweDg4LCAweDg5LCAweDhhLCAweDhiLCAweDhjLCAweDhkLCAweDhlLCAweDkwLAotCSAgIFwgMHg5MCwgMHg5MCwgMHg5MiwgMHg5MywgMHg5MywgMHg5NSwgMHg5NiwgMHg5NywKLQkgICBcIDB4OTgsIDB4ZGMsIDB4OWEsIDB4OWIsIDB4OWMsIDB4OWUsIDB4OWUsIDB4ZmYsCi0JICAgXCAweGEwLCAweGExLCAweGEyLCAweGEzLCAweGE0LCAweGE1LCAweGE2LCAweGE3LAotCSAgIFwgMHhhOCwgMHhhOSwgMHhhYSwgMHhhYiwgMHhhYywgMHhhZCwgMHhhZSwgMHhhZiwKLQkgICBcIDB4YjAsIDB4YjEsIDB4YjIsIDB4YjMsIDB4YjQsIDB4YjUsIDB4YjYsIDB4YjcsCi0JICAgXCAweGI4LCAweGI5LCAweGJhLCAweGJiLCAweGJjLCAweGJkLCAweGJlLCAweGJmLAotCSAgIFwgMHhjMCwgMHhjMSwgMHhjMiwgMHg4MywgMHg4NCwgMHg4NSwgMHg4NiwgMHg4NywKLQkgICBcIDB4ODgsIDB4ODksIDB4OGEsIDB4Y2IsIDB4Y2MsIDB4Y2QsIDB4Y2UsIDB4Y2YsCi0JICAgXCAweDhiLCAweDhjLCAweDhkLCAweDhlLCAweGQ0LCAweGQ1LCAweDkwLCAweDkzLAotCSAgIFwgMHg5NSwgMHg5NiwgMHg5NywgMHg5OCwgMHg5OSwgMHg5YiwgMHg5YywgMHhkZiwKLQkgICBcIDB4OWQsIDB4ZmYsIDB4ZTIsIDB4ZTMsIDB4ZTQsIDB4ZTUsIDB4ZTYsIDB4ZTcsCi0JICAgXCAweGU4LCAweGU5LCAweGVhLCAweGViLCAweGVjLCAweGVjLCAweGVlLCAweGVmLAotCSAgIFwgMHhmMCwgMHhmMSwgMHhmMiwgMHhmMywgMHhmNCwgMHhmNSwgMHhmNiwgMHhmNywKLQkgICBcIDB4ZjgsIDB4ZjksIDB4ZmEsIDB4ZWMsIDB4ODAsIDB4ZmQsIDB4ZWUsIDB4ZmYsCi0gICAgICAgICAgIFwgXQotICBjYWxsIGFzc2VydF9lcXVhbChqb2luKG1hcChleHAsICducjJjaGFyKHY6dmFsKScpLCAnJyksIGdldGxpbmUoMSkpCi0KLSAgYndpcGUhCi1lbmRmdW5jCi0KLWZ1bmMgVGVzdF9mYXJzaV9tYXAoKQotICBuZXcKLQotICBzZXQgYWx0a2V5bWFwCi0gIHNldCBybAotICAiIFJIUyBvZiBtYXBwaW5nIGlzIHJldmVyc2VkLgotICBpbWFwIHh5eiBhYmMKLSAgY2FsbCBmZWVka2V5cygiYXh5elw8RXNjPiIsICd0eCcpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCdjYmEnLCBnZXRsaW5lKDEpKQotCi0gIHNldCBub3JsCi0gIGl1bm1hcCB4eXoKLSAgc2V0IG5vYWx0a2V5bWFwCi0gIGJ3aXBlIQotZW5kZnVuYwotCi1mdW5jIFRlc3RfaW5wdXRfZmFyc2koKQotICBuZXcKLSAgc2V0bG9jYWwgcmlnaHRsZWZ0IGZrbWFwCi0gICIgbnVtYmVycyBzd2l0Y2ggaW5wdXQgZGlyZWN0aW9uCi0gIGNhbGwgZmVlZGtleXMoImFhYmMwMTIzNDU2Nzg5ListXiUjPXh5elw8RXNjPiIsICd0eCcpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCJceDhjzM69rqWqraumubi3trW0s7KxsNRceDkz1SIsIGdldGxpbmUoJy4nKSkKLQotICAiIGFsbCBub24tbnVtYmVyIHNwZWNpYWwgY2hhcnMgd2l0aCBzcGFjZXMKLSAgY2FsbCBmZWVka2V5cygib0IgRSBGIEggSSBLIEwgTSBPIFAgUSBSIFQgVSBXIFkgYCAhICBAICMgJCAlIF4gJiAqICgpIC0gXyA9ICsgXFwgfCA6IFwiIC4gIC8gPCA+ID8gXDxFc2M+IiwgJ3R4JykKLSAgY2FsbCBhc3NlcnRfZXF1YWwoIqGg9KD6oMCg9qDmoOegwqBboF2g96DzoPKg8KD1oPGgoqCjoKCnoK6gpKCloKqgrKDooKipoK2g6aC9oKug66DqoLqgu6CmoKCvoL6gvKC/oCIsIGdldGxpbmUoJy4nKSkKLQotICAiIGFsbCBub24tbnVtYmVyIHNwZWNpYWwgY2hhcnMgd2l0aG91dCBzcGFjZXMKLSAgY2FsbCBmZWVka2V5cygib0JFRkhJS0xNT1BRUlRVV1lgIUAjJCVeJiooKS1fPStcXHw6XCIuLzw+P1w8RXNjPiIsJ3R4JykKLSAgY2FsbCBhc3NlcnRfZXF1YWwoIqH0+sD25ufCW1338/Lw9fGio6eupKWqrOioqa3pvavr6rq7pq++vL8iLCBnZXRsaW5lKCcuJykpCi0KLSAgIiBhbGwgbGV0dGVyIGNoYXJzIHdpdGggc3BhY2VzCi0gIGNhbGwgZmVlZGtleXMoIm9hIEEgYiBjIEMgZCBEIGUgZiBnIEcgaCBpIGogSiBrIGwgbSBuIE4gbyBwIHEgciBzIFMgdCB1IHYgViB3IHggWCB5IHogWiA7IFwgLCBbIF0gXDxFc2M+IiwgJ3R4JykKLSAgY2FsbCBhc3NlcnRfZXF1YWwoItGg+aDMoM6gz6DhoP6gxqDDoNyg+KDBoOCgxaD8oN6g3aDEoMugy6DKoMmg06DZoNCg+6DYoNagzaDNoNKg1KDUoNeg1aD9oNqgoN+gx6DIoCIsIGdldGxpbmUoJy4nKSkKLQotICAiIGFsbCBsZXR0ZXIgY2hhcnMgd2l0aG91dCBzcGFjZXMKLSAgY2FsbCBmZWVka2V5cygib2FBYmNDZERlZmdHaGlqSmtsbW5Ob3BxcnNTdHV2Vnd4WHl6WjtcLFtdXDxFc2M+IiwgJ3R4JykKLSAgY2FsbCBhc3NlcnRfZXF1YWwoIlx4OGP5zM7PXHg5Zu5ceDg2XHg4M9z4wVx4OWRceDg1XHg4MFx4OWNceDliXHg4NMvLXHg4YVx4ODlceDhlXHg5Nlx4OGLsXHg5NVx4OTDNzVx4OGTU1Fx4OTPV/Vx4OTffXHg4N1x4ODgiLCBnZXRsaW5lKCcuJykpCi0KLSAgYndpcGUhCi1lbmRmdW5jCi0KLWZ1bmMgVGVzdF9jb21tYW5kX2xpbmVfZmFyc2koKQotICBzZXQgYWxsb3dyZXZpbnMgYWx0a2V5bWFwCi0KLSAgIiBsZXR0ZXIgY2hhcmFjdGVycyB3aXRoIHNwYWNlcwotICBjYWxsIGZlZWRrZXlzKCI6XCJcPEMtXz5hIEEgYiBjIEMgZCBEIGUgZiBnIEcgaCBpIGogSiBrIGwgbSBuIE4gbyBwIHEgciBzIFMgdCB1IHYgViB3IHggWCB5IHogWiA7IFxcICwgWyBdXDxDUj4iLCAndHgnKQotICBjYWxsIGFzc2VydF9lcXVhbCgiXCJceDg4oMeg36DroNqg1aDVoNeg1KDUoNKgzaDNoNag2KD7oNCg2aDToMmgyqDLoMugxKDdoN6g/KDFoOCgwaD4oNygw6DGoP6g4aDPoM6gzKD5oNEiLCBnZXRyZWcoJzonKSkKLSAKLSAgIiBsZXR0ZXIgY2hhcmFjdGVycyB3aXRob3V0IHNwYWNlcwotICBjYWxsIGZlZWRrZXlzKCI6XCJcPEMtXz5hQWJjQ2REZWZnR2hpakprbG1uTm9wcXJzU3R1dlZ3eFh5elo7XFwsW11cPENSPiIsICd0eCcpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCJcIlx4ODhceDg33+va1dVceDkz1NRceDhkzc1ceDkwXHg5NexceDhiXHg5Nlx4OGVceDg5XHg4YcvLXHg4NFx4OWJceDljXHg4MFx4ODVceDlkwfjcXHg4M1x4ODbuXHg5Zs/OzPlceDhjIiwgZ2V0cmVnKCc6JykpCi0gCi0gICIgb3RoZXIgY2hhcmFjdGVycyB3aXRoIHNwYWNlcwotICBjYWxsIGZlZWRrZXlzKCI6XCJcPEMtXz4wIDEgMiAzIDQgNSA2IDcgOCA5IGAgLiAgISAgXCIgJCAlIF4gJiAvICgpID0gXFwgPyAgKyAtIF8gKiA6ICMgfiBAIDwgPiB7IH0gfCBCIEUgRiBIIEkgSyBMIE0gTyBQIFEgUiBUIFUgVyBZXDxDUj4iLCAndHgnKQotICBjYWxsIGFzc2VydF9lcXVhbCgiXCLxoPWg8KDyoPOg96BdoFugwqDnoOag9qDAoPqg9KChoOqgfaB7oLygvqCnoH6grqC6oOig6aCtoKugoL+g66C9oKmooK+grKCqoKWgpKC7oKCjoKCmoKKguaC4oLegtqC1oLSgs6CyoLGgsCIsIGdldHJlZygnOicpKQotCi0gICIgb3RoZXIgY2hhcmFjdGVycyB3aXRob3V0IHNwYWNlcwotICBjYWxsIGZlZWRrZXlzKCI6XCJcPEMtXz4wMTIzNDU2Nzg5YC4hXCIkJV4mLygpPVxcPystXyo6I35APD57fXxCRUZISUtMTU9QUVJUVVdZXDxDUj4iLCAndHgnKQotICBjYWxsIGFzc2VydF9lcXVhbCgiXCLx9fDy8/ddW8Ln5vbA+vSh6n17vL6nfq666Omtq7/rvamor6yqpaS7o6aiubi3trW0s7KxsCIsIGdldHJlZygnOicpKQotCi0gIHNldCBub2FsbG93cmV2aW5zIG5vYWx0a2V5bWFwCi1lbmRmdW5jCmRpZmYgLS1naXQgYS9zcmMvdmVyc2lvbi5jIGIvc3JjL3ZlcnNpb24uYwppbmRleCAwMGM2M2U1Li5hYTczZWJkIDEwMDY0NAotLS0gYS9zcmMvdmVyc2lvbi5jCisrKyBiL3NyYy92ZXJzaW9uLmMKQEAgLTI1NSwxMSArMjU1LDcgQEAKICNlbHNlCiAJIi1leHRyYV9zZWFyY2giLAogI2VuZGlmCi0jaWZkZWYgRkVBVF9GS01BUAotCSIrZmFyc2kiLAotI2Vsc2UKIAkiLWZhcnNpIiwKLSNlbmRpZgogI2lmZGVmIEZFQVRfU0VBUkNIUEFUSAogCSIrZmlsZV9pbl9wYXRoIiwKICNlbHNlCkBAIC03ODQsNiArNzgwLDggQEAKIHN0YXRpYyBpbnQgaW5jbHVkZWRfcGF0Y2hlc1tdID0KIHsgICAvKiBBZGQgbmV3IHBhdGNoIG51bWJlciBiZWxvdyB0aGlzIGxpbmUgKi8KIC8qKi8KKyAgICA5MzIsCisvKiovCiAgICAgOTMxLAogLyoqLwogICAgIDkzMCwKZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuYyBiL3NyYy93aW5kb3cuYwppbmRleCA3ZGMzODQ4Li5jNGI1NDNkIDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMKKysrIGIvc3JjL3dpbmRvdy5jCkBAIC0zNDQ1LDEyICszNDQ1LDYgQEAKICAgICB3cC0+d190b3BmaWxsID0gMDsKICNlbmRpZgogICAgIHdwLT53X2JvdGxpbmUgPSAyOwotI2lmZGVmIEZFQVRfRktNQVAKLSAgICBpZiAod3AtPndfcF9ybCkKLQl3cC0+d19mYXJzaSA9IFdfQ09OViArIFdfUl9MOwotICAgIGVsc2UKLQl3cC0+d19mYXJzaSA9IFdfQ09OVjsKLSNlbmRpZgogI2lmZGVmIEZFQVRfU1lOX0hMCiAgICAgd3AtPndfcyA9ICZ3cC0+d19idWZmZXItPmJfczsKICNlbmRpZgo=