ZGlmZiAtLWdpdCBhL2NvcmVncmluZC92Z19pbmNsdWRlLmggYi9jb3JlZ3JpbmQvdmdfaW5jbHVkZS5oCmluZGV4IGM4ZGNhNDAuLmYwNzgyMTYgMTAwNjQ0Ci0tLSBhL2NvcmVncmluZC92Z19pbmNsdWRlLmgKKysrIGIvY29yZWdyaW5kL3ZnX2luY2x1ZGUuaApAQCAtMTg5LDcgKzE4OSw3IEBACiAvKiBFbnF1aXJlIGFib3V0IGdlbmVyYXRpbmcgYSBzdXBwcmVzc2lvbiBmb3IgZWFjaCBlcnJvcj8gICBkZWZhdWx0OiBOTyAqLwogZXh0ZXJuIEJvb2wgIFZHXyhjbG9fZ2VuX3N1cHByZXNzaW9ucyk7CiAvKiBTYW5pdHktY2hlY2sgbGV2ZWw6IDAgPSBub25lLCAxIChkZWZhdWx0KSwgPiAxID0gZXhwZW5zaXZlLiAqLwotZXh0ZXJuIEludCAgIFZHXyhzYW5pdHlfbGV2ZWwpOworZXh0ZXJuIEludCAgIFZHXyhjbG9fc2FuaXR5X2xldmVsKTsKIC8qIEF1dG9tYXRpY2FsbHkgYXR0ZW1wdCB0byBkZW1hbmdsZSBDKysgbmFtZXM/ICBkZWZhdWx0OiBZRVMgKi8KIGV4dGVybiBCb29sICBWR18oY2xvX2RlbWFuZ2xlKTsKIC8qIFNpbXVsYXRlIGNoaWxkIHByb2Nlc3Nlcz8gZGVmYXVsdDogTk8gKi8KZGlmZiAtLWdpdCBhL2NvcmVncmluZC92Z19tYWluLmMgYi9jb3JlZ3JpbmQvdmdfbWFpbi5jCmluZGV4IGZiNGExYjcuLjE4NmE1YTMgMTAwNjQ0Ci0tLSBhL2NvcmVncmluZC92Z19tYWluLmMKKysrIGIvY29yZWdyaW5kL3ZnX21haW4uYwpAQCAtMTQ1Niw3ICsxNDU2LDcgQEAKIEJvb2wgICBWR18oY2xvX2RiX2F0dGFjaCkgICAgICA9IEZhbHNlOwogQ2hhciogIFZHXyhjbG9fZGJfY29tbWFuZCkgICAgID0gVkdfQ0xPX0RFRkFVTFRfREJDT01NQU5EOwogQm9vbCAgIFZHXyhjbG9fZ2VuX3N1cHByZXNzaW9ucykgPSBGYWxzZTsKLUludCAgICBWR18oc2FuaXR5X2xldmVsKSAgICAgICA9IDE7CitJbnQgICAgVkdfKGNsb19zYW5pdHlfbGV2ZWwpICAgPSAxOwogSW50ICAgIFZHXyhjbG9fdmVyYm9zaXR5KSAgICAgID0gMTsKIEJvb2wgICBWR18oY2xvX2RlbWFuZ2xlKSAgICAgICA9IFRydWU7CiBCb29sICAgVkdfKGNsb190cmFjZV9jaGlsZHJlbikgPSBGYWxzZTsKQEAgLTE3MDcsNjMgKzE3MDcsNDYgQEAKIAogICAgICAgaWYgKCAgICAgVkdfQ0xPX1NUUkVRKGFyZywgIi0tIikpCiAJIGNvbnRpbnVlOworCiAgICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLXYiKSB8fAogICAgICAgICAgICAgICAgVkdfQ0xPX1NUUkVRKGFyZywgIi0tdmVyYm9zZSIpKQogICAgICAgICAgVkdfKGNsb192ZXJib3NpdHkpKys7CisKICAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItcSIpIHx8CiAgICAgICAgICAgICAgICBWR19DTE9fU1RSRVEoYXJnLCAiLS1xdWlldCIpKQogICAgICAgICAgVkdfKGNsb192ZXJib3NpdHkpLS07CiAKLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLWVycm9yLWxpbWl0PXllcyIpKQotICAgICAgICAgVkdfKGNsb19lcnJvcl9saW1pdCkgPSBUcnVlOwotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tZXJyb3ItbGltaXQ9bm8iKSkKLSAgICAgICAgIFZHXyhjbG9fZXJyb3JfbGltaXQpID0gRmFsc2U7CisgICAgICBlbHNlIFZHX0JPT0xfQ0xPKCItLWJyYW5jaHByZWQiLCAgICAgICBWR18oY2xvX2JyYW5jaHByZWQpKQorICAgICAgZWxzZSBWR19CT09MX0NMTygiLS1jaGFpbi1iYiIsICAgICAgICAgVkdfKGNsb19jaGFpbl9iYikpCisgICAgICBlbHNlIFZHX0JPT0xfQ0xPKCItLWRiLWF0dGFjaCIsICAgICAgICBWR18oY2xvX2RiX2F0dGFjaCkpCisgICAgICBlbHNlIFZHX0JPT0xfQ0xPKCItLWRlbWFuZ2xlIiwgICAgICAgICBWR18oY2xvX2RlbWFuZ2xlKSkKKyAgICAgIGVsc2UgVkdfQk9PTF9DTE8oIi0tZXJyb3ItbGltaXQiLCAgICAgIFZHXyhjbG9fZXJyb3JfbGltaXQpKQorICAgICAgZWxzZSBWR19CT09MX0NMTygiLS1nZW4tc3VwcHJlc3Npb25zIiwgVkdfKGNsb19nZW5fc3VwcHJlc3Npb25zKSkKKyAgICAgIGVsc2UgVkdfQk9PTF9DTE8oIi0tbG93bGF0LXNpZ25hbHMiLCAgIFZHXyhjbG9fbG93bGF0X3NpZ25hbHMpKQorICAgICAgZWxzZSBWR19CT09MX0NMTygiLS1sb3dsYXQtc3lzY2FsbHMiLCAgVkdfKGNsb19sb3dsYXRfc3lzY2FsbHMpKQorICAgICAgZWxzZSBWR19CT09MX0NMTygiLS1vcHRpbWlzZSIsICAgICAgICAgVkdfKGNsb19vcHRpbWlzZSkpCisgICAgICBlbHNlIFZHX0JPT0xfQ0xPKCItLXBvaW50ZXJjaGVjayIsICAgICBWR18oY2xvX3BvaW50ZXJjaGVjaykpCisgICAgICBlbHNlIFZHX0JPT0xfQ0xPKCItLXByb2ZpbGUiLCAgICAgICAgICBWR18oY2xvX3Byb2ZpbGUpKQorICAgICAgZWxzZSBWR19CT09MX0NMTygiLS1ydW4tbGliYy1mcmVlcmVzIiwgVkdfKGNsb19ydW5fbGliY19mcmVlcmVzKSkKKyAgICAgIGVsc2UgVkdfQk9PTF9DTE8oIi0tc2hvdy1iZWxvdy1tYWluIiwgIFZHXyhjbG9fc2hvd19iZWxvd19tYWluKSkKKyAgICAgIGVsc2UgVkdfQk9PTF9DTE8oIi0tc2luZ2xlLXN0ZXAiLCAgICAgIFZHXyhjbG9fc2luZ2xlX3N0ZXApKQorICAgICAgZWxzZSBWR19CT09MX0NMTygiLS10cmFjay1mZHMiLCAgICAgICAgVkdfKGNsb190cmFja19mZHMpKQorICAgICAgZWxzZSBWR19CT09MX0NMTygiLS10cmFjZS1jaGlsZHJlbiIsICAgVkdfKGNsb190cmFjZV9jaGlsZHJlbikpCisgICAgICBlbHNlIFZHX0JPT0xfQ0xPKCItLXRyYWNlLXNjaGVkIiwgICAgICBWR18oY2xvX3RyYWNlX3NjaGVkKSkKKyAgICAgIGVsc2UgVkdfQk9PTF9DTE8oIi0tdHJhY2Utc2lnbmFscyIsICAgIFZHXyhjbG9fdHJhY2Vfc2lnbmFscykpCisgICAgICBlbHNlIFZHX0JPT0xfQ0xPKCItLXRyYWNlLXN5bXRhYiIsICAgICBWR18oY2xvX3RyYWNlX3N5bXRhYikpCisgICAgICBlbHNlIFZHX0JPT0xfQ0xPKCItLXRyYWNlLXN5c2NhbGxzIiwgICBWR18oY2xvX3RyYWNlX3N5c2NhbGxzKSkKKyAgICAgIGVsc2UgVkdfQk9PTF9DTE8oIi0td2FpdC1mb3ItZ2RiIiwgICAgIFZHXyhjbG9fd2FpdF9mb3JfZ2RiKSkKIAotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tZGItYXR0YWNoPXllcyIpKQotICAgICAgICAgVkdfKGNsb19kYl9hdHRhY2gpID0gVHJ1ZTsKLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLWRiLWF0dGFjaD1ubyIpKQotICAgICAgICAgVkdfKGNsb19kYl9hdHRhY2gpID0gRmFsc2U7CisgICAgICBlbHNlIFZHX1NUUl9DTE8gKCItLWRiLWNvbW1hbmQiLCAgICAgICAgVkdfKGNsb19kYl9jb21tYW5kKSkKKyAgICAgIGVsc2UgVkdfU1RSX0NMTyAoIi0td2VpcmQtaGFja3MiLCAgICAgICBWR18oY2xvX3dlaXJkX2hhY2tzKSkKIAotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRTigxMyxhcmcsICItLWRiLWNvbW1hbmQ9IikpCi0gICAgICAgICBWR18oY2xvX2RiX2NvbW1hbmQpID0gJmFyZ1sxM107Ci0KLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLWdlbi1zdXBwcmVzc2lvbnM9eWVzIikpCi0gICAgICAgICBWR18oY2xvX2dlbl9zdXBwcmVzc2lvbnMpID0gVHJ1ZTsKLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLWdlbi1zdXBwcmVzc2lvbnM9bm8iKSkKLSAgICAgICAgIFZHXyhjbG9fZ2VuX3N1cHByZXNzaW9ucykgPSBGYWxzZTsKLQotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tc2hvdy1iZWxvdy1tYWluPXllcyIpKQotICAgICAgICAgVkdfKGNsb19zaG93X2JlbG93X21haW4pID0gVHJ1ZTsKLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLXNob3ctYmVsb3ctbWFpbj1ubyIpKQotICAgICAgICAgVkdfKGNsb19zaG93X2JlbG93X21haW4pID0gRmFsc2U7Ci0KLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLXBvaW50ZXJjaGVjaz15ZXMiKSkKLSAgICAgICAgIFZHXyhjbG9fcG9pbnRlcmNoZWNrKSA9IFRydWU7Ci0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1wb2ludGVyY2hlY2s9bm8iKSkKLSAgICAgICAgIFZHXyhjbG9fcG9pbnRlcmNoZWNrKSA9IEZhbHNlOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1kZW1hbmdsZT15ZXMiKSkKLSAgICAgICAgIFZHXyhjbG9fZGVtYW5nbGUpID0gVHJ1ZTsKLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLWRlbWFuZ2xlPW5vIikpCi0gICAgICAgICBWR18oY2xvX2RlbWFuZ2xlKSA9IEZhbHNlOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS10cmFjZS1jaGlsZHJlbj15ZXMiKSkKLSAgICAgICAgIFZHXyhjbG9fdHJhY2VfY2hpbGRyZW4pID0gVHJ1ZTsKLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLXRyYWNlLWNoaWxkcmVuPW5vIikpCi0gICAgICAgICBWR18oY2xvX3RyYWNlX2NoaWxkcmVuKSA9IEZhbHNlOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1ydW4tbGliYy1mcmVlcmVzPXllcyIpKQotICAgICAgICAgVkdfKGNsb19ydW5fbGliY19mcmVlcmVzKSA9IFRydWU7Ci0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1ydW4tbGliYy1mcmVlcmVzPW5vIikpCi0gICAgICAgICBWR18oY2xvX3J1bl9saWJjX2ZyZWVyZXMpID0gRmFsc2U7Ci0KLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLXRyYWNrLWZkcz15ZXMiKSkKLSAgICAgICAgIFZHXyhjbG9fdHJhY2tfZmRzKSA9IFRydWU7Ci0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS10cmFjay1mZHM9bm8iKSkKLSAgICAgICAgIFZHXyhjbG9fdHJhY2tfZmRzKSA9IEZhbHNlOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVFOKDE1LCBhcmcsICItLXNhbml0eS1sZXZlbD0iKSkKLSAgICAgICAgIFZHXyhzYW5pdHlfbGV2ZWwpID0gKEludClWR18oYXRvbGwpKCZhcmdbMTVdKTsKKyAgICAgIGVsc2UgVkdfTlVNX0NMTyAoIi0tZHVtcC1lcnJvciIsICAgICAgICBWR18oY2xvX2R1bXBfZXJyb3IpKQorICAgICAgZWxzZSBWR19OVU1fQ0xPICgiLS1pbnB1dC1mZCIsICAgICAgICAgIFZHXyhjbG9faW5wdXRfZmQpKQorICAgICAgZWxzZSBWR19OVU1fQ0xPICgiLS1zYW5pdHktbGV2ZWwiLCAgICAgIFZHXyhjbG9fc2FuaXR5X2xldmVsKSkKKyAgICAgIGVsc2UgVkdfTlVNX0NMTyAoIi0tc2lnbmFsrXBvbGx0aW1lIiwgICBWR18oY2xvX3NpZ25hbF9wb2xsdGltZSkpCisgICAgICBlbHNlIFZHX0JOVU1fQ0xPKCItLW51bS1jYWxsZXJzIiwgICAgICAgVkdfKGNsb19iYWNrdHJhY2Vfc2l6ZSksIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWR19ERUVQRVNUX0JBQ0tUUkFDRSkKIAogICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRTigxMywgYXJnLCAiLS1sb2dmaWxlLWZkPSIpKSB7CiAgICAgICAgICBWR18oY2xvX2xvZ190bykgICAgICAgPSBWZ0xvZ1RvX0ZkOwpAQCAtMTc4MSw5ICsxNzY0LDYgQEAKICAgICAgICAgIFZHXyhjbG9fbG9nZmlsZV9uYW1lKSA9ICZhcmdbMTJdOwogICAgICAgfQogCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVFOKDExLCBhcmcsICItLWlucHV0LWZkPSIpKQotICAgICAgICAgVkdfKGNsb19pbnB1dF9mZCkgICAgID0gKEludClWR18oYXRvbGwpKCZhcmdbMTFdKTsKLQogICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRTigxNSwgYXJnLCAiLS1zdXBwcmVzc2lvbnM9IikpIHsKICAgICAgICAgIGlmIChWR18oY2xvX25fc3VwcHJlc3Npb25zKSA+PSBWR19DTE9fTUFYX1NGSUxFUykgewogICAgICAgICAgICAgVkdfKG1lc3NhZ2UpKFZnX1VzZXJNc2csICJUb28gbWFueSBzdXBwcmVzc2lvbiBmaWxlcyBzcGVjaWZpZWQuIik7CkBAIC0xNzk0LDMwICsxNzc0LDYgQEAKICAgICAgICAgIFZHXyhjbG9fc3VwcHJlc3Npb25zKVtWR18oY2xvX25fc3VwcHJlc3Npb25zKV0gPSAmYXJnWzE1XTsKICAgICAgICAgIFZHXyhjbG9fbl9zdXBwcmVzc2lvbnMpKys7CiAgICAgICB9Ci0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1wcm9maWxlPXllcyIpKQotICAgICAgICAgVkdfKGNsb19wcm9maWxlKSA9IFRydWU7Ci0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1wcm9maWxlPW5vIikpCi0gICAgICAgICBWR18oY2xvX3Byb2ZpbGUpID0gRmFsc2U7Ci0KLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLWNoYWluLWJiPXllcyIpKQotCSBWR18oY2xvX2NoYWluX2JiKSA9IFRydWU7Ci0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1jaGFpbi1iYj1ubyIpKQotCSBWR18oY2xvX2NoYWluX2JiKSA9IEZhbHNlOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1icmFuY2hwcmVkPXllcyIpKQotCSBWR18oY2xvX2JyYW5jaHByZWQpID0gVHJ1ZTsKLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLWJyYW5jaHByZWQ9bm8iKSkKLQkgVkdfKGNsb19icmFuY2hwcmVkKSA9IEZhbHNlOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1zaW5nbGUtc3RlcD15ZXMiKSkKLSAgICAgICAgIFZHXyhjbG9fc2luZ2xlX3N0ZXApID0gVHJ1ZTsKLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLXNpbmdsZS1zdGVwPW5vIikpCi0gICAgICAgICBWR18oY2xvX3NpbmdsZV9zdGVwKSA9IEZhbHNlOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1vcHRpbWlzZT15ZXMiKSkKLSAgICAgICAgIFZHXyhjbG9fb3B0aW1pc2UpID0gVHJ1ZTsKLSAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLW9wdGltaXNlPW5vIikpCi0gICAgICAgICBWR18oY2xvX29wdGltaXNlKSA9IEZhbHNlOwogCiAgICAgICAvKiAidnd4eXoiIC0tPiAwMDB6eXh3diAoYmluYXJ5KSAqLwogICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRTigxNiwgYXJnLCAiLS10cmFjZS1jb2RlZ2VuPSIpKSB7CkBAIC0xODQwLDI2ICsxNzk2LDYgQEAKICAgICAgICAgIH0KICAgICAgIH0KIAotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tdHJhY2Utc3lzY2FsbHM9eWVzIikpCi0gICAgICAgICBWR18oY2xvX3RyYWNlX3N5c2NhbGxzKSA9IFRydWU7Ci0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS10cmFjZS1zeXNjYWxscz1ubyIpKQotICAgICAgICAgVkdfKGNsb190cmFjZV9zeXNjYWxscykgPSBGYWxzZTsKLQotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tdHJhY2Utc2lnbmFscz15ZXMiKSkKLSAgICAgICAgIFZHXyhjbG9fdHJhY2Vfc2lnbmFscykgPSBUcnVlOwotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tdHJhY2Utc2lnbmFscz1ubyIpKQotICAgICAgICAgVkdfKGNsb190cmFjZV9zaWduYWxzKSA9IEZhbHNlOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS10cmFjZS1zeW10YWI9eWVzIikpCi0gICAgICAgICBWR18oY2xvX3RyYWNlX3N5bXRhYikgPSBUcnVlOwotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tdHJhY2Utc3ltdGFiPW5vIikpCi0gICAgICAgICBWR18oY2xvX3RyYWNlX3N5bXRhYikgPSBGYWxzZTsKLQotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tdHJhY2Utc2NoZWQ9eWVzIikpCi0gICAgICAgICBWR18oY2xvX3RyYWNlX3NjaGVkKSA9IFRydWU7Ci0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS10cmFjZS1zY2hlZD1ubyIpKQotICAgICAgICAgVkdfKGNsb190cmFjZV9zY2hlZCkgPSBGYWxzZTsKLQogICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tdHJhY2UtcHRocmVhZD1ub25lIikpCiAgICAgICAgICBWR18oY2xvX3RyYWNlX3B0aHJlYWRfbGV2ZWwpID0gMDsKICAgICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLXRyYWNlLXB0aHJlYWQ9c29tZSIpKQpAQCAtMTg2Nyw0NSArMTgwMywxNCBAQAogICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tdHJhY2UtcHRocmVhZD1hbGwiKSkKICAgICAgICAgIFZHXyhjbG9fdHJhY2VfcHRocmVhZF9sZXZlbCkgPSAyOwogCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVFOKDE0LCBhcmcsICItLXdlaXJkLWhhY2tzPSIpKQotICAgICAgICAgVkdfKGNsb193ZWlyZF9oYWNrcykgPSAmYXJnWzE0XTsKLQotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRTigxNywgYXJnLCAiLS1zaWduYWwtcG9sbHRpbWU9IikpCi0JIFZHXyhjbG9fc2lnbmFsX3BvbGx0aW1lKSA9IFZHXyhhdG9sbCkoJmFyZ1sxN10pOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1sb3dsYXQtc2lnbmFscz15ZXMiKSkKLQkgVkdfKGNsb19sb3dsYXRfc2lnbmFscykgPSBUcnVlOwotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tbG93bGF0LXNpZ25hbHM9bm8iKSkKLQkgVkdfKGNsb19sb3dsYXRfc2lnbmFscykgPSBGYWxzZTsKLQotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tbG93bGF0LXN5c2NhbGxzPXllcyIpKQotCSBWR18oY2xvX2xvd2xhdF9zeXNjYWxscykgPSBUcnVlOwotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tbG93bGF0LXN5c2NhbGxzPW5vIikpCi0JIFZHXyhjbG9fbG93bGF0X3N5c2NhbGxzKSA9IEZhbHNlOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVFOKDEzLCBhcmcsICItLWR1bXAtZXJyb3I9IikpCi0gICAgICAgICBWR18oY2xvX2R1bXBfZXJyb3IpID0gKEludClWR18oYXRvbGwpKCZhcmdbMTNdKTsKLQotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0td2FpdC1mb3ItZ2RiPXllcyIpKQotCSBWR18oY2xvX3dhaXRfZm9yX2dkYikgPSBUcnVlOwotICAgICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0td2FpdC1mb3ItZ2RiPW5vIikpCi0JIFZHXyhjbG9fd2FpdF9mb3JfZ2RiKSA9IEZhbHNlOwotCi0gICAgICBlbHNlIGlmIChWR19DTE9fU1RSRVFOKDE0LCBhcmcsICItLW51bS1jYWxsZXJzPSIpKSB7Ci0gICAgICAgICAvKiBNYWtlIHN1cmUgaXQncyBzYW5lLiAqLwotCSBWR18oY2xvX2JhY2t0cmFjZV9zaXplKSA9IChJbnQpVkdfKGF0b2xsKSgmYXJnWzE0XSk7Ci0gICAgICAgICBpZiAoVkdfKGNsb19iYWNrdHJhY2Vfc2l6ZSkgPCAxKQotICAgICAgICAgICAgVkdfKGNsb19iYWNrdHJhY2Vfc2l6ZSkgPSAxOwotICAgICAgICAgaWYgKFZHXyhjbG9fYmFja3RyYWNlX3NpemUpID49IFZHX0RFRVBFU1RfQkFDS1RSQUNFKQotICAgICAgICAgICAgVkdfKGNsb19iYWNrdHJhY2Vfc2l6ZSkgPSBWR19ERUVQRVNUX0JBQ0tUUkFDRTsKLSAgICAgIH0KLQogICAgICAgZWxzZSBpZiAoICEgVkdfKG5lZWRzKS5jb21tYW5kX2xpbmVfb3B0aW9ucwogICAgICAgICAgICAgIHx8ICEgU0tfKHByb2Nlc3NfY21kX2xpbmVfb3B0aW9uKShhcmcpICkgewogICAgICAgICAgVkdfKGJhZF9vcHRpb24pKGFyZyk7CiAgICAgICB9CiAgICB9CiAKKyAgIC8vIENoZWNrIHZhcmlvdXMgb3B0aW9uIHZhbHVlcworCiAgICBpZiAoVkdfKGNsb192ZXJib3NpdHkpIDwgMCkKICAgICAgIFZHXyhjbG9fdmVyYm9zaXR5KSA9IDA7CiAKQEAgLTI2NDksNyArMjU1NCw3IEBACiB7CiAgICBWR1BfUFVTSENDKFZncENvcmVDaGVhcFNhbml0eSk7CiAKLSAgIGlmIChWR18oc2FuaXR5X2xldmVsKSA8IDEpIHJldHVybjsKKyAgIGlmIChWR18oY2xvX3Nhbml0eV9sZXZlbCkgPCAxKSByZXR1cm47CiAKICAgIC8qIC0tLSBGaXJzdCBkbyBhbGwgdGhlIHRlc3RzIHRoYXQgd2UgY2FuIGRvIHF1aWNrbHkuIC0tLSovCiAKQEAgLTI2NjksOCArMjU3NCw4IEBACiAKICAgIC8qIE9uY2UgZXZlcnkgMjUgdGltZXMsIGNoZWNrIHNvbWUgbW9yZSBleHBlbnNpdmUgc3R1ZmYuICovCiAgICBpZiAoIGZvcmNlX2V4cGVuc2l2ZQotICAgICB8fCBWR18oc2FuaXR5X2xldmVsKSA+IDEKLSAgICAgfHwgKFZHXyhzYW5pdHlfbGV2ZWwpID09IDEgJiYgKFZHXyhzYW5pdHlfZmFzdF9jb3VudCkgJSAyNSkgPT0gMCkpIHsKKyAgICAgfHwgVkdfKGNsb19zYW5pdHlfbGV2ZWwpID4gMQorICAgICB8fCAoVkdfKGNsb19zYW5pdHlfbGV2ZWwpID09IDEgJiYgKFZHXyhzYW5pdHlfZmFzdF9jb3VudCkgJSAyNSkgPT0gMCkpIHsKIAogICAgICAgVkdQX1BVU0hDQyhWZ3BDb3JlRXhwZW5zaXZlU2FuaXR5KTsKICAgICAgIFZHXyhzYW5pdHlfc2xvd19jb3VudCkrKzsKQEAgLTI2OTUsNyArMjYwMCw3IEBACiAgICAgICBWR1BfUE9QQ0MoVmdwQ29yZUV4cGVuc2l2ZVNhbml0eSk7CiAgICB9CiAKLSAgIGlmIChWR18oc2FuaXR5X2xldmVsKSA+IDEpIHsKKyAgIGlmIChWR18oY2xvX3Nhbml0eV9sZXZlbCkgPiAxKSB7CiAgICAgICBWR1BfUFVTSENDKFZncENvcmVFeHBlbnNpdmVTYW5pdHkpOwogICAgICAgLyogQ2hlY2sgc2FuaXR5IG9mIHRoZSBsb3ctbGV2ZWwgbWVtb3J5IG1hbmFnZXIuICBOb3RlIHRoYXQgYnVncwogICAgICAgICAgaW4gdGhlIGNsaWVudCdzIGNvZGUgY2FuIGNhdXNlIHRoaXMgdG8gZmFpbCwgc28gd2UgZG9uJ3QgZG8KZGlmZiAtLWdpdCBhL2NvcmVncmluZC92Z19tYWxsb2MyLmMgYi9jb3JlZ3JpbmQvdmdfbWFsbG9jMi5jCmluZGV4IGFhZGM0MDYuLmE3YjE5ODEgMTAwNjQ0Ci0tLSBhL2NvcmVncmluZC92Z19tYWxsb2MyLmMKKysrIGIvY29yZWdyaW5kL3ZnX21hbGxvYzIuYwpAQCAtNjYsMTYgKzY2LDggQEAKICAgICAgIH0KICAgIH0KIAotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tc2xvcHB5LW1hbGxvYz15ZXMiKSkKLSAgICAgIFZHXyhjbG9fc2xvcHB5X21hbGxvYykgPSBUcnVlOwotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tc2xvcHB5LW1hbGxvYz1ubyIpKQotICAgICAgVkdfKGNsb19zbG9wcHlfbWFsbG9jKSA9IEZhbHNlOwotCi0gICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS10cmFjZS1tYWxsb2M9eWVzIikpCi0gICAgICBWR18oY2xvX3RyYWNlX21hbGxvYykgPSBUcnVlOwotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tdHJhY2UtbWFsbG9jPW5vIikpCi0gICAgICBWR18oY2xvX3RyYWNlX21hbGxvYykgPSBGYWxzZTsKLQorICAgZWxzZSBWR19CT09MX0NMTygiLS1zbG9wcHktbWFsbG9jPXllcyIsIFZHXyhjbG9fc2xvcHB5X21hbGxvYykpCisgICBlbHNlIFZHX0JPT0xfQ0xPKCItLXRyYWNlLW1hbGxvYz15ZXMiLCAgVkdfKGNsb190cmFjZV9tYWxsb2MpKQogICAgZWxzZSAKICAgICAgIHJldHVybiBGYWxzZTsKIApkaWZmIC0tZ2l0IGEvaGVsZ3JpbmQvaGdfbWFpbi5jIGIvaGVsZ3JpbmQvaGdfbWFpbi5jCmluZGV4IDQzMzRiNTguLmNlZGRlMmUgMTAwNjQ0Ci0tLSBhL2hlbGdyaW5kL2hnX21haW4uYworKysgYi9oZWxncmluZC9oZ19tYWluLmMKQEAgLTMzNDIsNjEgKzMzNDIsMjEgQEAKICAgIGhnX21hbGxvY19saXN0ID0gVkdfKEhUX2NvbnN0cnVjdCkoKTsKIH0KIAotc3RhdGljIEJvb2wgbWF0Y2hfQm9vbChDaGFyICphcmcsIENoYXIgKmFyZ3N0ciwgQm9vbCAqcmV0KQotewotICAgSW50IGxlbiA9IFZHXyhzdHJsZW4pKGFyZ3N0cik7Ci0KLSAgIGlmIChWR18oc3RybmNtcCkoYXJnLCBhcmdzdHIsIGxlbikgPT0gMCkgewotICAgICAgaWYgKFZHXyhzdHJjbXApKGFyZytsZW4sICJ5ZXMiKSA9PSAwKSB7Ci0JICpyZXQgPSBUcnVlOwotCSByZXR1cm4gVHJ1ZTsKLSAgICAgIH0gZWxzZSBpZiAoVkdfKHN0cmNtcCkoYXJnK2xlbiwgIm5vIikgPT0gMCkgewotCSAqcmV0ID0gRmFsc2U7Ci0JIHJldHVybiBUcnVlOwotICAgICAgfSBlbHNlCi0JIFZHXyhiYWRfb3B0aW9uKShhcmcpOwotICAgfQotICAgcmV0dXJuIEZhbHNlOwotfQotCi1zdGF0aWMgQm9vbCBtYXRjaF9zdHIoQ2hhciAqYXJnLCBDaGFyICphcmdzdHIsIENoYXIgKipyZXQpCi17Ci0gICBJbnQgbGVuID0gVkdfKHN0cmxlbikoYXJnc3RyKTsKLQotICAgaWYgKFZHXyhzdHJuY21wKShhcmcsIGFyZ3N0ciwgbGVuKSA9PSAwKSB7Ci0gICAgICAqcmV0ID0gVkdfKHN0cmR1cCkoYXJnK2xlbik7Ci0gICAgICByZXR1cm4gVHJ1ZTsKLSAgIH0KLQotICAgcmV0dXJuIEZhbHNlOwotfQotCiBCb29sIFNLXyhwcm9jZXNzX2NtZF9saW5lX29wdGlvbikoQ2hhciogYXJnKQogewotICAgQ2hhciAqc3RyOworICAgaWYgICAgICAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tc2hvdy1sYXN0LWFjY2Vzcz1ubyIpKQorICAgICAgY2xvX2V4ZWNvbnRleHQgPSBFQ19Ob25lOworICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tc2hvdy1sYXN0LWFjY2Vzcz1zb21lIikpCisgICAgICBjbG9fZXhlY29udGV4dCA9IEVDX1NvbWU7CisgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1zaG93LWxhc3QtYWNjZXNzPWFsbCIpKQorICAgICAgY2xvX2V4ZWNvbnRleHQgPSBFQ19BbGw7CiAKLSAgIGlmIChtYXRjaF9zdHIoYXJnLCAiLS1zaG93LWxhc3QtYWNjZXNzPSIsICZzdHIpKSB7Ci0gICAgICBCb29sIG9rID0gVHJ1ZTsKLSAgICAgIGlmIChWR18oc3RyY21wKShzdHIsICJubyIpID09IDApCi0JIGNsb19leGVjb250ZXh0ID0gRUNfTm9uZTsKLSAgICAgIGVsc2UgaWYgKFZHXyhzdHJjbXApKHN0ciwgInNvbWUiKSA9PSAwKQotCSBjbG9fZXhlY29udGV4dCA9IEVDX1NvbWU7Ci0gICAgICBlbHNlIGlmIChWR18oc3RyY21wKShzdHIsICJhbGwiKSA9PSAwKQotCSBjbG9fZXhlY29udGV4dCA9IEVDX0FsbDsKLSAgICAgIGVsc2UgewotCSBvayA9IEZhbHNlOwotCSBWR18oYmFkX29wdGlvbikoYXJnKTsKLSAgICAgIH0KKyAgIGVsc2UgVkdfQk9PTF9DTE8oIi0tcHJpdmF0ZS1zdGFja3MiLCBjbG9fcHJpdl9zdGFja3MpCiAKLSAgICAgIFZHXyhmcmVlKShzdHIpOwotICAgICAgaWYgKG9rKQotCSByZXR1cm4gVHJ1ZTsKLSAgIH0KKyAgIGVsc2UgCisgICAgICByZXR1cm4gVkdfKHJlcGxhY2VtZW50X21hbGxvY19wcm9jZXNzX2NtZF9saW5lX29wdGlvbikoYXJnKTsKIAotICAgaWYgKG1hdGNoX0Jvb2woYXJnLCAiLS1wcml2YXRlLXN0YWNrcz0iLCAmY2xvX3ByaXZfc3RhY2tzKSkKLSAgICAgIHJldHVybiBUcnVlOwotCi0gICByZXR1cm4gVkdfKHJlcGxhY2VtZW50X21hbGxvY19wcm9jZXNzX2NtZF9saW5lX29wdGlvbikoYXJnKTsKKyAgIHJldHVybiBUcnVlOwogfQogCiB2b2lkIFNLXyhwcmludF91c2FnZSkodm9pZCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdmdfc2tpbi5oLmJhc2UgYi9pbmNsdWRlL3ZnX3NraW4uaC5iYXNlCmluZGV4IDcxYmNhNGEuLjU0NTRlN2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdmdfc2tpbi5oLmJhc2UKKysrIGIvaW5jbHVkZS92Z19za2luLmguYmFzZQpAQCAtMTcyLDggKzE3MiwzMyBAQAogCiAvKiBVc2UgdGhlc2UgZm9yIHJlY29nbmlzaW5nIHNraW4gY29tbWFuZCBsaW5lIG9wdGlvbnMgLS0gc3RvcHMgY29tcGFyaW5nCiAgICBvbmNlIHdoaXRlc3BhY2UgaXMgcmVhY2hlZC4gKi8KLSMgIGRlZmluZSBWR19DTE9fU1RSRVEoczEsczIpICAgICAoMD09VkdfKHN0cmNtcF93cykoKHMxKSwoczIpKSkKLSMgIGRlZmluZSBWR19DTE9fU1RSRVFOKG5uLHMxLHMyKSAoMD09VkdfKHN0cm5jbXBfd3MpKChzMSksKHMyKSwobm4pKSkKKyNkZWZpbmUgVkdfQ0xPX1NUUkVRKHMxLHMyKSAgICAgKDA9PVZHXyhzdHJjbXBfd3MpKChzMSksKHMyKSkpCisjZGVmaW5lIFZHX0NMT19TVFJFUU4obm4sczEsczIpICgwPT1WR18oc3RybmNtcF93cykoKHMxKSwoczIpLChubikpKQorCisvLyBIaWdoZXItbGV2ZWwgY29tbWFuZC1saW5lIG9wdGlvbiByZWNvZ25pc2VyczsgIHVzZSBpbiBpZi9lbHNlIGNoYWlucworCisjZGVmaW5lIFZHX0JPT0xfQ0xPKHFxX29wdGlvbiwgcXFfdmFyKSBcCisgICBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgcXFfb3B0aW9uIj15ZXMiKSkgeyAocXFfdmFyKSA9IFRydWU7IH0gXAorICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgcXFfb3B0aW9uIj1ubyIpKSAgeyAocXFfdmFyKSA9IEZhbHNlOyB9CisKKyNkZWZpbmUgVkdfU1RSX0NMTyhxcV9vcHRpb24sIHFxX3ZhcikgXAorICAgaWYgKFZHX0NMT19TVFJFUU4oVkdfKHN0cmxlbikocXFfb3B0aW9uKSsxLCBhcmcsIHFxX29wdGlvbiI9IikpIHsgXAorICAgICAgKHFxX3ZhcikgPSAmYXJnWyBWR18oc3RybGVuKShxcV9vcHRpb24pKzEgXTsgXAorICAgfQorCisjZGVmaW5lIFZHX05VTV9DTE8ocXFfb3B0aW9uLCBxcV92YXIpIFwKKyAgIGlmIChWR19DTE9fU1RSRVFOKFZHXyhzdHJsZW4pKHFxX29wdGlvbikrMSwgYXJnLCBxcV9vcHRpb24iPSIpKSB7IFwKKyAgICAgIChxcV92YXIpID0gKEludClWR18oYXRvbGwpKCAmYXJnWyBWR18oc3RybGVuKShxcV9vcHRpb24pKzEgXSApOyBcCisgICB9CisKKy8vIEJvdW5kZWQgaW50ZWdlciBhcmcKKyNkZWZpbmUgVkdfQk5VTV9DTE8ocXFfb3B0aW9uLCBxcV92YXIsIHFxX2xvLCBxcV9oaSkgXAorICAgaWYgKFZHX0NMT19TVFJFUU4oVkdfKHN0cmxlbikocXFfb3B0aW9uKSsxLCBhcmcsIHFxX29wdGlvbiI9IikpIHsgXAorICAgICAgKHFxX3ZhcikgPSAoSW50KVZHXyhhdG9sbCkoICZhcmdbIFZHXyhzdHJsZW4pKHFxX29wdGlvbikrMSBdICk7IFwKKyAgICAgIGlmICgocXFfdmFyKSA8IChxcV9sbykpIChxcV92YXIpID0gKHFxX2xvKTsgXAorICAgICAgaWYgKChxcV92YXIpID4gKHFxX2hpKSkgKHFxX3ZhcikgPSAocXFfaGkpOyBcCisgICB9CisKIAogLyogVmVyYm9zaXR5IGxldmVsOiAwID0gc2lsZW50LCAxIChkZWZhdWx0KSwgPiAxID0gbW9yZSB2ZXJib3NlLiAqLwogZXh0ZXJuIEludCAgIFZHXyhjbG9fdmVyYm9zaXR5KTsKZGlmZiAtLWdpdCBhL21hc3NpZi9tc19tYWluLmMgYi9tYXNzaWYvbXNfbWFpbi5jCmluZGV4IGEwMTY1Y2QuLjU4NGRhMTAgMTAwNjQ0Ci0tLSBhL21hc3NpZi9tc19tYWluLmMKKysrIGIvbWFzc2lmL21zX21haW4uYwpAQCAtMjkwLDMwICsyOTAsMTEgQEAKIAogQm9vbCBTS18ocHJvY2Vzc19jbWRfbGluZV9vcHRpb24pKENoYXIqIGFyZykKIHsKLSAgIGlmICAgICAgKFZHX0NMT19TVFJFUShhcmcsICItLWhlYXA9eWVzIikpCi0gICAgICBjbG9faGVhcCA9IFRydWU7Ci0gICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1oZWFwPW5vIikpCi0gICAgICBjbG9faGVhcCA9IEZhbHNlOworICAgICAgICBWR19CT09MX0NMTygiLS1oZWFwIiwgICAgICAgY2xvX2hlYXApCisgICBlbHNlIFZHX0JPT0xfQ0xPKCItLXN0YWNrcyIsICAgICBjbG9fc3RhY2tzKQogCi0gICBlbHNlIGlmIChWR19DTE9fU1RSRVFOKDEzLCBhcmcsICItLWhlYXAtYWRtaW49IikpIHsKLSAgICAgIGNsb19oZWFwX2FkbWluID0gKEludClWR18oYXRvbGwpKCZhcmdbMTNdKTsKLSAgICAgIGlmIChjbG9faGVhcF9hZG1pbiA+IDEwMCkgewotICAgICAgICAgVkdfKG1lc3NhZ2UpKFZnX1VzZXJNc2csCi0gICAgICAgICAgICAiQWRtaW4gc2l6ZSBmb3IgaGVhcCBibG9ja3MgdG9vIGxhcmdlIik7Ci0gICAgICAgICBWR18oYmFkX29wdGlvbikoYXJnKTsKLSAgICAgIH0KLSAgIH0KLQotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tc3RhY2tzPXllcyIpKQotICAgICAgY2xvX3N0YWNrcyA9IFRydWU7Ci0gICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1zdGFja3M9bm8iKSkKLSAgICAgIGNsb19zdGFja3MgPSBGYWxzZTsKLQotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRTig4LCBhcmcsICItLWRlcHRoPSIpKSB7Ci0gICAgICBjbG9fZGVwdGggPSAoSW50KVZHXyhhdG9sbCkoJmFyZ1s4XSk7Ci0gICAgICBpZiAoY2xvX2RlcHRoIDwgMSkgICAgICAgICAgY2xvX2RlcHRoID0gMTsKLSAgICAgIGlmIChjbG9fZGVwdGggPj0gTUFYX0RFUFRIKSBjbG9fZGVwdGggPSBNQVhfREVQVEg7Ci0gICB9CisgICBlbHNlIFZHX05VTV9DTE8gKCItLWhlYXAtYWRtaW4iLCAgY2xvX2hlYXBfYWRtaW4pCisgICBlbHNlIFZHX0JOVU1fQ0xPKCItLWRlcHRoIiwgICAgICAgY2xvX2RlcHRoLCAxLCBNQVhfREVQVEgpCiAKICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUU4oMTEsIGFyZywgIi0tYWxsb2MtZm49IikpIHsKICAgICAgIGFsbG9jX2Zuc1tuX2FsbG9jX2Zuc10gPSAmIGFyZ1sxMV07CkBAIC0zMzEsNyArMzEyLDcgQEAKIAogICAgZWxzZQogICAgICAgcmV0dXJuIFZHXyhyZXBsYWNlbWVudF9tYWxsb2NfcHJvY2Vzc19jbWRfbGluZV9vcHRpb24pKGFyZyk7Ci0gICAKKwogICAgcmV0dXJuIFRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL21lbWNoZWNrL21hY19uZWVkcy5jIGIvbWVtY2hlY2svbWFjX25lZWRzLmMKaW5kZXggM2M3YzYxNi4uMjk3NzJhMiAxMDA2NDQKLS0tIGEvbWVtY2hlY2svbWFjX25lZWRzLmMKKysrIGIvbWVtY2hlY2svbWFjX25lZWRzLmMKQEAgLTU2LDM3ICs1NiwxOSBAQAogCiBCb29sIE1BQ18ocHJvY2Vzc19jb21tb25fY21kX2xpbmVfb3B0aW9uKShDaGFyKiBhcmcpCiB7Ci0gICBpZiAgICAgIChWR19DTE9fU1RSRVEoYXJnLCAiLS1wYXJ0aWFsLWxvYWRzLW9rPXllcyIpKQotICAgICAgTUFDXyhjbG9fcGFydGlhbF9sb2Fkc19vaykgPSBUcnVlOwotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tcGFydGlhbC1sb2Fkcy1vaz1ubyIpKQotICAgICAgTUFDXyhjbG9fcGFydGlhbF9sb2Fkc19vaykgPSBGYWxzZTsKLQotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRTigxNSwgYXJnLCAiLS1mcmVlbGlzdC12b2w9IikpIHsKLSAgICAgIE1BQ18oY2xvX2ZyZWVsaXN0X3ZvbCkgPSAoSW50KVZHXyhhdG9sbCkoJmFyZ1sxNV0pOwotICAgICAgaWYgKE1BQ18oY2xvX2ZyZWVsaXN0X3ZvbCkgPCAwKSBNQUNfKGNsb19mcmVlbGlzdF92b2wpID0gMDsKLSAgIH0KLQotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tbGVhay1jaGVjaz15ZXMiKSkKLSAgICAgIE1BQ18oY2xvX2xlYWtfY2hlY2spID0gVHJ1ZTsKLSAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLWxlYWstY2hlY2s9bm8iKSkKLSAgICAgIE1BQ18oY2xvX2xlYWtfY2hlY2spID0gRmFsc2U7Ci0KKyAgICAgICAgVkdfQk9PTF9DTE8oIi0tbGVhay1jaGVjayIsICAgICAgICAgICAgTUFDXyhjbG9fbGVha19jaGVjaykpCisgICBlbHNlIFZHX0JPT0xfQ0xPKCItLXBhcnRpYWwtbG9hZHMtb2siLCAgICAgIE1BQ18oY2xvX3BhcnRpYWxfbG9hZHNfb2spKQorICAgZWxzZSBWR19CT09MX0NMTygiLS1zaG93LXJlYWNoYWJsZSIsICAgICAgICBNQUNfKGNsb19zaG93X3JlYWNoYWJsZSkpCisgICBlbHNlIFZHX0JPT0xfQ0xPKCItLXdvcmthcm91bmQtZ2NjMjk2LWJ1Z3MiLE1BQ18oY2xvX3dvcmthcm91bmRfZ2NjMjk2X2J1Z3MpKQorICAgCisgICBlbHNlIFZHX0JOVU1fQ0xPKCItLWZyZWVsaXN0LXZvbCIsICBNQUNfKGNsb19mcmVlbGlzdF92b2wpLCAwLCAxMDAwMDAwMDAwKQorICAgCiAgICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1sZWFrLXJlc29sdXRpb249bG93IikpCiAgICAgICBNQUNfKGNsb19sZWFrX3Jlc29sdXRpb24pID0gVmdfTG93UmVzOwogICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tbGVhay1yZXNvbHV0aW9uPW1lZCIpKQogICAgICAgTUFDXyhjbG9fbGVha19yZXNvbHV0aW9uKSA9IFZnX01lZFJlczsKICAgIGVsc2UgaWYgKFZHX0NMT19TVFJFUShhcmcsICItLWxlYWstcmVzb2x1dGlvbj1oaWdoIikpCiAgICAgICBNQUNfKGNsb19sZWFrX3Jlc29sdXRpb24pID0gVmdfSGlnaFJlczsKLSAgIAotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tc2hvdy1yZWFjaGFibGU9eWVzIikpCi0gICAgICBNQUNfKGNsb19zaG93X3JlYWNoYWJsZSkgPSBUcnVlOwotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tc2hvdy1yZWFjaGFibGU9bm8iKSkKLSAgICAgIE1BQ18oY2xvX3Nob3dfcmVhY2hhYmxlKSA9IEZhbHNlOwotCi0gICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS13b3JrYXJvdW5kLWdjYzI5Ni1idWdzPXllcyIpKQotICAgICAgTUFDXyhjbG9fd29ya2Fyb3VuZF9nY2MyOTZfYnVncykgPSBUcnVlOwotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0td29ya2Fyb3VuZC1nY2MyOTYtYnVncz1ubyIpKQotICAgICAgTUFDXyhjbG9fd29ya2Fyb3VuZF9nY2MyOTZfYnVncykgPSBGYWxzZTsKIAogICAgZWxzZQogICAgICAgcmV0dXJuIFZHXyhyZXBsYWNlbWVudF9tYWxsb2NfcHJvY2Vzc19jbWRfbGluZV9vcHRpb24pKGFyZyk7CmRpZmYgLS1naXQgYS9tZW1jaGVjay9tY19tYWluLmMgYi9tZW1jaGVjay9tY19tYWluLmMKaW5kZXggNmQ4MDBkZS4uNDQ5N2IzMiAxMDA2NDQKLS0tIGEvbWVtY2hlY2svbWNfbWFpbi5jCisrKyBiL21lbWNoZWNrL21jX21haW4uYwpAQCAtMTYwMSwxNiArMTYwMSw4IEBACiAKIEJvb2wgU0tfKHByb2Nlc3NfY21kX2xpbmVfb3B0aW9uKShDaGFyKiBhcmcpCiB7Ci0gICBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tYXZvaWQtc3RybGVuLWVycm9ycz15ZXMiKSkKLSAgICAgIE1DXyhjbG9fYXZvaWRfc3RybGVuX2Vycm9ycykgPSBUcnVlOwotICAgZWxzZSBpZiAoVkdfQ0xPX1NUUkVRKGFyZywgIi0tYXZvaWQtc3RybGVuLWVycm9ycz1ubyIpKQotICAgICAgTUNfKGNsb19hdm9pZF9zdHJsZW5fZXJyb3JzKSA9IEZhbHNlOwotCi0gICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1jbGVhbnVwPXllcyIpKQotICAgICAgTUNfKGNsb19jbGVhbnVwKSA9IFRydWU7Ci0gICBlbHNlIGlmIChWR19DTE9fU1RSRVEoYXJnLCAiLS1jbGVhbnVwPW5vIikpCi0gICAgICBNQ18oY2xvX2NsZWFudXApID0gRmFsc2U7Ci0KKyAgICAgICAgVkdfQk9PTF9DTE8oIi0tYXZvaWQtc3RybGVuLWVycm9ycyIsIE1DXyhjbG9fYXZvaWRfc3RybGVuX2Vycm9ycykpCisgICBlbHNlIFZHX0JPT0xfQ0xPKCItLWNsZWFudXAiLCAgICAgICAgICAgICBNQ18oY2xvX2NsZWFudXApKQogICAgZWxzZQogICAgICAgcmV0dXJuIE1BQ18ocHJvY2Vzc19jb21tb25fY21kX2xpbmVfb3B0aW9uKShhcmcpOwogCg==