ZGlmZiAtLWdpdCBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKaW5kZXggZTllNjBkOC4uY2ZjODEyNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKQEAgLTgyLDYgKzgyLDEwIEBACiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfV0NIQVJfSAorLyogV29yayBhcm91bmQgYSBjb3NtZXRpYyBidWcgaW4gQlNESSA0Lnggd2NoYXIuaDsgdGhhbmtzIHRvIFRob21hcyBXb3V0ZXJzICovCisjIGlmZGVmIF9IQVZFX0JTREkKKyMgIGluY2x1ZGUgPHRpbWUuaD4KKyMgZW5kaWYKICMgaW5jbHVkZSAid2NoYXIuaCIKICNlbmRpZgogCkBAIC01NjIsNyArNTY2LDkgQEAKICAgICApOwogCiAjaWZkZWYgTVNfV0lOMzIKKwogLyogLS0tIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKIGV4dGVybiBETF9JTVBPUlQoUHlPYmplY3QqKSBQeVVuaWNvZGVfRGVjb2RlTUJDUygKICAgICBjb25zdCBjaGFyICpzdHJpbmcsICAgICAgICAgLyogTUJDUyBlbmNvZGVkIHN0cmluZyAqLwogICAgIGludCBsZW5ndGgsICAgICAgICAgICAgICAgICAvKiBzaXplIG9mIHN0cmluZyAqLwpAQCAtNTc5LDggKzU4NSw4IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKIAotCiAjZW5kaWYgLyogTVNfV0lOMzIgKi8KKwogLyogLS0tIE1ldGhvZHMgJiBTbG90cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgIFRoZXNlIGFyZSBjYXBhYmxlIG9mIGhhbmRsaW5nIFVuaWNvZGUgb2JqZWN0cyBhbmQgc3RyaW5ncyBvbiBpbnB1dApkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9tYmNzLnB5IGIvTGliL2VuY29kaW5ncy9tYmNzLnB5CmluZGV4IGI3ZmFmYmQuLjUxMDM5ODAgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvbWJjcy5weQorKysgYi9MaWIvZW5jb2RpbmdzL21iY3MucHkKQEAgLTM0LDQgKzM0LDMgQEAKIGRlZiBnZXRyZWdlbnRyeSgpOgogCiAgICAgcmV0dXJuIChDb2RlYy5lbmNvZGUsQ29kZWMuZGVjb2RlLFN0cmVhbVJlYWRlcixTdHJlYW1Xcml0ZXIpCi0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L291dHB1dC90ZXN0X3VuaWNvZGUgYi9MaWIvdGVzdC9vdXRwdXQvdGVzdF91bmljb2RlCmluZGV4IDFlYzkwMzEuLjg4ZTg2MjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L291dHB1dC90ZXN0X3VuaWNvZGUKKysrIGIvTGliL3Rlc3Qvb3V0cHV0L3Rlc3RfdW5pY29kZQpAQCAtMSw0ICsxLDUgQEAKIHRlc3RfdW5pY29kZQogVGVzdGluZyBVbmljb2RlIGNvbXBhcmlzb25zLi4uIGRvbmUuCitUZXN0aW5nIFVuaWNvZGUgY29udGFpbnMgbWV0aG9kLi4uIGRvbmUuCiBUZXN0aW5nIFVuaWNvZGUgZm9ybWF0dGluZyBzdHJpbmdzLi4uIGRvbmUuCi1UZXN0aW5nIHVuaWNvZGVkYXRhIG1vZHVsZS4uLiBkb25lLgorVGVzdGluZyBidWlsdGluIGNvZGVjcy4uLiBkb25lLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvb3V0cHV0L3Rlc3RfdW5pY29kZWRhdGEgYi9MaWIvdGVzdC9vdXRwdXQvdGVzdF91bmljb2RlZGF0YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzk1NjJmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3Qvb3V0cHV0L3Rlc3RfdW5pY29kZWRhdGEKQEAgLTAsMCArMSwyIEBACit0ZXN0X3VuaWNvZGVkYXRhCitUZXN0aW5nIHVuaWNvZGVkYXRhIG1vZHVsZS4uLiBkb25lLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CmluZGV4IDNkMTVmMjIuLmY5MDg4N2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKQEAgLTEsNiArMSw1IEBACiAiIiIgVGVzdCBzY3JpcHQgZm9yIHRoZSBVbmljb2RlIGltcGxlbWVudGF0aW9uLgogCi0KIFdyaXR0ZW4gYnkgTWFyYy1BbmRyZSBMZW1idXJnIChtYWxAbGVtYnVyZy5jb20pLgogCiAoYykgQ29weXJpZ2h0IENOUkksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE5PIFdBUlJBTlRZLgpAQCAtMjUwLDUwICsyNDksNiBAQAogYXNzZXJ0IHUiJSh4KXMsICUo5ClzIiAlIHsneCc6dSJhYmMiLCB1J+QnLmVuY29kZSgndXRmLTgnKToiZGVmIn0gPT0gdSdhYmMsIGRlZicKIHByaW50ICdkb25lLicKIAotIyBUZXN0IFVuaWNvZGUgZGF0YWJhc2UgQVBJcwotdHJ5OgotICAgIGltcG9ydCB1bmljb2RlZGF0YQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLWVsc2U6Ci0gICAgcHJpbnQgJ1Rlc3RpbmcgdW5pY29kZWRhdGEgbW9kdWxlLi4uJywKLSAgICAKLSAgICBhc3NlcnQgdW5pY29kZWRhdGEuZGlnaXQodSdBJyxOb25lKSBpcyBOb25lCi0gICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmRpZ2l0KHUnOScpID09IDkKLSAgICBhc3NlcnQgdW5pY29kZWRhdGEuZGlnaXQodSdcdTIxNWInLE5vbmUpIGlzIE5vbmUKLSAgICBhc3NlcnQgdW5pY29kZWRhdGEuZGlnaXQodSdcdTI0NjgnKSA9PSA5Ci0KLSAgICBhc3NlcnQgdW5pY29kZWRhdGEubnVtZXJpYyh1J0EnLE5vbmUpIGlzIE5vbmUKLSAgICBhc3NlcnQgdW5pY29kZWRhdGEubnVtZXJpYyh1JzknKSA9PSA5Ci0gICAgYXNzZXJ0IHVuaWNvZGVkYXRhLm51bWVyaWModSdcdTIxNWInKSA9PSAwLjEyNQotICAgIGFzc2VydCB1bmljb2RlZGF0YS5udW1lcmljKHUnXHUyNDY4JykgPT0gOS4wCi0KLSAgICBhc3NlcnQgdW5pY29kZWRhdGEuZGVjaW1hbCh1J0EnLE5vbmUpIGlzIE5vbmUKLSAgICBhc3NlcnQgdW5pY29kZWRhdGEuZGVjaW1hbCh1JzknKSA9PSA5Ci0gICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmRlY2ltYWwodSdcdTIxNWInLE5vbmUpIGlzIE5vbmUKLSAgICBhc3NlcnQgdW5pY29kZWRhdGEuZGVjaW1hbCh1J1x1MjQ2OCcsTm9uZSkgaXMgTm9uZQotCi0gICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmNhdGVnb3J5KHUnXHVGRkZFJykgPT0gJ0NuJwotICAgIGFzc2VydCB1bmljb2RlZGF0YS5jYXRlZ29yeSh1J2EnKSA9PSAnTGwnCi0gICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmNhdGVnb3J5KHUnQScpID09ICdMdScKLQotICAgIGFzc2VydCB1bmljb2RlZGF0YS5iaWRpcmVjdGlvbmFsKHUnXHVGRkZFJykgPT0gJycKLSAgICBhc3NlcnQgdW5pY29kZWRhdGEuYmlkaXJlY3Rpb25hbCh1JyAnKSA9PSAnV1MnCi0gICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmJpZGlyZWN0aW9uYWwodSdBJykgPT0gJ0wnCi0KLSAgICBhc3NlcnQgdW5pY29kZWRhdGEuZGVjb21wb3NpdGlvbih1J1x1RkZGRScpID09ICcnCi0gICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmRlY29tcG9zaXRpb24odSdcdTAwYmMnKSA9PSAnPGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzNCcKLQotICAgIGFzc2VydCB1bmljb2RlZGF0YS5taXJyb3JlZCh1J1x1RkZGRScpID09IDAKLSAgICBhc3NlcnQgdW5pY29kZWRhdGEubWlycm9yZWQodSdhJykgPT0gMAotICAgIGFzc2VydCB1bmljb2RlZGF0YS5taXJyb3JlZCh1J1x1MjIwMScpID09IDEKLQotICAgIGFzc2VydCB1bmljb2RlZGF0YS5jb21iaW5pbmcodSdcdUZGRkUnKSA9PSAwCi0gICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmNvbWJpbmluZyh1J2EnKSA9PSAwCi0gICAgYXNzZXJ0IHVuaWNvZGVkYXRhLmNvbWJpbmluZyh1J1x1MjBlMScpID09IDIzMAotICAgIAotICAgIHByaW50ICdkb25lLicKLQogIyBUZXN0IGJ1aWx0aW4gY29kZWNzCiBwcmludCAnVGVzdGluZyBidWlsdGluIGNvZGVjcy4uLicsCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZGQwNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CkBAIC0wLDAgKzEsNTAgQEAKKyIiIiBUZXN0IHNjcmlwdCBmb3IgdGhlIHVuaWNvZGVkYXRhIG1vZHVsZS4KKworV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCisKKyhjKSBDb3B5cmlnaHQgQ05SSSwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gTk8gV0FSUkFOVFkuCisKKyIiIiMiCitmcm9tIHRlc3Rfc3VwcG9ydCBpbXBvcnQgdmVyYm9zZQoraW1wb3J0IHN5cworCisjIFRlc3QgVW5pY29kZSBkYXRhYmFzZSBBUElzCitpbXBvcnQgdW5pY29kZWRhdGEKKworcHJpbnQgJ1Rlc3RpbmcgdW5pY29kZWRhdGEgbW9kdWxlLi4uJywKKworYXNzZXJ0IHVuaWNvZGVkYXRhLmRpZ2l0KHUnQScsTm9uZSkgaXMgTm9uZQorYXNzZXJ0IHVuaWNvZGVkYXRhLmRpZ2l0KHUnOScpID09IDkKK2Fzc2VydCB1bmljb2RlZGF0YS5kaWdpdCh1J1x1MjE1YicsTm9uZSkgaXMgTm9uZQorYXNzZXJ0IHVuaWNvZGVkYXRhLmRpZ2l0KHUnXHUyNDY4JykgPT0gOQorCithc3NlcnQgdW5pY29kZWRhdGEubnVtZXJpYyh1J0EnLE5vbmUpIGlzIE5vbmUKK2Fzc2VydCB1bmljb2RlZGF0YS5udW1lcmljKHUnOScpID09IDkKK2Fzc2VydCB1bmljb2RlZGF0YS5udW1lcmljKHUnXHUyMTViJykgPT0gMC4xMjUKK2Fzc2VydCB1bmljb2RlZGF0YS5udW1lcmljKHUnXHUyNDY4JykgPT0gOS4wCisKK2Fzc2VydCB1bmljb2RlZGF0YS5kZWNpbWFsKHUnQScsTm9uZSkgaXMgTm9uZQorYXNzZXJ0IHVuaWNvZGVkYXRhLmRlY2ltYWwodSc5JykgPT0gOQorYXNzZXJ0IHVuaWNvZGVkYXRhLmRlY2ltYWwodSdcdTIxNWInLE5vbmUpIGlzIE5vbmUKK2Fzc2VydCB1bmljb2RlZGF0YS5kZWNpbWFsKHUnXHUyNDY4JyxOb25lKSBpcyBOb25lCisKK2Fzc2VydCB1bmljb2RlZGF0YS5jYXRlZ29yeSh1J1x1RkZGRScpID09ICdDbicKK2Fzc2VydCB1bmljb2RlZGF0YS5jYXRlZ29yeSh1J2EnKSA9PSAnTGwnCithc3NlcnQgdW5pY29kZWRhdGEuY2F0ZWdvcnkodSdBJykgPT0gJ0x1JworCithc3NlcnQgdW5pY29kZWRhdGEuYmlkaXJlY3Rpb25hbCh1J1x1RkZGRScpID09ICcnCithc3NlcnQgdW5pY29kZWRhdGEuYmlkaXJlY3Rpb25hbCh1JyAnKSA9PSAnV1MnCithc3NlcnQgdW5pY29kZWRhdGEuYmlkaXJlY3Rpb25hbCh1J0EnKSA9PSAnTCcKKworYXNzZXJ0IHVuaWNvZGVkYXRhLmRlY29tcG9zaXRpb24odSdcdUZGRkUnKSA9PSAnJworYXNzZXJ0IHVuaWNvZGVkYXRhLmRlY29tcG9zaXRpb24odSdcdTAwYmMnKSA9PSAnPGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzNCcKKworYXNzZXJ0IHVuaWNvZGVkYXRhLm1pcnJvcmVkKHUnXHVGRkZFJykgPT0gMAorYXNzZXJ0IHVuaWNvZGVkYXRhLm1pcnJvcmVkKHUnYScpID09IDAKK2Fzc2VydCB1bmljb2RlZGF0YS5taXJyb3JlZCh1J1x1MjIwMScpID09IDEKKworYXNzZXJ0IHVuaWNvZGVkYXRhLmNvbWJpbmluZyh1J1x1RkZGRScpID09IDAKK2Fzc2VydCB1bmljb2RlZGF0YS5jb21iaW5pbmcodSdhJykgPT0gMAorYXNzZXJ0IHVuaWNvZGVkYXRhLmNvbWJpbmluZyh1J1x1MjBlMScpID09IDIzMAorCitwcmludCAnZG9uZS4nCmRpZmYgLS1naXQgYS9NaXNjL3VuaWNvZGUudHh0IGIvTWlzYy91bmljb2RlLnR4dAppbmRleCBmYzFmMmM1Li5jZTc0YzA1IDEwMDY0NAotLS0gYS9NaXNjL3VuaWNvZGUudHh0CisrKyBiL01pc2MvdW5pY29kZS50eHQKQEAgLTc0MCw4ICs3NDAsOCBAQAogCU9uIG91dHB1dCwgYSBidWZmZXIgb2YgdGhlIG5lZWRlZCBzaXplIGlzIGFsbG9jYXRlZCBhbmQKIAlyZXR1cm5lZCB0aHJvdWdoICpidWZmZXIgYXMgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KIAlUaGUgZW5jb2RlZCBtYXkgbm90IGNvbnRhaW4gZW1iZWRkZWQgTlVMTCBjaGFyYWN0ZXJzLgotCVRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWUoKWluZyB0aGUgYWxsb2NhdGVkICpidWZmZXIKLQlhZnRlciB1c2FnZS4KKwlUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIFB5TWVtX0ZyZWUoKQorCXRvIGZyZWUgdGhlIGFsbG9jYXRlZCAqYnVmZmVyIGFmdGVyIHVzYWdlLgogCiAgICJlcyMiOgogCVRha2VzIHRocmVlIHBhcmFtZXRlcnM6IGVuY29kaW5nIChjb25zdCBjaGFyICopLApAQCAtNzU1LDggKzc1NSw5IEBACiAKIAlJZiAqYnVmZmVyIGlzIE5VTEwsIGEgYnVmZmVyIG9mIHRoZSBuZWVkZWQgc2l6ZSBpcwogCWFsbG9jYXRlZCBhbmQgb3V0cHV0IGNvcGllZCBpbnRvIGl0LiAqYnVmZmVyIGlzIHRoZW4KLQl1cGRhdGVkIHRvIHBvaW50IHRvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IGFyZWEuIFRoZSBjYWxsZXIKLQlpcyByZXNwb25zaWJsZSBmb3IgZnJlZSgpaW5nICpidWZmZXIgYWZ0ZXIgdXNhZ2UuCisJdXBkYXRlZCB0byBwb2ludCB0byB0aGUgYWxsb2NhdGVkIG1lbW9yeSBhcmVhLgorCVRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgUHlNZW1fRnJlZSgpCisJdG8gZnJlZSB0aGUgYWxsb2NhdGVkICpidWZmZXIgYWZ0ZXIgdXNhZ2UuCiAKIAlJbiBib3RoIGNhc2VzICpidWZmZXJfbGVuIGlzIHVwZGF0ZWQgdG8gdGhlIG51bWJlciBvZgogCWNoYXJhY3RlcnMgd3JpdHRlbiAoZXhjbHVkaW5nIHRoZSB0cmFpbGluZyBOVUxMLWJ5dGUpLgpAQCAtNzg0LDcgKzc4NSw3IEBACiAJICAgIHJldHVybiBOVUxMOwogCX0KIAlzdHIgPSBQeVN0cmluZ19Gcm9tU3RyaW5nQW5kU2l6ZShidWZmZXIsIGJ1ZmZlcl9sZW4pOwotCWZyZWUoYnVmZmVyKTsKKwlQeU1lbV9GcmVlKGJ1ZmZlcik7CiAJcmV0dXJuIHN0cjsKICAgICB9CiAKQEAgLTgwNyw3ICs4MDgsNyBAQAogCSAgICByZXR1cm4gTlVMTDsKIAl9CiAJc3RyID0gUHlTdHJpbmdfRnJvbVN0cmluZyhidWZmZXIpOwotCWZyZWUoYnVmZmVyKTsKKwlQeU1lbV9GcmVlKGJ1ZmZlcik7CiAJcmV0dXJuIHN0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jIGIvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKaW5kZXggNmM4YTJkNC4uNGYzNjhmOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKQEAgLTI4Niw2ICsyODYsMjYgQEAKIAkJICAgICAgIHNpemUpOwogfQogCisjaWZkZWYgTVNfV0lOMzIKKworc3RhdGljIFB5T2JqZWN0ICoKK21iY3NfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAorCSAgICBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjb25zdCBjaGFyICpkYXRhOworICAgIGludCBzaXplOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ0I3x6Om1iY3NfZGVjb2RlIiwKKwkJCSAgJmRhdGEsICZzaXplLCAmZXJyb3JzKSkKKwlyZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfRGVjb2RlTUJDUyhkYXRhLCBzaXplLCBlcnJvcnMpLAorCQkgICAgICAgc2l6ZSk7Cit9CisKKyNlbmRpZiAvKiBNU19XSU4zMiAqLworCiAvKiAtLS0gRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ5MSw2ICs1MTEsMjggQEAKIAkJICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKIH0KIAorI2lmZGVmIE1TX1dJTjMyCisKK3N0YXRpYyBQeU9iamVjdCAqCittYmNzX2VuY29kZShQeU9iamVjdCAqc2VsZiwKKwkgICAgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6bWJjc19lbmNvZGUiLAorCQkJICAmc3RyLCAmZXJyb3JzKSkKKwlyZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlTUJDUygKKwkJCSAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLCAKKwkJCSAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKKwkJCSAgICAgICBlcnJvcnMpLAorCQkgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworfQorCisjZW5kaWYgLyogTVNfV0lOMzIgKi8KKwogLyogLS0tIE1vZHVsZSBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBfY29kZWNzX2Z1bmN0aW9uc1tdID0gewpAQCAtNTE5LDYgKzU2MSwxMCBAQAogICAgIHsiY2hhcm1hcF9kZWNvZGUiLCAJCWNoYXJtYXBfZGVjb2RlLAkJCTF9LAogICAgIHsicmVhZGJ1ZmZlcl9lbmNvZGUiLAlyZWFkYnVmZmVyX2VuY29kZSwJCTF9LAogICAgIHsiY2hhcmJ1ZmZlcl9lbmNvZGUiLAljaGFyYnVmZmVyX2VuY29kZSwJCTF9LAorI2lmZGVmIE1TX1dJTjMyCisgICAgeyJtYmNzX2VuY29kZSIsIAkJbWJjc19lbmNvZGUsCQkJMX0sCisgICAgeyJtYmNzX2RlY29kZSIsIAkJbWJjc19kZWNvZGUsCQkJMX0sCisjZW5kaWYKICAgICB7TlVMTCwgTlVMTH0JCS8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9QeXRob24vZ2V0YXJncy5jIGIvUHl0aG9uL2dldGFyZ3MuYwppbmRleCAyN2E2OWQwLi45MWZlMjY3IDEwMDY0NAotLS0gYS9QeXRob24vZ2V0YXJncy5jCisrKyBiL1B5dGhvbi9nZXRhcmdzLmMKQEAgLTcwNCw3ICs3MDQsNyBAQAogCQkJCSAgIHRoZSBkYXRhIGNvcGllZCBpbnRvIGl0OyAqYnVmZmVyIGlzCiAJCQkJICAgdXBkYXRlZCB0byBwb2ludCB0byB0aGUgbmV3IGJ1ZmZlcjsKIAkJCQkgICB0aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvcgotCQkJCSAgIGZyZWUoKWluZyBpdCBhZnRlciB1c2FnZQorCQkJCSAgIFB5TWVtX0ZyZWUoKWluZyBpdCBhZnRlciB1c2FnZQogCiAJCQkJICAgLSBpZiAqYnVmZmVyIGlzIG5vdCBOVUxMLCB0aGUgZGF0YQogCQkJCSAgIGlzIGNvcGllZCB0byAqYnVmZmVyOyAqYnVmZmVyX2xlbgpAQCAtNzUyLDcgKzc1Miw3IEBACiAJCQkJICAgaXMgYWxsb2NhdGVkIGFuZCB0aGUgZGF0YSBjb3BpZWQKIAkJCQkgICBpbnRvIGl0OyAqYnVmZmVyIGlzIHVwZGF0ZWQgdG8KIAkJCQkgICBwb2ludCB0byB0aGUgbmV3IGJ1ZmZlcjsgdGhlIGNhbGxlcgotCQkJCSAgIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlKClpbmcgaXQKKwkJCQkgICBpcyByZXNwb25zaWJsZSBmb3IgUHlNZW1fRnJlZSgpaW5nIGl0CiAJCQkJICAgYWZ0ZXIgdXNhZ2UKIAogCQkJCSAqLwo=